Android打包的相关工具和命令

本文详细介绍了使用命令行对Android文件进行解包、打包和编译的方法,包括使用apktool进行文件操作,使用aapt进行资源编译,使用javac进行Java文件编译,使用dx进行类文件编译,使用baksmali进行dex文件解析,以及生成和使用签名文件的过程。
摘要由CSDN通过智能技术生成

前言

前一阵子用到用命令行对Android文件进行解包、打包和编译,在这里把相关工具和命令做下记录。

apktool

apktool可以对akp包进行解包,或者把Android文件夹打包成apk包。

解包;-o后面接的是输出路径;

apktool d -f <file>/temp.apk -o <file>

打包;

apktool b -f <file> -o <file>/temp.apk

aapt

aapt即Android Asset Packaging Tool,在SDK的build-tools目录下可以找到。

该工具可以用来操作apk文件,也可以用来编译Android的资源文件。

将res文件夹下的资源编译成R.java,存放在gen文件夹下;需要用到android.jar,在SDK的platform里面可以找到;还需要用到你Android工程的AndroidManifest.xml,会根据文件里面的包名package,在gen生成相应的路径;

aapt p -f -m -J <file>/gen -S <file>/res -I <file>android.jar -M <file>/AndroidManifest.xml

从apk包中把签名文件删除;

aapt r <file>/temp.apk META-INF

javac

javac是java文件的编译工具,可以将.java编译成.class。

javac只要电脑安装了jdk,并设置好环境变量就可以调用。

将.java编译成.class,并存放于制定路径:

javac -d <file>/class <file>/R.java

dx.bat

dx.bat是Android的批处理工具,能够将.class文件,编译成.dex文件。

.dex文件是Android虚拟机Dalvik的执行文件。

dx.bat在SDK的build-tools文件夹下可以找到。

将class文件夹下的所有.class文件,编译成.dex文件:

./dx --dex --output=<file>/dex/class.dex <file>/class

baksmali

baksmali是.dex文件的解析工具,可以将.dex文件解析成.smali文件。

.dex文件和.smali文件的区别:.dex是给Dalvik虚拟机执行用的,人看不懂;.smali是由.dex解析出来,人勉强能够看得懂。

使用baksmali将.dex解析成.smali:

java -jar baksmali-2.0.6.jar -o <file>/samli <file>/classes.dex

smali

smali是.smali文件的编译工具,可以将.smali编译成.dex文件。

java -jar smali-2.0.6.jar -o <file>/classes.dex <file>/samli 

生成签名文件

Android的签名文件是Android的数字证书,使用Java的数字证书相关的机制,用来标识app的作者。

每个app都要有签名,不然系统不给安装。

同一个app但是有不同的签名,系统还是会认为这是两个不同的app,会要求后面安装的app更改包名。

生成签名文件,先cd到Java的安装目录下的Home/bin文件夹。

命令行输入如下命令,回车后按提示进行下一步;-keystore是要输出的签名文件;-keyalg是算法模式;-validity 是证书有效期,单位:天;-alias是签名文件的别名。

keytool -genkey -keystore <file>/feiyumobile.keystore -keyalg RSA -validity 10000 -alias feiyumobile.keystore

使用签名文件签名

使用已经产生的签名文件,为apk签名;此处不用特殊工具,只需安装了jdk就行;

jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore <keystore_file> -signedjar <output_apk> <input_apk> <alias>

带密码的命令行,可以不用手动输入密码:

jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore <keystore_file> -storepass <storepass> -keypass <keypass>  -signedjar <output_apk> <input_apk> <alias>

参数解释:
- keystore_file : .keystore 文件
- storepass : keystore密码
- keypass : 别名密码
- output_apk :输出.apk文件
- input_apk :输入.apk文件
- alias :别名

zipalign

zipalign是字节对齐工具,可以给apk进行优化,使得运行时Android系统与app间的交互更加有效率。

zipalign可以在SDK的build-tools找到。

使用zipalign给apk优化;-v 4是指4个字节4个字节对齐;

./zipalign -v 4 <file>/temp_sign.apk <file>/final.apk

总结

  • 使用这些工具,可以给Android进行自动打包,也可以给.apk文件进行反编译。
  • 使用apktool解包,src文件夹下得到的是.smali格式的文件。
  • 可以修改.smali文件,然后用apktool打包,这样可以达到偷偷修改别人的代码的目的。
  • 想要查看别人apk里面的代码,可以先使用zip解压工具解压apk,然后使用dex2jar工具,将.dex解析成jar包,然后使用jd-gui工具查看jar包里的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值