本篇不保证百分之百成功,但至少在我们内部,此操作是成功上架到Google Play 并保持超半年还在的。
接下来我们将详细讨论具体的行动计划
1. App Name
建议选择一个与之前不同的名称。建议在相关网站上搜索该名称,查看是否存在其他同名情况,特别是对方已经进行商标保护的情况下,更应避免使用相同的名称。
参考:https://apkcombo.com/zh/
需VPN
2. 包名
同样地,选择一个与之前不同的选项。
同时,举例来说,假设公司名称简称为SL,建议在包名中避免使用SL。
例如:不建议使用类似于 eg:com.sl.appname 这样的命名方式。
3. Logo
设计一个新的即可
4. 签名
生成一个全新的jks文件,并且将密码和名称进行更改,确保与之前的文件完全无关。
比如在公司名称简称的选择上,建议避免使用sl这个组合。
5. 域名
购买一个全新的域名,每个应用都使用独立的域名。
6. 项目结构目录
对结构目录进行调整,包括名称和嵌套顺序等方面的修改。
7. 文件名(类名、布局文件名、资源文件名)
对所有的类名、布局文件名和资源文件名进行修改。
8. 如果有相应的依赖Module
还可以对包名、项目结构目录和文件名进行调整。
9. UI
特别是在重新设计启动页和首页时,最好选择与之前有明显变化的主题色。
10. 图标
需要对图标的文件名进行全面修改,仅仅修改文件名并不足以改变一个文件的MD5值,因此还需要对文件内容进行修改。
还可以对图片进行压缩、格式转换,png convert to webp
或将webp转换为png格式
11. 布局文件的控件id
例如,之前的按钮名称是btn_login,现在将其调整为btn_submit等其他名称。
12. 布局文件的控件类型
举个例子,之前使用的是LinearLayout,现在需要将其调整为androidx.appcompat.widget.LinearLayoutCompat。
比如之前是TextView,调整为androidx.appcompat.widget.AppCompatTextView
13.strings.xml
比如之前是
密码```xml 密码 ```14. 代码混淆
可参考1:https://github.com/king-ma1993/AndroidProguadRules
建议根据每个app的需要,对bt-proguard.txt文件进行相应的替换,以确保每个app都有不同的混淆内容。
“Android绝妙的词汇宝典”
常规的混淆方式,如abcd等,并不能对逆向工程产生很大的干扰。因此,我们需要一个独特的字典来进行变态操作。使用方法如下:
在proguard-rules.pro文件中进行设置
请参考以下链接了解更多信息:https://github.com/bytedance/AabResGuard/blob/develop/wiki/zh-cn/README.md。对aab包的资源处理
15. ARouter
如果您使用了ARouter路由框架,我们建议您进行相应的修改。
比如之前路由表
const val HOME: String = "/app/home"
调整为
const val INDEX: String = "/newapp/index"
16. 接口映射
举个例子
比如之前登录接口是
@POST(sl/app/login) suspend fun login(@Body params: HashMap): NetResult可以看到有几个变化,@POST(ax/FEW/MQx)suspend fun loginInter(@Body params: HashMap): BaseResult1、接口请求的具体地址发生了变化。
2、NetResult的返回请求已经发生了变化。
3、返回的实体名称也发生了变化。
4、接口请求的方法名称也发生了变化。
如果公司内部有多个应用程序,每个应用程序生成的具体请求地址都是不同的。
每个app都配备了相应的请求头。
比如之前是
HashMap<String, String> map = new HashMap<>(); map.put(appName, AppName);
val map = HashMap() map[xAfew] = AppName 最后再进行加密17. 未混淆的类(实体类等)
比如之前是
data class LoginResultEntity( val token: String? = , val avatar: String? = )1、名称变更
2、增加垃圾字段
```kotlin data class LoginEntity( val a: String = , val b: String = , val token: String? = null, val avatar: String? = null, val c: String = ) ```18. 优化代码结构
对代码进行优化
请参考以下链接:https://github.com/qq549631030/AndroidJunkCode。需要注意的是,确保垃圾代码在混淆过程中不被混淆。
19. 变量、方法名
在混淆过程中,大多数变量和方法都会被重新命名。
特别需要注意的是,在打包的aab文件中,必须对没有重名的文件进行相应修改。
可以使用工具 jadx-gui 来查看。
20. 三方库
进行相关三方库的升级,或者考虑使用其他相关库进行替换。
21. 三方SDK key
关于使用的一些三方SDK
以AppFlyer为例,每次创建一个新的应用程序都会生成一个dev key。默认情况下,每个应用程序的dev key在AppFlyer中是相同的。如果需要更改,请与相关商户联系。
还木有评论哦,快来抢沙发吧~