java - Android Studio : How to compile with customized class but still use module dependency

标签 java android compilation shared-libraries patch

假设 Android 应用程序使用 jar 库,并且当该库被指定为依赖项时一切正常:

dependencies {
    ...
    ...
    compile 'org.example:example:1.1.1'
    ...
}

但是:org.example 代码中的一个类需要调整。

一种方法是获取源代码并将所有源代码放入 java 文件夹中,然后删除该模块。当进行调整时,整个库将被编译。

另一种方法是调整、编译并替换 .jar 文件中的 .class 文件。

这两种方法都有其缺点。

我的问题是:是否有更简单的方法来调整库中的代码?

当我尝试创建包,将需要更改的类放入 java 文件夹时,出现错误:

Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lorg/example/ClassNeedingChange;

我只是想知道是否有一个技巧可以让 Java 文件夹中的代码覆盖库 jar 文件中的内容。

其他信息:

虽然上面没有具体说明,但需要调整的类被隐藏在库中,并由库的代码引用;我不直接调用它。对于需要调整的类是我的代码(并且只有我的代码)直接调用的类的简单情况,那么使用 Java 构造扩展该类将是一件简单的事情。但对于这个简单的情况,我不需要发布这个问题。

最佳答案

扩展需要在代码中调整的类,并重写适当的方法。

Class A extends TweakMe {

 @Override
 public void someTweakedMethod() {
     //Do stuff
  }
}

关于java - Android Studio : How to compile with customized class but still use module dependency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43881348/

相关文章:

java - JUnit 测试 : Suppress enum constructor by mocking?

java - java中如何清除ClassCastException?

android - 删除左填充

c# - ASP.Net 上的预编译和启动时间

c - 正确设置cmakelist来编译项目

java - 使用冒泡排序与 fork/join 池并行对 Arraylist 进行排序

java nashorn从文件中解析json

android - 使用 Retrofit 2.0 上传文件

java - 在 Android 中使用自然排序顺序对 ArrayList 进行排序?

使用 gcc 编译包括 .h 文件?