如何在预编译的 apk 中添加其他类

Jas*_*ngh 5 android class

问题是,我有一个 android rom,它有一个我正在尝试移植的应用程序。但是应用程序需要的一些类在框架内。我已经有了 smali(通过 smali-backsmali 工具反编译 framework.jar 中的 classes.dex)和 java(通过源代码)格式的类。但我的问题是,如何在 apk 中实现/添加它们?我知道 classes.dex 中存在类。

我试过以下->

1)使用apktool反编译apk,并在反编译apk后出现的smali文件夹中添加带有相应路径的类文件(smali格式)。步骤中的问题->当我重新编译apk时,不知何故我在编译apk时不会出现我自己添加的类。说的更清楚->假设默认情况下,反编译apk的smali文件夹中包含X类。我添加了 Y 类(通过简单地将 Y.smali 文件复制到反编译的 smali 文件夹中)。但是当我重新编译apk时,重新编译的apk的classes.dex只包含X类,Y类仍然缺失。

2) 从 apk 存档中提取 classes.dex 并使用 backsmali 获取 classout 文件夹。然后将其他需要的类复制到其中,然后再次将其重新打包到 classes.dex 中。然后我将新的 classes.dex 放回 apk 存档(我将“new-classes.dex”重命名为“classes.dex”并将 apk 存档中的那个替换为我刚刚创建的较新的存档)。此步骤中的问题-> 它在 logcat 中给出了错误为-

E/dalvikvm(2373): Dex cache directory isn't writable: /data/dalvik-cache
I/dalvikvm(2373): Unable to open or create cache for /system/app/Test.apk (/data/dalvik-cache/system@app@Test.apk@classes.dex)
D/AndroidRuntime(2373): Shutting down VM
W/dalvikvm(2373): threadid=1: thread exiting with uncaught exception (group=0x41607ce0)
Run Code Online (Sandbox Code Playgroud)

最后它无法实例化应用程序。

请注意:在使用 apk 多工具重新编译或通过 winrar 手动将 classes.dex 放入存档时,我对 apk 保持零压缩。另外,我在这两种情况下都签署了 apk。那么如何将缺失的类添加到 apk 中呢?dev 不提供应用程序的源代码。