如何将库(不可编辑的 .java/.class 文件)转换为可编辑的 .java 文件(项目中的标准 classes)?

How to convert library (uneditable .java/.class files) into editable .java files (standard classes in project)?

我正在与 Paho project for Android 合作。根据说明,在测试Android示例应用程序时,要求同时具有AndroidService.jarJavaClient.jar 包含在项目中。我将它们导入 Android Studio 并且该应用程序运行良好。

但是,这是我的问题,我想编辑这些预编译的 java 类。但问题是,由于它们作为 .jar 文件导入并且已经编译,因此在 Android Studio 中无法编辑它们。

我有要包含到项目中的库的源代码。不幸的是,当我在 Android Studio 中导入它们时,出现了一堆错误(导入 .jar 文件时通常不会出现这些错误)。

我到目前为止尝试的方法是通过创建具有相同名称和内容的新 类 将源 java 类 复制到项目中。我还尝试将整个源项目作为模块导入到我的项目中。我得到同样的错误。我也知道 Paho 项目的 this great fork,它让您只需在 Android Studio 中导入整个项目,它就可以正常工作。然而,Android服务类仍然无法编辑。

正如我所说,我有所需的源代码。我可以毫无问题地从源代码生成这些 .jar 文件,然后将它们导入到项目中。那个方法有效。但是要编辑 java 类,然后编译它们,然后将它们导入到 Android Studio 中以测试所有内容,并且每次我更改某些内容时都要这样做,有点累人。这就是我寻求帮助的原因。

请让我知道,如果你知道一些方法可以让我编辑这两个“”,而我还在 Android Studio 中,所以我可以立即测试我所做的更改。

P.S。我一直在谷歌上搜索这么多,我相信没有针对这些在线的现成解决方案。但是,如果你找到了,如果你指出它,我会很高兴。

Jar 文件实际上只是 .class 文件(以及其他一些重要文件)的压缩(压缩)版本。 Class 个文件被编译为 .java 个文件。编辑这些 jar 文件的唯一方法是使用 7zip 或 WinRAR 等程序解压缩 jar,然后反编译 class 以获得源代码,编辑它,然后重新编译。反编译是一个非常困难、耗时的过程,并且需要外部软件。你最好的选择是继续你一直在使用的过程。

注意: 如果您仍想反编译,您可能需要查看 Cavaj,一个免费的 java 反编译器。但请注意,它可能不是 return jar 中使用的确切源代码。

来源:经验

最重要的是,我不知道您为什么要编辑 Paho Android 服务,因为它没有多大意义。如有必要,您可以覆盖每个 class。您需要以任何方式将 Android 服务构建从 Maven 更改为 Gradle 以将源代码包含到您的项目中。

为了帮助您,我刚刚完成并推送到我存储库的 "withSouce" 分支。 https://github.com/sandro-k/org.eclipse.paho.android.service.sample/tree/withSource

如果您现在想用您的源代码替换编译 org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2,您还必须将其替换为本地依赖项。