1. 更改内部的包名
直接选中app/src/main/java下的自定义包名,有可能refactor后还有需要手动调整的地方,编译不过时可以定位。
2. 打包时修改Manifest文件、保证每个包的manifest都不一样
备选工具:https://github.com/king-ma1993/AndroidManifestAdder
build.gradle(app)最下方添加,要插入的各组件数量
manifestConfig {
enable = true
activityCount = 20
providerCount = 0
serviceCount = 10
receiverCount = 10
}
在打包前顺序执行一次build和publich, 也可以自己配置打包的gradle,让它每次自动执行
3. 混淆文件定期更换
在proguard-rules.pro文件中底部指定混淆字典文件
-obfuscationdictionary proguard-1il.txt
-classobfuscationdictionary bproguard-1il.txt
-packageobfuscationdictionary proguard-1il.txt
如果你不想自己生成混淆字典,也可以下载一些大家常用的比较优秀的过审字典 AndroidProguard六种混淆字典
4. 每一个包的APP名和applicationId必须更换
build.gradle(app)
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.aaa.bbb.ccc.android" //包名必须修改
minSdkVersion 21
targetSdkVersion 26
versionCode currentVersionCode
versionName "1.0.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
resConfigs "en"
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a'
}
}
同时修改Manifest中的应用名称
5. APP的图标和启动图的更换
保证每一个包的图标和图片资源是不一样的。
6. 每一个包的URL地址必须不一样
需要注册多个占位域名做为马甲包的过审域名,不能使用同是一个一级域名来做。否则大几率过不了审核,google大部分时候不会告诉你明确的原因,而是让你自己找原因,如下是常见的拒绝通知。
7.Application 中插入占位方法(可选)
当同一种包发布的数量超过 10个时,每个包做一个不同的方法,在Application类的oncreat 中调用一下,不同包切换一下调用的位置与时机,可以变化 dex 的字节码,防止重复检测。
8. 上传多个包时用的机器一定要独立的虚拟机
如果你用同一个机器,登陆多个googleplay账号,那后边的基本都不能通过审核。
9. google-service.json文件
更改了包名后,需要生成新的json文件:https://console.firebase.google.com/project
访问这个网址创建你的项目时,也要要用虚拟机,可以跟上方googleplay账号使用相同的虚拟机
创建项目,输入新的名包后,就可以直接下载文件
10. facebook需要为多个包创建多个项目
如果你集成了facebook,需要看这里,如果不需要可以略过
安卓 jks文件生成并提取MD5、SHA1、SHA256Facebook中创建应用的配置-密钥散列