Android工作室从外部模块继承类

时间:2016-01-09 20:18:43

标签: java android android-studio android-ndk

我有一个带有几个外部模块的android工作室项目(模块位于不同的文件路径上),我无法让Android Studio从模块中看到抽象类。

某些模块依赖于其他模块,例如:ModuleA是ModuleB的依赖项,ModuleB是我的主app模块的依赖项。 ModuleB可以从ModuleA看到抽象类,但我的主app模块无法从ModuleB看到抽象类。

  • 我已在gradle文件中的主app模块中包含模块依赖项

    dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:design:23.1.1'
    compile project(':ModuleB') }

  • 我只有一个 settings.gradle,它位于主app模块的根目录下。在settings.gradle中,我有我在此项目中使用的模块的文件路径。

在我的主app模块中,我有一个类projectHelper,它扩展了 ModuleB 中的抽象类。例如:

public class projectHelper extends Helper {

}

无论我尝试什么,我都无法让主模块应用程序从ModuleB模块中看到抽象的Helper类。

Gradle sync传递正常,但Studio报告无法解析Helper类。

我试图在ModuleB中包含这个包,甚至扩展类似“extends com.android.ModuleB.Helper”的类,但是类和包都无法解析。

我正在使用Android Studio 1.5.1和Android NDK以及com.android.tools.build:gradle-experimental:0.4.0插件。

我在Eclipse中完成了这项工作,它没有任何问题。

它还允许我将类从ModuleB移动到我的主App模块(但我不能这样做),请参阅image :(我不得不模糊包名称)。 module

1 个答案:

答案 0 :(得分:0)

目前,这不能用实验性NDK插件完成。

我用android.productFlavors解决了这个问题。关键是要将主目录旁边的代码放在单独的目录中,如flavour1,给它java-> packageName> someClass.java。它必须与主应用程序具有相同的包名称,但忽略它,因为您可以在gradle中以特定的构建风格更改它

create("googleFree") {
        applicationId = "com.example.mySpecialPackage"
    }

并且在构建APK时,将在清单中替换该包名称。

我是通过此链接http://blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/

了解到的