我试图在访问相机之前询问用户权限。我为此使用了离子诊断插件。在添加诊断插件之前,应用程序在Phonegap构建上构建良好。添加插件后,我通过Phonegap构建获得以下错误:
失败:构建因异常而失败。
清单合并失败:来自[com.android.support:support-v4:26.0.0-alpha1] AndroidManifest.xml的属性meta-data#android.support.VERSION@value value =(26.0.0-alpha1): 27:9-38 也出现在[com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31 value =(25.3.1)。 建议:在AndroidManifest.xml中添加'tools:replace =“android:value”'到元素:25:5-27:41覆盖
我使用以下内容安装了插件:
$ ionic cordova plugin add cordova.plugins.diagnostic
$ npm install --save @ionic-native/diagnostic
在我的config.xml中,我有以下内容:
<preference name="android-minSdkVersion" value="16" />
<preference name="android-targetSdkVersion" value="23" />
<plugin name="cordova.plugins.diagnostic" spec="^3.6.5"/>
有没有人知道我在这里做错了什么?
答案 0 :(得分:5)
我认为该错误与诊断插件无关。几天前,我更新了我的支持存储库,同样的错误开始出现在我的最后。根据{{3}},问题是因为:
某些库依赖于版本&#34; X或更新版本&#34; Android支持 库,因此Gradle依赖性解析抓住了最新的东西 可用忽略你实际上有一个指定的精确版本 你的依赖阻止。
这不是你想要的。您希望所有支持库都相同 版本和主要版本必须匹配编译SDK版本。
因此,为了解决问题,请转到位于build.gradle
的{{1}}文件,并在文件末尾添加以下内容:
projectName/platforms/android/build.gradle
您可以将版本替换为您正在使用的版本,但鉴于您发布的错误,configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.1'
}
}
}
}
似乎是要使用的正确版本。
答案 1 :(得分:2)
基于@sebaferreras的答案,我创建了一个包装Gradle配置的插件,并允许它动态地拉入Cordova项目(如果你为你的构建使用CI,这真的很有帮助):{ {3}}
基本上,只需将其添加到您的项目中,它将强制任何指定的支持库版本到最新的主要版本(当前v25
):
cordova plugin add cordova-android-support-gradle-release