1 前言
平时如果想要替换包名一般是在AS中右键Rename进行操作。但是如果遇到一份代码希望导出几种不同的包名(不是ApplicationId),并且代码还会持续更新,这时候就需要使用脚本在打包时自动导出成不同包名的apk。
有的人会说直接可以在build.gradle里面的productFlavors里面设置,然后用placeHolder填充包名就行啦。 注意,这时候就要区分ApplicationId和PackageName了。
ApplicationId,是在手机中标识唯一应用的id。(看起来就是包名)
defaultConfig {
applicationId "com.tsy.xxx"
minSdkVersion 9
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true // Enabling multidex support.
}
PackageName,AndroidManifest里面标明的package和每个java文件里面的package头的包名。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tsy.xxx">
package com.tsy.xxx.xxx;
import xxx
public class MainActivity {
...
}
平时使用productFlavors+PlaceHolder导出不同包只能导出ApplicationId不同的包,的确可以导出2个同时在手机安装的包,但是其实package并没有改变。当遇到以下情况时就会出现问题。