提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
APK的反编译和回编译过程相对比较多,而网上的资源没有那么全面,大都是拿某一个具体的过程进行讲述,如果想要大致学习,可以多看一些博客或者在GPT上搜索相关的步骤,再进行效率学习。
以下是我通过GPT搜索的相关步骤:
一、反编译APK文件
第一步:需要下载一个apktool.jar包
第二步:找到apktool.jar的路径,然后输入cmd,打开命令行工具
第三步:在命令行输入反编译命令
apktool d D:\AZ\test01\Test_Process01\app\release\app-release.apk
d 是反编译标识
D:\AZ\test01\Test_Process01\app\release\app-release.apk(是需要进行反编译的apk包)
第四步:得到对应的反编译内容(在apktool.jar
的目录下可以看到)
二、回编译:
apktool b D:\AZ\apk_tools\app-release
b 回编译标识
D:\AZ\apk_tools\app-release(需要回编译文件目录 < 就是我们刚刚上面进行反编译成功后 生成的目录 >)
三、手动编译APK
android整体的编译打包流程图
第一步:使用AS创建一个空项目(为了方便测试,才创建的空项目),或者是直接搬目标项目的Java,res和AndroidManifest.xml
第二步:我们使用aapt2命令行工具来编译项目的资源文件。打开终端,进入到项目的app/src/main/目录下,执行以下命令:
aapt2 compile -o ../res.zip --dir .
或者在该目录下创建一个文件夹:build(把生成的文件全部存储在里面)
aapt2 compile -o build/res.zip --dir res
- aapt2: 这是 Android App Bundle Tool 的命令行工具,用于处理 Android 应用的资源和清单文件。
- compile: 这是 aapt2 的一个子命令,用于编译资源文件。
- o …/res.zip:
这个选项指定了输出文件的路径和名称。-o 是 --output 的简写,它后面跟着的是生成的 ZIP 文件的路径。在这个例子中,…/res.zip 表示 ZIP 文件将被创建在当前目录的上一级目录中,并命名为 res.zip。 - dir .
这个选项指定了要编译的资源文件所在的目录。. 表示当前目录,所以这个命令将编译当前目录下的所有资源文件。
文件夹打开都是.flat格式文件
第三步:对资源进行链接
aapt2 link build/res.zip -I D:\software\Android\AndroidSdk\platforms\android-28\android.jar --java build --manifest AndroidManifest.xml -o build\app-debug.apk
-
build/res.zip: 这是将要生成的APK文件的名称。res是资源目录的缩写,zip表示将资源文件打包成一个zip文件。
-
I D:\software\Android\AndroidSdk\platforms\android-28\android.jar: 这个选项告诉aapt2使用android.jar文件作为Java类路径的入口点。这意味着aapt2会使用这个jar文件中定义的类来处理资源文件。
-
java build: 这个选项指定了要处理的资源文件的类型。在这个例子中,它指的是Java资源文件(.java文件)。
-
manifest AndroidManifest.xml: 这个选项指定了AndroidManifest.xml文件的路径。这个文件包含了应用的配置信息,如应用的名称、版本号、权限等。
-
o build\app-debug.apk: 这个选项指定了输出的APK文件的路径。在这个例子中,它将生成的APK文件放在build目录下,并命名为app-debug.apk。
第四步:把生成的R.java文件拷贝到项目代码下
第五步:编译java文件(要引入libs下对应的依赖)
javac -d build -cp "D:\software\Android\AndroidSdk\platforms\android-28\android.jar;D:\AZ\AggregationsSDK\sswlUnifySdk\SswlUnifySdkDemo\libs\android-support-v4.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\xxx-obuscate-v2.0.65.jar;D:\AZ\xxx\xxx\xxx\libs\test-sdk-v1.0.65.aar;" -encoding UTF-8 java/com/xxx/demo/*.java
得到对应.class文件
第六步:生成Dex文件
d8 --output build --lib D:\software\Android\AndroidSdk\platforms\android-28\android.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\android-support-v4.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\xxx-obuscate-v2.0.65.jar;D:\AZ\AggregationsSDK\xxx\xxx\libs\test-sdk-v1.0.65.aar build/com/xxx/demo/*.class
第七步:将dex文件放入apk文件中
我们要调用zip命令,这里的zip也就是我们常用的解压缩软件,
apk文件实质上就是个压缩文件。
配置到环境变量中。
下载zip,并配置环境变量
执行命令行:
zip -j build/app-debug.apk build/classes.dex
第八步:生成签名
这个时候,apk文件中的内容还少META-INF,也就是签名信息。
apksigner sign -ks D:\AZ\test_key\android_keystore.jks app-debug.apk
第九步:安装apk
adb install xxx.apk
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。