android - 无法通过传递使用子模块找到 lib

标签 android gradle android-gradle-plugin android-gradle-3.0

Android Studio 3.4.2

我有使用模块 mytransport 的主项目(应用程序),如下所示:

app/build.gradle

dependencies {
    annotationProcessor "org.androidannotations:androidannotations:$AAVersion"

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation('com.crashlytics.sdk.android:crashlytics:2.7.0@aar') { transitive = true; }
    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation "org.androidannotations:androidannotations-api:$AAVersion"

    implementation project(':mytransport')

}

mytransport/build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.code.gson:gson:2.8.5'

}

mytransport 代码中,我成功使用了这样的代码:

MyProject\mytransport\src\main\java\com\mycompany\android\mytransport\util\MyUtil.java

fragment :

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

public class JSONUtil {
private static GsonBuilder gsonbuilder = new GsonBuilder();

不错。

现在我想在主应用程序中使用 gson 库。 所以在主应用程序我试试这个

MyProject\android\MyProject\app\src\main\java\com\mycompany\android\myproject\main\MainApp.java

fragment

import android.app.Application;
import android.content.Context;
public class MainApp extends Application {

private static GsonBuilder gsonbuilder = new GsonBuilder();

但我得到编译错误:

Cannot resolve symbol 'GsonBuilder'

为什么在主应用中找不到gson lib?我通过 mytransport 模块使用它TRANSITIVE

最佳答案

使用 api 而不是 implementation

mytransport/build.gradle 中:

dependencies {
   //...
   api 'com.google.code.gson:gson:2.8.5'
}

只是一个例子。

library/build.gradle 中:

dependencies {
    api project(':libraryA')
}

app/build.gradle 中:

dependencies {
    api project(':library')
}

在您的应用中,您将能够访问 librarylibraryA

使用实现配置:

library/build.gradle 中:

dependencies {
    implementation project(':libraryA')
}

app/build.gradle 中:

dependencies {
    implementation project(':library')
}

在这种情况下,您无法在您的应用中访问 libraryA 方法。

关于android - 无法通过传递使用子模块找到 lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010001/

相关文章:

Android ByteArrayOutputStream 破坏 HTTP GET JSONArray

java - 多个嵌套布局字段中的事件 (OnClickListener)

java - 在 Heroku 上运行使用 gradle 构建的 Spring 应用程序

android - 如何在 GSON TypeToken 类中使用自定义泛型?

java - 如何获取从互联网上获取的 Drawable 并将其保存到我的 Android 设备的缓存目录中?

android - Robolectric, Gradle, Espresso with Flavours

gradle - 使用 gradle 'java-library' 时无法引用库中的类

android - Gradle 构建不正确 - "Could not find method v2SigningEnabled for arguments [false]"

Android 库项目 com.android.dex.DexException : Multiple dex files define Lcom/google/gson/JsonSerializer

android - android库单元测试gradle文件