将 java 个文件转换为 .jar 并使其成为 .dex

converting java files into .jar and make it .dex

我正在尝试编辑 .apk 文件,更改一些变量或在其中的 java 个文件中添加一些函数。

所以,首先,我使用apktool反编译.apk。 然后,我使用 dex2jar 将 classes.dex 转换为 classes.jar 并使用 jd-gui 读取文件。如您所知,.jar 中的文件都是 .class 文件,它们是二进制文件,无法读取,所以我尝试使用

将 .jar 转换为 java 文件
'Save all sources' 

在 jd-gui 中,它给了我可读和可编辑的 java 文件,这对我有好处。然后我编辑了 java 文件并使用

将它们制作成 .jar 文件
'jar cf newjar.jar javafiles'

然而问题是,

jar2dex command with the new .jar file, edited one always failed,原因是'no classfiles specified'.

我认为这是因为我是从 .java 文件而不是 .class 文件制作的。所以我该怎么做?我是否必须使用 javac 命令将所有 java 文件制作成 .class 文件?或者有什么想法?

如果您有 Java 个文件和提取的资源,您应该能够将它们导入到常规 Android 项目中并使用标准构建工具进行构建。请注意,虽然反编译器并不完美,因此生成的 Java 文件甚至可能无法编译。

如果你认真对待APK修改,我强烈建议你看一下smali,它是代码的更直接的表示,可以直接编译成dex格式。

从dex2jar和jd-gui获得的java源代码仅供参考,不完整and/or始终不正确。 此外,如果它完全可靠,就没有真正需要开源。

正如@Robert Williams 所说,如果您认真对待 apk 修改,则应该研究 smali。 如果你这样做,这里有一些链接可以帮助你入门

http://smali.net16.net/

http://androidcracking.blogspot.in/search/label/smali