需求
- 正式应用和测试用应用需要同时安装在同一台手机上
- 正式和测试拥有不同的签名、名称、图标。。。等等
- 其他 例如 极光 配置不同账号,测试和正式的分开(吐槽也止呕极光才需要配置不同applicationId来区分,就这么而)
配置前知识
-
应用的 包名 和 applicationId 的区别
一般情况下我们不设置 applicationId的时候,会默认 applicationId和包名相等-
那么他们之间到底有什么区别呢?
- 包名: 文件所在的具体目录,
- applicationId : 我们可以简单的认为是进程的名字, 那么我们就知道,测试和正式其实配置
不同的applicationId, 那就相当于是不同的app所以可以同时安装在 同一款手机上
-
开始配置
-
思考
清单文件如何更? gradle 如何更改? -
清单文件里面的app lable 我们需要占位符 占位 然后再 gradle 里面配置 测试和正式的 不同的名字
-
清单文件的里面的占位如何在gradle进行配置呢 当然是 根据 buildTypes的 manifestPlaceholders
从名字就可以看出是清单文件的占位配置,好了有了这些东西那么我们就可以开始进行配置了
清单文件 占位符
gradle配置
//多渠道打包
productFlavors {
pro {
applicationId = "正式版包命(进程名)"
}
free {
applicationId = "测试版包名(进程名)"
}
}
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
lintOptions {
disable 'MissingTranslation'
checkReleaseBuilds false
abortOnError false
}
------------------------------------可以看极光配置时的占位,我们一样就可以了 ------------------------
极光在清单文件里面有很多地方需要配置 JPUSH_PKGNAME 是记得更改 每个地方都用占位来替代
manifestPlaceholders = [
JPUSH_PKGNAME: "*****************",// //正式 applicationId
JPUSH_APPKEY : "*****************", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
APP_NAME:"良医帮" // 还记得吗在上面图片中的占位 在这里进行配置 就有了不同的名字,其他需求同辞
]
}
debug {
signingConfig signingConfigs.release
lintOptions {
disable 'MissingTranslation'
checkReleaseBuilds false
abortOnError false
}
manifestPlaceholders = [
JPUSH_PKGNAME: "*****************.test", // 测试 applicationId
JPUSH_APPKEY : "*****************", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
APP_NAME:"良医帮测试"
]
}
}
如何查看我们是否更改成功
扫描二维码关注公众号,回复:
3422062 查看本文章
- 运行到手机上,查看进程
- 点击build目录下的app包 然后打开清单文件 查看里面刚才的占位符 是否都更改过来了