Android Manifest合并失败

时间:2017-10-05 22:35:26

标签: java android android-manifest

我有两个单独工作的Android项目(A和B)。我创建了一个带有两个按钮的父项目,这两个按钮调用每个子项目(我已将子项目作为库包含在内)。最初我将一个子项目添加到我的父项目中,它工作正常。但是,在添加第二个子项目时,我得到一个android清单合并错误。每个子应用程序都需要一个SDK密钥才能在启动时注册。这在清单中定义如下:

儿童应用A:

<application
    android:name=".DemoApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:replace="android:icon">

    <!-- DJI SDK -->
    <uses-library android:name="com.android.future.usb.accessory" />

    <meta-data
        android:name="com.dji.sdk.API_KEY"
        android:value="f70d587986XXXXXXXXXX"/>

儿童应用程序B:

<application
    android:name=".DJIDemoApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <!-- DJI SDK -->

    <uses-library android:name="com.android.future.usb.accessory" />

    <meta-data
        android:name="com.dji.sdk.API_KEY"
        android:value="2cde5eaabXXXXXXXXXXXX" /> //TODO: Enter your app key here

android清单提供的错误似乎与元数据部分中的API_KEY值有关。我的猜测是,在清单合并时,它不知道要使用哪个API_KEY值。但是,我需要同时注册应用A和B两个值。我尝试添加&#39;工具:replace = android:value&#39;其中一个子应用程序,但编译的应用程序只运行一个子应用程序。确切的错误如下:

Error: Attribute meta-data#com.dji.sdk.API_KEY@value value=(f70d587986XXXXXXXXXX) from AndroidManifest.xml:34:55-95 is also present at AndroidManifest.xml:34:55-95 value=(2cde5eaabXXXXXXXXXXXXX). Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:34:9-97 to override. app main manifest (this file), line 33

我是Android新手,不知道如何解决这个问题。任何有关这方面的帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

在AndroidManifest.xml

中向元素添加“tools:replace="android:value"

引起的此错误
<meta-data
        android:name="com.dji.sdk.API_KEY"
        android:value="2cde5eaabXXXXXXXXXXXX" />

在两个文件中都显示