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

将java文件转换为.jar并使其成为.dex,java,android,jar,dex2jar,Java,Android,Jar,Dex2jar,我试图编辑一个.apk文件,在其中更改一些变量或在java文件中添加一些函数 因此,首先,我使用apktool来反编译.apk。 然后,我使用dex2jar将classes.dex转换为classes.jar,并使用JDGUI读取文件。正如您所知,.jar中的文件都是.class文件,它们是二进制文件,无法读取,因此我尝试使用 'Save all sources' 在JDGUI中,它给了我可读和可编辑的java文件,这对我很好。然后我编辑了java文件,并使用 'jar cf newjar.

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

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

'Save all sources' 
在JDGUI中,它给了我可读和可编辑的java文件,这对我很好。然后我编辑了java文件,并使用

'jar cf newjar.jar javafiles'
但问题是,

jar2dex命令与新的.jar文件一起使用时,编辑的文件总是失败,原因是“未指定任何类文件”


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

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


如果您对APK修改持认真态度,我强烈建议您看看,这是一种更直接的代码表示,可以直接编译为dex格式。

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

正如@Robert Williams所说,如果你真的对apk修改持认真态度,你应该调查smali。 如果你这样做了,这里有一些链接让你开始