如何正确重新编译apk文件?

问题描述 投票:0回答:3

我试图检查一个项目的 .apk 文件,所以我决定使用 APKtool 反编译它:

apktool d name.apk

我找到了我想要的,改变了它(我只修改了一堆 .json 文件和一些 .png,全部在 /assets 文件夹中),但是在用

重新构建它之后
apktool b name -o new.apk

我在设备上安装该应用程序时遇到了一些问题。有什么建议吗?

根据其他类似问题,这可能是 .apk 的签名。但这些都没有解释以正确的方式签署 .apk 文件的方法。

java android apk decompiling apktool
3个回答
13
投票

以下供大家参考


使用 apktool 实用程序编译、反编译和签名 APK。

  1. 下载最新的apktool版本。

  2. 下载批处理文件和aapt.exe。

  3. 在PC的任意位置创建一个文件夹,并将所有apktool.jar、aapt.exe和批处理脚本放在该文件夹中。

  4. 打开命令提示符。

  5. 导航到放置 apktool.jar、批处理脚本和 aapt.exe 的文件夹。

  6. 现在,您需要使用“ IF ”命令安装该文件。

  7. 键入以下命令。

    apktool if name-of-the-app.apk

  8. 要反编译,请使用命令“d”。 “d”代表反编译。

    apktool d name-of-the-app.apk

  9. 应用程序正确反编译后,将在您放置应用程序的同一文件夹中创建一个新文件夹。这包含所有可以针对不同模式进行编辑的 xml 和 smali 文件。

  10. 要重新编译应用程序,请使用以下命令“ B ”。 “b”只是意味着重新编译。

    apktool b name-of-the-app-folder

  11. 最终修改后的应用程序将位于 apktool 创建的原始应用程序文件夹内的“dist”文件夹中。

签署apk

  1. 打开一个新的命令提示符并使用cmd更改为sign-apk目录

  2. 将修改后的未签名的apk移动到此文件夹中

  3. 然后输入以下命令 -

    java -jar signapk.jar certificate.pem key.pk8 path-of-the-folder-contaning-the-apk.apk path-of-the-new-signed-apk.apk

  4. 编译完成后,将在同一文件夹中找到签名的apk。


1
投票

新编译应使用 android-sdk build-tools

 中的 
zipalign
apksigner 工具。
顺便说一句,您可以使用
keytool
创建密钥库。
或者..只需使用跨平台
buildapp
命令(
pip install buildapp
):
buildapp -d <sources_folder> -o <outout_apk>


0
投票

https://liapp.lockincomp.com/blog/blog-Post/tech-apk-signature-scheme-v2-with-apksigner

https://developer.android.com/tools/apksigner

keytool -genkeypair -v -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 3650 -alias mykey

这将创建 keystore.jks 文件

/home/$USER/DevTools/Android/build-tools/33.0.1/apksigner 签名 --ks keystore.jks zipalign_app2.apk

您将需要 Android 构建工具 以及 android 构建工具 [https://medium.com/@barcelos.ds/install-android-sdk-in-the-ubuntu-20-04-lts-without-android-studio-1b629924d6c5]

你的系统中需要java [https://medium.com/@barcelos.ds/install-openjdk-11-lts-in-the-ubuntu-20-04-lts-2c06f17c990]

抱歉,我很着急,所以这是我使用的所有资源

© www.soinside.com 2019 - 2024. All rights reserved.