1、下载apktool工具下载地址Apktool - How to Install下载这两个文件放入同一个文件夹2、反编译apk将需要反编译的apk文件放进ApkTool文件夹内运行cmd进入到ApkTool文件夹下键入以下命令执行成功会生成一个同名的文件夹apktool d demo.apk加上 -s 表示不把dex文件反编译成smile语言生成的为dex文件 可以方便后面查看源代码apktool d -s demo.apk3、重新打包将要反编译的apk文件放到apktool文件夹打开cmd进入ApkTool文件夹目录执行命令apktool b demo -o demo2.apk执行成功会生成一个demo2.apk4、签名apk重新打包后的apk需要重新签名执行命令jarsigner.exe -verbose -keystore xxx.keystore -signedjar demo2_signed.apk demo2.apk 签名文件的别名 -digestalg SHA1 -sigalg SHA1withRSAv1v2签名apksigner sign --ks 签名文件 --ks-key-alias 别名 --out 签名后的apk 待签名的apk(注mac下jarsigner去掉.exe)5、优化apk为了使apk在安卓系统上运行更快签名完成后建议对APK文件进行一次对齐操作需要执行命令zipalign 4 demo2_signed.apk new_demo2.apk执行成功会生成一个new_demo2.apk注使用zipalign命令需要将zipalign的路径加入到系统环境变量当中在SDK的\build-tools\22.0.1\目录下6、验证签名是否成功执行命令jarsigner -verify -verbose -certs new_demo2.apk当输出 jar已验证表示签名成功7、验证是否使用了v1和v2签名apksigner verify -v --print-certs apk地址v1true表示使用了v1签名v2false表示没有使用v2签名8、命令行查看apk的包名、版本号等信息aapt dump badging test.apk9、命令行查看签名文件的SHA1值、MD5值keytool -v -list -keystore keystore文件路径10、查看.apk包里的签名详细jarsigner -verify -verbose -certs app-release.apk11、查看apk的SHA1、md5等值//第一种、不需要解包 keytool -printcert -jarfile xxx.apk //第二种、需要解包 keytool -printcert -file \META-INF\CERT.RSA12、dex文件转为smalijava -jar baksmali-2.5.2.jar disassemble dex文件路径 -o 输出文件路径java -jar baksmali-2.5.2.jar disassemble classes.dex -o smali13、smali文件转为dex文件java -jar smali-2.5.2.jar assemble smali文件路径 -o 输出dex文件路径java -jar smali-2.5.2.jar assemble smali -o classes.dex14、adb打印Error级别的日志//过滤Error级别的日志 //Log日志级别 //V详细日志。默认的 D调试信息I正常使用时的日志信息W警告E错误 adb logcat *:E //过滤关键字日志例子为包名 adb logcat | grep 包名 //将所有日志保存到本地文件 adb logcat /Users/Desktop/log.txt15、查看手机CPU架构命令adb shell getprop ro.product.cpu.abi #返回手机所支持的所有CPU架构 adb shell getprop ro.product.cpu.abilist16、解压jar文件jar -xvf jar包名字.jar17、Linux磁盘相关命令查看整个硬盘的大小 df -h查看当前文件夹大小du -sh查看当前目录下所有文件大小du -sh *查看当前目录下所有文件大小按GB大小筛选du -sh * | grep G删除文件rm删除文件或目录rm -r强制删除文件或目录rm -rf获取linux下的进程id和进程名jps获取linux下详细的进程信息//查看Java进程信息 ps -ef | grep java //查看mysql进程信息 ps -ef | grep mysql //查看占用内存较大的前10个进程信息 ps aux --sort-%mem | head -n 10查看进程信息ps -ef | grep 进程名命令杀死进程sudo kill -9 PID 如sudo kill -9 750查看并删除多少天前的文件#查询30前的.log日志文件 find ./ -name *.log -type f -mtime 30 #删除30前的.log日志文件 find ./ -name *.log -type f -mtime 30 -delete18、获取Android设备虚拟机最大内存即oom超出限制的那个内存数adb shell getprop | grep dalvik.vm.heapgrowthlimit //APP运行的时候分配给虚拟机的初始空间大小 dalvik.vm.heapstartsize8m //初始分配给APP虚拟机的内存不够用的时候会自动扩张这个值就是扩张的最大值。 dalvik.vm.heapgrowthlimit192m //应用的最大堆内存大小这个值是APP使用大heap时的限定值。就是APP的mainfest文 //件中有声明 android:largeHeap“ture”这个时候堆空间的最大值使用heapsize限定没有声明largeHeap的APP堆空间使用heapgrowthlimit限定。 dalvik.vm.heapsize512m //描述堆内存的利用率是当前的有效变量所占内存和总内存的比值。 dalvik.vm.heaptargetutilization0.75 //描述单次堆内存调整的最小值 dalvik.vm.heapminfree2m //描述单次堆内存调整的最大值 dalvik.vm.heapmaxfree8m19、导出tombstones文件# 直接生成bugreport zip到本地 adb bugreport
阅读完成 · 觉得有帮助?