Unity出多渠道包apk,Mac环境下对apk反编译并重签名

Unity自动化出多渠道包apk,Mac环境下对apk反编译并重签名

需要的工具

  1. apktool 按照下载页的提示进行下载
  2. dex2jar 找到dex2jar-2.0的最新release下载zip
  3. jarsigner(需要安装JDK)

反编译及重签名主要流程

  1. 反编译apk文件
  2. 解出jar包(若不需要修改java代码,则不需要此步骤)
  3. 修改资源文件或代码
  4. 回编译出apk文件
  5. 重签名
PS:在流程之前先声明几个文件和路径
  1. 新创建的文件夹为 User/liyiyuan/Desktop/ReSignTest
  2. 需要重签名的apk为 base-test.apk
  3. 重签名导出的apk为 resigned-test.apk
流程详解
  1. 创建一个新的文件夹,目录为User/liyiyuan/Desktop/ReSignTest
  2. 将需要重签名的apk和下载的dex2jar解压出的dex2jar-2.0文件夹放入 User/liyiyuan/Desktop/ReSignTest此时的目录结构为:
ReSignTest
│   base-test.apk
│
└───dex2jar-2.0
       │   
       ...
  1. 打开termnial.app(终端)进入ReSignTest文件夹,执行
apktool d base-test.apk

此命令会将base-test.apk反编译,得到base-test文件夹,此时目录结构为:

ReSignTest
│    base-test.apk
│
└─── dex2jar-2.0
│       │   
│       ...
│
└─── base-test  
        │     AndroidManifest.xml
        │     apktool.yml
        │     assets
        │     lib
        │     original
        │     res
        │     smali
  1. (如果不需要修改app内java代码可以省略此步骤)在termnial.app(终端)中执行命令:
sh dex2jar-2.0/d2j-dex2jar.sh base-test.apk

此命令是将*.dex文件转成*.jar文件,这个jar文件就是java代码的压缩包,需要查看代码的可以用使用此压缩包查看。
此时目录结构为:

ReSignTest
│   base-test.apk
│   base-test-dex2jar.jar
│
└───dex2jar-2.0
       │   
       ...

PS:用apktool解包后不会在文件夹中存在*.dex文件。但是通过改apk后缀名为ziprar等,在将压缩包解压会存在classes.dex文件。

  1. 反编译结束后base-test文件夹中assets存放着base-test.apk的一些资源,一半渠道CHANNEL信息会存到Config.*文件里面(根据项目会有各自的差别)。此时就可以根据需求修改。
  2. 修改完成后,需要进行回编译,就是将base-test文件夹编译成apk文件,需要运行命令:
apktool b base-test.apk

此时目录结构为

ReSignTest
│    base-test.apk
│
└─── dex2jar-2.0
│       │   
│       ...
│
└─── base-test  
        │     AndroidManifest.xml
        │     apktool.yml
        │     assets
        │     build
        │     dist
        │     lib
        │     original
        │     res
        │     smali

执行此命令后,会在base-test文件夹下生成builddist文件夹,其中回编译的新的apk文件就是在dist文件夹中。
6. 有了回编译的文件后就可以对新的apk进行重签名,在termnial.app(终端)输入命令:

jarsigner -verbose -keystore [keystore路径] -signedjar [签名后的文件保存路径] [dist文件夹下的路径] [证书名]

执行完后回需要输入keystore的密码,也可以在命令行中加上-storepass-keypass-sigalg-digestalg等参数来添加密码、加密方式等。
最终重签名得到的包为就是resigned-test.apk

自动化出多渠道包工具项目地址

请参考我的github项目:tools-channelpackages

参考文章
  1. MAC对APK包进行重新签名
  2. Mac环境下反编译apk
其他

更多Blog请见:https://yiyuan1130.github.io/
Github地址:https://github.com/yiyuan1130

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值