android apk 文件反编译和修改后重新打包问题

这里反编译呢apk文件,使用的是apktool工具 1,下载地址:https://ibotpeaches.github.io/Apktool/ 当前最新版本为2.4.1 是一个jar文件,所有前提是需要安装好jdk环境,要求的环境为JDK-1.8.0...

这里反编译呢apk文件,使用的是apktool工具

1,下载地址:https://ibotpeaches.github.io/Apktool/

当前最新版本为2.4.1 是一个jar文件,所有前提是需要安装好jdk环境,要求的环境为JDK-1.8.0以上

安装说明文档为:https://ibotpeaches.github.io/Apktool/install/


2,下载apptool.jar 页面也有一个 wrapper script (外壳)脚本,主要为了方便命令执行,但这个脚本不是必须的,没有

这个脚本 通过java -jar 。。。。也是可以工作的,当然windows和linux下甚至mac OS下这个脚本都是不同的,我这里是

windows下的,只需要下载一个apptool.bat 文件和一个apptool-2.4.1.jar 文件

把下载好的  文件放到了 d:\app 下

同时把 apptool-2.4.1.jar 改名为:apptool.jar 


3. 这里需要反编译的apk文件名为:ddd.apk

d:\

cd app

apktool d -f ddd.apk     这样ddd.apk 被反编译

然后可以修改app_name 和app图标

3.1如何修改app名字


直接在文件AndroidManifest.xml中的android:label=”@string/app_name”去修改即可,直接去修改app_name中的名字,中、英文都是可以的;


3.2 修改app图标

AndroidMenifest.xml中指定了该APP的图标:android:icon="@mipmap/icon"

mipmap/icon 对应了“应用程序名/app/src/main/res”中的多个以“mipmap”开头的文件夹,如图

attachments-2020-01-07vjRx3p5e330ca814397,png

3.3 hdpi、mdpi、xhdpi、xxhdpi和xxxhdpi的区别

以上五个文件夹对应了不同屏幕密度下使用的图标。屏幕密度简称DPI,其全称为“Dots Per Inch”,表示“每英寸的像素点”,该值越大显示的图标则越清晰。


anydpi-v26  待整理;

hdpi表示屏幕密度是160;

hdpi表示屏幕密度是240;

xhdpi表示屏幕密度是320;

xxhdpi表示屏幕密度是480;

xxxhdpi表示屏幕密度是640。


不同文件夹下,保存了不同屏幕密度的图标;可以通过两种方式修改APP的图标,一种是修改图标资源;另一种是修改图标资源值。


3.4 通过修改 (图标资源)实现图标的修改


将APP的新图标名修改为“icon.png”,之后将其拷贝到“1.1 hdpi、mdpi、xhdpi、xxhdpi和xxxhdpi的区别”中提到的5个文件夹中,覆盖之前的“icon.png”文件,之后运行程序即可实现APP图标的修改。


3.5 通过修改 (图标资源值) 实现图标的修改

在“1 修改APP图标”中提到的AndroidMenifest.xml中的“android:icon”指定的是APP图标资源,可以将其修改为其它值。例如,将APP新图标拷贝到drawable文件夹下,并将AndroidMenifest.xml修改

android:icon="@drawable/icon"


4.重新打包

重新打包命令:

apktool b ddd -o aa.apk        

其中ddd为反编译修改后的文件夹,通过-o 可以指定生成的apk名称,如果省略默认会生成 目录同名文件

很多时候,打包会报如下错误:

attachments-2020-01-gmdvWdt75e330e07ee458,png

 

出现此错误需要把文件默认的 framwork\1.apk 删除,

通过 java -jar apktool.jar empty-framework-dir     这条明林会删除1.apk文件,然后重新编译,可以正常

5,生成的apk文件现在还不能在手机上安装,必须签名后才可以

签名需要证书,证书生成和签名工具可以在JDK下的bin目录找到。

5.1 生成证书

keytool -genkey -alias public.keystore -keyalg RSA -keysize 1024 -validity 3650 -keystore private.keystore -keypass 123456 -storepass 123456 -dname "CN=shitian,OU=Tech,O=zuncuang,L=ShenZhen,ST=GuangDong,C=CN"

其中:-keystore private.keystore 为生成私钥名称 -alias public.keystore 为公钥名称

keytool 用法如下:

-genkey 生成秘钥

-alias 别名

-keyalg 秘钥算法

-keysize 秘钥长度

-validity 有效期

-keystore 生成秘钥库的存储路径和名称

-keypass 秘钥口令

-storepass 秘钥库口令

-dname 拥有者信息,CN:姓名;OU:组织单位名称;O:组织名称;L:省/市/自治区名称;C:国家/地区代码

更多参数说明执行命令:

keytool -genkey -?

二、查看证书

keytool -list -keystore d:/tomcat.keystore -storepass 123456
keytool -list -v -keystore d:/tomcat.keystore -storepass 123456
keytool -list -rfc -keystore d:/tomcat.keystore -storepass 123456

-list 列出秘钥库中的条目

-v 详细输出

-rfc 以RFC样式输出

更多参数说明执行命令

keytool -list -?


6,对新新生成在apk签名


jarsigner -verbose -keystore  private.keystore -signedjar new.apk shitian.apk public.keystore


-signedjar 后面紧接在是 签名的.apk  未签名.apk

  • 发表于 2020-01-31 00:59
  • 阅读 ( 59 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
石天
石天

437 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章