将在一个项目中展示implementation,api以及compile之间的差异。

假设我有一个包含三个Gradle模块的项目:

  • app(Android应用)
  • my-android-library(Android库)
  • my-java-library(Java库)

app具有my-android-library与依赖。my-android-library具有my-java-library依赖。

依赖1

my-java-library有一个MySecret班

public class MySecret {    public static String getSecret() {        return "Money";    }}

my-android-library 拥有一个类 MyAndroidComponent,里面有调用 MySecret 类的值。

public class MyAndroidComponent {    private static String component = MySecret.getSecret();    public static String getComponent() {        return "My component: " + component;    }    }

最后,app 只对来自 my-android-library

TextView tvHelloWorld = findViewById(R.id.tv_hello_world);tvHelloWorld.setText(MyAndroidComponent.getComponent());

现在,让我们谈谈依赖性...

app需要:my-android-library库,所以在app build.gradle文件中使用implementation

(注意:您也可以使用api/compile, 但是请稍等片刻。)

dependencies {    implementation project(':my-android-library')      }

依赖2

您认为 my-android-library 的 build.gradle应该是什么样?我们应该使用哪个范围?

我们有三种选择:

dependencies {    // 选择 #1    implementation project(':my-java-library')     // 选择 #2    compile project(':my-java-library')          // 选择 #3    api project(':my-java-library')           }

依赖3

它们之间有什么区别,我应该使用什么?

compile 或 api(选项#2或#3)

依赖4

如果您使用 compile 或 api。我们的 Android 应用程序现在可以访问 MyAndroidComponent 依赖项,它是一个MySecret 类。

TextView textView = findViewById(R.id.text_view);textView.setText(MyAndroidComponent.getComponent());// 你可以访问 MySecrettextView.setText(MySecret.getSecret());

implementation(选项1)

依赖5

如果您使用的是 implementation 配置,MySecret 则不会公开。

TextView textView = findViewById(R.id.text_view);textView.setText(MyAndroidComponent.getComponent());// 你无法访问 MySecret 类textView.setText(MySecret.getSecret()); // 无法编译的

那么,您应该选择哪种配置?取决于您的要求。

如果要公开依赖项,请使用 apicompile

如果您不想公开依赖项(隐藏您的内部模块),请使用implementation

注意:
这只是 Gradle 配置的要点,请参阅 表49.1 Java库插件-用于声明依赖的配置,有更详细的说明。

可在https://github.com/aldoKelvia... 上找到此答案的示例项目。

更多相关文章

  1. Mac下AndroidStudio中手动配置Gradle
  2. Cocos2d-x的Android配置以及相关参考文档
  3. Android(安卓)连接Wifi和创建Wifi热点的实例
  4. AndroidStudio配置使用lambda
  5. react native android百度地图定位
  6. Android(安卓)studio gradle 依赖后报错后出现Failed to resolve
  7. Android(安卓)studio Robotium环境搭建-实测
  8. 谷歌开发工具Android(安卓)Studio安装使用图文教程
  9. Android(安卓)开发环境

随机推荐

  1. Android 侧滑菜单的实现(NavigationView)
  2. TextView属性详解
  3. 关于Android初学者的学习线路的相关知识
  4. Android--获取安装的程序信息
  5. android渐变色,边角,边框,
  6. Android 使用NDK R5开发JNI应用详解
  7. Android Studio 单元测试(instrumentation
  8. Android开发笔记——以Volley图片加载、
  9. 2012.06.28(4)——— android 应用移到sd
  10. Android生命周期和启动模式