• Google Play 开发者账户被封 如何改代码快速上架


    本篇不保证百分之百成功,但至少在我们内部,此操作是成功上架到Google Play 并保持超半年还在的。

    下面聊聊具体的步骤措施

    1. App Name

    取一个跟之前不一样的就行,建议拿到名字上相关网站搜一下,同名是否多,尤其是有存在且对方已做商标保护的,那就更加不要同名了

    参考:https://apkcombo.com/zh/
    需VPN

    2. 包名

    同样,取一个跟之前不一样的

    同时,比如公司名称简称sl,建议包名中就不要有sl了

    eg:com.sl.appname 此类就不建议

    3. Logo

    设计一个新的即可

    4. 签名

    重新生成一个新jks文件、密码和名称都变更下,与之前的不要有关联

    比如公司名称简称sl,建议jks中就不要有sl了

    5. 域名

    买一个新的域名使用,一个app一个单独域名

    6. 项目结构目录

    调整下结构目录,比如名称、嵌套顺序等

    7. 文件名(类名、布局文件名、资源文件名)

    修改所有的类名、布局文件名、资源文件名

    8. 如果有相应的依赖Module

    也做包名、项目结构目录、文件名调整

    9. UI

    尤其是启动页、首页、尽量重新设计,主题色最好与之前有较大变化

    10. 图标

    图标的文件名必须全部修改
    单纯修改文件名,一个文件的md5其实不会变,需要修改文件的内容

    还可以对图片进行压缩、格式转换,png convert to webp

    or webp convert to png

    11. 布局文件的控件id

    比如之前是btn_login,调整为btn_submit等

    12. 布局文件的控件类型

    比如之前是LinearLayout,调整为androidx.appcompat.widget.LinearLayoutCompat

    比如之前是TextView,调整为androidx.appcompat.widget.AppCompatTextView

    13.strings.xml

    比如之前是

    Password
    
    • 1

    调整为

    Password
    
    • 1

    14. 代码混淆

    可参考1:https://github.com/king-ma1993/AndroidProguadRules

    建议对bt-proguard.txt内容进行相应替换,每个app保证混淆的内容不一样即可

    Android超级变态的混淆词典

    常规abcd等混淆方式对逆向的干扰程序并不是很大,所以需要一个变态的字典,使用方法如下:

    在proguard-rules.pro文件中进行配置

    -obfuscationdictionary bt-proguard.txt
    -classobfuscationdictionary bt-proguard.txt
    -packageobfuscationdictionary bt-proguard.txt
    
    • 1
    • 2
    • 3

    可参考2:https://github.com/bytedance/AabResGuard/blob/develop/wiki/zh-cn/README.md

    对aab包的资源处理

    15. ARouter

    如果使用了ARouter 路由框架,建议做相应修改

    比如之前路由表

    const val HOME: String = "/app/home"
    
    • 1

    调整为

    const val INDEX: String = "/newapp/index"
    
    • 1

    16. 接口映射

    举个例子

    比如之前登录接口是

    @POST("sl/app/login")
    suspend fun login(@Body params: HashMap): NetResult
    
    • 1
    • 2

    调整为

    @POST("ax/FEW/MQx")
    suspend fun loginInter(@Body params: HashMap): BaseResult
    
    • 1
    • 2

    可以看到有几个变化

    1、接口请求的具体地址变了

    2、请求返回的NetResult变了

    3、请求返回的实体名称也变了

    4、接口请求的方法名也变了

    如果内部有多个app,每个app生成的具体请求地址都是不一样的

    同时每个app都有相应的请求头

    比如之前是

    val map = HashMap()
    map["appName"] = "AppName"
    
    
    • 1
    • 2
    • 3

    调整为

    val map = HashMap()
    map["xAfew"] = "AppName"
    
    最后再进行加密
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    17. 未混淆的类(实体类等)

    比如之前是

    data class LoginResultEntity(
        val token: String? = "",
        val avatar: String? = ""
    )
    
    • 1
    • 2
    • 3
    • 4

    调整为

    1、名称变更

    2、增加垃圾字段

    data class LoginEntity(
        val a="",
        val b="",
        val token: String? = "",
        val avatar: String? = "",
        val c=""
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    18. 垃圾代码

    加点垃圾代码

    可参考:https://github.com/qq549631030/AndroidJunkCode
    唯一注意的是,混淆对相应垃圾代码保持不被混淆

    19. 变量、方法名

    大部分的变量和方法在混淆都是被重命名的

    尤其注意的是打包的aab文件中,没有被重名的,进行相应修改

    可通过工具 jadx-gui 进行查看

    20. 三方库

    相关三方库升级、或者用其他相关库替换

    21. 三方SDK key

    关于使用的一些三方SDK

    比如AppFlyer,新建一个App 会有一个dev key,App Flyer 默认每个app 的 dev key都是一样的,可联系对应商户更改

  • 相关阅读:
    vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格
    C/C++基础 异常处理关键字 throw、try、catch
    mac虚拟机安装homebrew时的问题
    小程序如何反编译
    ssm毕设项目职业技能培训网站2adx1(java+VUE+Mybatis+Maven+Mysql+sprnig)
    HUST网络攻防实践|6_物联网设备固件安全实验|实验二 基于 MPU 的物联网设备攻击缓解技术
    DataGrip 无法连接mysql 错误[08001]
    Cesium 简介
    Hive存储格式之RCFile详解,RCFile的过去现在和未来
    《机器人SLAM导航核心技术与实战》第1季:第6章_机器人底盘
  • 原文地址:https://blog.csdn.net/u011183394/article/details/125910596