1. 更改内部的包名

直接选中app/src/main/java下的自定义包名,有可能refactor后还有需要手动调整的地方,编译不过时可以定位。

android 马甲跳转 安卓马甲包_java

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,让它每次自动执行

android 马甲跳转 安卓马甲包_开发语言_02

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大部分时候不会告诉你明确的原因,而是让你自己找原因,如下是常见的拒绝通知。

android 马甲跳转 安卓马甲包_包名_03

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中创建应用的配置-密钥散列