【问题标题】:Ionic diagnostic plugin error when building in Phonegap build在 Phonegap 构建中构建时出现离子诊断插件错误
【发布时间】:2017-06-15 06:44:48
【问题描述】:

我试图在访问他们的相机之前征求用户的许可。我为此使用离子诊断插件。在添加诊断插件之前,该应用程序在 Phonegap 构建上构建良好。添加插件后,我通过 Phonegap 构建收到以下错误:

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务“:processDebugManifest”执行失败。

    清单合并失败:属性 meta-data#android.support.VERSION@value value=(26.0.0-alpha1) from [com.android.support:support-v4:26.0.0-alpha1] AndroidManifest.xml: 27:9-38 也存在于 [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31 value=(25.3.1)。 建议:将 'tools:replace="android:value"' 添加到 AndroidManifest.xml: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"/>

有人知道我在这里做错了什么吗?

【问题讨论】:

    标签: android cordova ionic2 cordova-plugins ionic3


    【解决方案1】:

    我认为该错误与诊断插件无关。几天前,我更新了我的支持存储库,同样的错误开始出现在我的身上。根据this SO answer,问题是因为:

    某些库依赖于 Android 支持的“X 或更新”版本 库,所以 Gradle 依赖解析可以抓取最新的 可用忽略你实际上有一个精确的版本指定 你的依赖块。

    这不是你想要的。您希望所有支持库都具有相同的 版本和主版本必须匹配编译SDK版本。

    因此,为了解决它,请转到位于projectName/platforms/android/build.gradlebuild.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'
                }
            }
        }
    }
    

    您可以将版本替换为您正在使用的任何版本,但鉴于您发布的错误,25.3.1 似乎是要使用的正确版本。

    【讨论】:

    • 我的 ionic 项目中没有 build.gradle 文件。是否有可以将此代码添加到的等效文件?
    • 您检查过/platforms/android/ 文件夹吗?
    • 我添加了android平台,然后我可以看到/platforms/android/build.gradle。我将代码添加到最后,但仍然产生相同的错误。
    • 真的吗?所以你在构建应用程序时仍然遇到这个错误?
    【解决方案2】:

    根据@sebaferreras 的回答,我创建了一个插件,它封装了 Gradle 配置并允许将其动态拉入 Cordova 项目(如果您使用 CI 进行构建,这真的很有帮助):cordova-android-support-gradle-release .

    基本上,只需将其添加到您的项目中,它就会强制任何指定的支持库版本到最新的主要版本(当前为v25):

    cordova plugin add cordova-android-support-gradle-release
    

    【讨论】:

    • 添加了插件。但不幸的是仍然得到同样的错误。添加后我似乎在config.xml文件中没有看到gradle-release插件。这是预期的吗?
    • 本地构建还是Phonegap构建?
    • I don't seem to see the gradle-release plugin in the config.xml file after adding. Is this expected? 取决于你的cordova 版本:v7 自动保存; --save。但它就像任何其他插件一样。
    • 是的,这正是问题所在——他们指定了不同版本的 Android 支持库。因此需要gradle-release 插件。
    • 太棒了!要是我没花这么长时间才找到这个就好了。谢谢戴夫和@sebaferreras
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多