2017-10-05 132 views
0

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

儿童应用阿:

<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的两个值。我尝试向其中一个子应用程序添加'tools:replace = android:value',但编译的应用程序只运行一个子项。确切的错误如下:

Error: Attribute meta-data#[email protected] 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

在AndroidManifest.xml中

这个错误在这两个文件引起

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

prensent添加 'tools:replace="android:value"' 以元素