Apktool 不构建简单的反编译 Android Studio APK

Apktool Not Building Simple Decompiled Android Studio APK

我创建了非常简单的 android studio 项目并修改了 nothing。使用命令 apktool d test1.apk 成功反编译了 Apk,但是当我使用命令 apktool b -o test_build.apk test1/ 构建反编译目录时出现错误,没有生成任何 apk。

输出: apktool b -o test_build.apk test1/

┌──(rootkattie)-[/home/kattie/android]
└─# apktool b -o test11.apk test1/ 
I: Using Apktool 2.4.1
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether sources has changed...
I: Smaling smali_classes3 folder into classes3.dex...
I: Checking whether sources has changed...
I: Smaling smali_classes2 folder into classes2.dex...
I: Checking whether resources has changed...
I: Building resources...
W: Failed to generate resource table for split ''
W: /home/kattie/android/test1/res/values-v31/colors.xml:3: error: Error: Resource is not public. (at 'm3_ref_palette_dynamic_neutral0' with value '@android:color/Teal_800').
W: 
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): 
[/tmp/brut_util_Jar_931359246141218477.tmp, p, --forced-package-id, 127, --min-sdk-version, 26, --target-sdk-version, 32, --version-code,
 1, --version-name, 1.0, --no-version-vectors, -F, /tmp/APKTOOL10608228614004030548.tmp, -e, /tmp/APKTOOL8247866953395506188.tmp, -0, arsc,
-I, /root/.local/share/apktool/framework/1.apk, -S, /home/kattie/android/test1/res, -M, /home/kattie/android/test1/AndroidManifest.xml]

尝试次数:

我的系统详情

System: linux

Java: openjdk version "11.0.11-ea" 2021-04-20 OpenJDK Runtime Environment (build 11.0.11-ea+4-post-Debian-1) OpenJDK 64-Bit Server VM (build 11.0.11-ea+4-post-Debian-1, mixed mode, sharing)

Apktool: v2.4.1

Android studio: 2021.1.1, minSDK: 26, TargetSDK 32

一个持续存在的问题,我正在讨论解决的最佳途径。 aapt2 版本越来越严格,可以在编译时和运行时添加更多检查。我的直觉是您针对低于 Apktool 使用的版本构建应用程序。您在这里有几个选择:

  • 不要使用私有资源。直接嵌入它们而不是引用它们,AOSP 不希望您引用不在强制合同上的东西。
  • 通过更改资源条目 @*android:color/Teal_800 来欺骗它,这允许它覆盖限制
  • 帮助升级 Apktool 中的内部 aapt/aapt2 和上游补丁以更轻松地解决此问题。

上下文 - Apktool 维护者。

我通过在 apktool 目录中添加缺少的 aapt.exe 文件解决了这个问题。但是提取的 apk 目录中的修改更改无法正确制作签名的 apk,给出了很多错误。

所以我使用了ApkEasyTool工具来签名,zipalign,编译apk目录。这工作正常。