2014-09-29 60 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"并在其中插入版本代码和版本名称