前言

近期看B站数码区这条视频 【大米】破处理器,它能行吗?K50电竞版评测_哔哩哔哩_bilibili 时,发现了UP主的一个比较骚的操作:

嗯?apk文件可以直接拿来使用修改包名的?作为 Android 开发者的我竟然都不知道,是不是太 low 了点儿。。接下来一块看看怎么修改apk的包名吧。

基本操作

以 Android 应用的跑分软件 com.primatelabs.geekbench5_5.4.4.apk 为例。

apk 解包

先确认本地是否安装 Java 环境,JDK的bin文件夹目录是否引入到 环境变量PATH下。确认完毕后,下载 apktool 工具并保存到任意一环境变量目录下。

android 工程修改包名 安卓apk修改包名_包名

cmd执行:

apktool d com.primatelabs.geekbench5_5.4.4.apk # 后面是apk路径

修改 apk 信息

本次修改的应用信息除了应用包名外,另外一个就是应用名。修改的方法大同小异,寻找解包后文件夹内对应字符,进行替换。

修改包名

包名使用的地方可能比较多,这里使用Notepad++进行文件夹内查找:

android 工程修改包名 安卓apk修改包名_Android_02

可以看到修改的地方并不多,且并不包含.so等二进制文件。接下来可以双击定位到每一行手动修改,也可以使用文件夹内查找并替换的功能。这里把原有的包名com.primatelabs.geekbench5修改为cn.wx2020.testbench

修改文件名

文件名的路径是比较固定的,一般就在 res\values\strings.xml中,如果存在翻译的话还可以去找对应资源文件夹,比如中文就在 res\values-zh-rCN\strings.xml 中。

接下来搜索 app_name:

android 工程修改包名 安卓apk修改包名_Android_03

把原有的 Geekbenck 5 改成 Testbench。

重打包

cmd 执行:

apktool b com.primatelabs.geekbench5_5.4.4 # 后面是解包后生成的文件夹路径

重签名

针对最新的 Android 11 系统,需要三个步骤:v1签名、4k对齐、v2签名;针对Android 10 以及以下的系统,使用v1签名的步骤即可。

v1签名
  • 生成签名证书
keytool -genkey -v -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 20000 -keystore {签名文件} -alias {签名别名} -keypass {key密码} -storepass {store密码}
  • 进行签名
jarsigner -keystore {签名文件} -storepass  {store密码} -keypass {key密码} -signedjar {签名后的APK文件} {待签名的APK文件} {签名别名}

执行以下命令前,确保Android SDK build-tools文件夹下的特定版本路径存在于 环境变量PATH 下。这里使用当前最新的 31.0.0 版本。

4K对齐
zipalign 4 {已签名的APK文件} {对齐后的APK文件}
v2签名
apksigner.bat sign --ks {签名文件路径} --ks-key-alias {签名别名} --ks-pass pass:{KeyStore_Password} --key-pass pass:{Key_Password} --out {V2签名后的APK文件} {对齐后的APK文件}

到此,基本操作就结束了。但其实基本操作并不是彻底地修改包名。彻底地修改包名需要配合修改代码文件才可以。

高级操作

未完待续。。。

参考地址

Android 反编译入门指南更改 android apk 名字、包名 可双开及躲过检测