将“排除模块”规则添加到 plugin.xml 中的 Cordova 条目
Add an “exclude module” rule to an entry in plugin.xml for Cordova
我在尝试构建我的 phonegap 项目时遇到了这个错误
据我所知,这个错误是因为项目中有一个库被设置了两次。
我检查了我所有的库,我发现只有一个库导致了这个(在我的一个插件中找到)
<framework src="com.android.support:design:23.4.0"/>
问题是,我可以在 plugin.xml 文件中设置排除模块规则吗?
我想我需要排除 com.android.supportv4
最后我解决了它,我不得不在我的插件中创建一个 build-extras.gradle 文件,其中包含以下行:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
all*.exclude group: 'com.android.support', module: 'support-annotations'}
然后这个 gradle 文件需要导入到 plugin.xml 文件中使用:
<framework src="build-extras.gradle" custom="true" type="gradleReference" />
我强烈推荐 https://github.com/dpa99c/cordova-android-support-gradle-release,它是 "plugin to align various versions of the Android Support libraries specified by other plugins"。
他们用一个clever gradle dependency resolution来解决问题:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group in ['com.android.support'] && !(details.requested.name in ['multidex', 'multidex-instrumentation'])) { details.useVersion "26.1.0"}
}
}
这避免了移除 all Android 支持库的问题,这会导致插件缺少 dependencies/failing gradle 同步。
我在尝试构建我的 phonegap 项目时遇到了这个错误
<framework src="com.android.support:design:23.4.0"/>
问题是,我可以在 plugin.xml 文件中设置排除模块规则吗? 我想我需要排除 com.android.supportv4
最后我解决了它,我不得不在我的插件中创建一个 build-extras.gradle 文件,其中包含以下行:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
all*.exclude group: 'com.android.support', module: 'support-annotations'}
然后这个 gradle 文件需要导入到 plugin.xml 文件中使用:
<framework src="build-extras.gradle" custom="true" type="gradleReference" />
我强烈推荐 https://github.com/dpa99c/cordova-android-support-gradle-release,它是 "plugin to align various versions of the Android Support libraries specified by other plugins"。
他们用一个clever gradle dependency resolution来解决问题:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group in ['com.android.support'] && !(details.requested.name in ['multidex', 'multidex-instrumentation'])) { details.useVersion "26.1.0"}
}
}
这避免了移除 all Android 支持库的问题,这会导致插件缺少 dependencies/failing gradle 同步。