Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在预编译的apk中添加其他类_Android_Class - Fatal编程技术网

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

Android 如何在预编译的apk中添加其他类,android,class,Android,Class,问题是,我有一个android rom,它有一个我正在尝试移植的应用程序。但应用程序需要的一些类是在框架内的。我已经有了smali(通过smali工具反编译framework.jar中的classes.dex)和java(通过源代码)格式的类。 但我的问题是,如何在apk中实现/添加它们? 我知道课堂上有课 我已经试过了-> 1) 使用apktool反编译apk,并在反编译apk后显示的smali文件夹中添加了类文件(采用smali格式),其中包含各自的路径。 步骤中的问题->当我重新编译apk

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

我已经试过了->

1) 使用apktool反编译apk,并在反编译apk后显示的smali文件夹中添加了类文件(采用smali格式),其中包含各自的路径。 步骤中的问题->当我重新编译apk时,不知何故,我自己添加的类在编译apk时不会出现。要更清楚地阐述-> 假设默认情况下,反编译apk的smali文件夹包含X类。我添加了Y类(只需在反编译的smali文件夹中复制Y.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)
最后,它无法实例化应用程序

请注意:在使用apk multi tool重新编译或通过winrar手动将classes.dex放入存档时,我对apk保持零压缩。 而且,我在这两种情况下都签了apk。
那么如何将缺少的类添加到apk中呢?应用程序的源代码不是由开发人员提供的。

我不敢相信没有人回答这个问题,这是一个好问题,我现在正在寻找答案!