我正在使用Gradle with Product flavors,我为每个设置了不同的包名.
productFlavors {
appone {
packageName "com.dg.app1"
}
apptwo {
packageName "com.dg.app2"
}
appthree {
packageName "com.dg.app3"
}
appfour {
packageName "com.dg.app4"
}
}
Run Code Online (Sandbox Code Playgroud)
我需要能够在清单中替换每个相应应用程序的包名称.
我的清单有这个:
<receiver android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.dg.example" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
所以我需要为每个app flavor的包名替换com.dg.example.做这个的最好方式是什么?
kco*_*ock 69
Gradle Plugin v0.12及更高版本:
用${applicationId}而不是${packageName}.
Gradle Plugin v0.11及更高版本:
从v0.11开始,您不再需要指定不使用旧的清单合并.
Gradle Plugin v0.10及更高版本:
假设您使用的是0.10或更高版本,现在官方支持:
buildscript {
repositories {
mavenCentral()
}
dependencies {
// Make sure this is at least 0.10.+
classpath 'com.android.tools.build:gradle:0.10.+'
}
}
Run Code Online (Sandbox Code Playgroud)
从v0.10开始,你还必须手动启用新的清单合并,尽管我希望每当新的合并成为默认值时,该要求就会在一两个版本中消失:
android {
useOldManifestMerger false
}
Run Code Online (Sandbox Code Playgroud)
然后,只需使用通常硬编码包名称的${packageName}任何地方AndroidManifest.xml.例如:
<category android:name="my.package.name"/>
Run Code Online (Sandbox Code Playgroud)
会成为
<category android:name="${packageName}"/>
Gradle Plugin v0.9及以下版本:
因此,参考这篇文章,似乎尚未通过Gradle正式支持.一个简单的解决方法如下:
<category android:name="my.package.name"/>变为<category android:name="_PACKAGENAME_"/>build.gradle的下android范围:applicationVariants.all { variant ->
// After processing the manifest, replace all instances of your tag
// with the variant's actual package name.
variant.processManifest << {
def manifestOutFile = variant.processManifest.manifestOutputFile
def newFileContents = manifestOutFile.getText('UTF-8').replace("_PACKAGENAME_", variant.packageName)
manifestOutFile.write(newFileContents, 'UTF-8')
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20050 次 |
| 最近记录: |