2014-09-29 87 views
2

我有一個應用程序與幾個建設口味。我的主要AndroidManifest.xml中的部分看起來像這樣:屬性與Gradle清單合併丟失

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="some.test.app" 
    android:installLocation="auto" 
    android:versionCode="36" 
    android:versionName="v1.0.3" > 

    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="17" /> 
    <uses-feature android:name="android.hardware.usb.host" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:name=".MyApp" 
     android:icon="@drawable/app_logo" 
     android:label="@string/app_name" > 
     <!-- possible values: dev, demo, prod --> 
     <meta-data 
      android:name="app_build_type" 
      android:value="dev" /> 
    </application> 
</manifest> 

帶香料的具體樣本(demo)清單如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="some.test.app"> 

    <application> 
     <meta-data 
      android:name="app_build_type" 
      android:value="demo" 
      tools:replace="value"/> 
    </application> 
</manifest> 

而且gradle這個合併的結果是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="some.test.app" 
    android:versionCode="36" > 

    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="17" /> 
    <uses-feature android:name="android.hardware.usb.host" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:name="some.test.app.MyApp" 
     android:icon="@drawable/app_logo" 
     android:label="@string/app_name" > 
     <meta-data 
      android:name="app_build_type" 
      android:value="demo" /> 
    </application> 
</manifest> 

正如您所看到的,除manifest.installLocationmanifest.versionName之外,大部分節點和屬性都被正確合併,它會消失而manifest.versionCode仍然存在。這是什麼原因,我該如何解決這個問題?

回答

0

我有一個UI應用程序和服務,同樣的問題。當構建過程自動進行合併時,它會維護版本1.0,而不管這兩個AndroidManifest.xml是否具有正確的版本。我的解決方案是在相應的build.gradle文件中添加以下兩個字段:

defaultConfig { 
    minSdkVersion 9 
    targetSdkVersion 22 
    versionCode 664 
    versionName "664" 
} 

其中664是您的版本。我希望這有幫助!

0

轉到菜單"Build">>"Edit Flavors"選項卡"Flavors"並在其中插入版本代碼和版本名稱