Транзитивные зависимости градиента не разрешены из aar

Я сделал собственный модуль и включил в него зависимость tensorflow-lite с конфигурацией «api». Я строю свой аар. Теперь я создаю новый проект и помещаю файл aar в папку libs. Но я могу получить доступ только к классам, которые я создал, а не к API TensorFlow. Как я могу использовать транзитивные зависимости, не включая их снова?

Я заменил «реализация» на «api», когда прочитал это в блоге (https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa).

build.gradle (модуль: mylib)

apply plugin: 'com.android.library'
android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    aaptOptions{
        noCompress "tflite"
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    api 'androidx.appcompat:appcompat:1.1.0-alpha04'
    api 'org.tensorflow:tensorflow-lite:0.0.0-gpu-experimental'
}

build.gradle (модуль: два в новом проекте):

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
                cppFlags "-std=c++11", "-frtti", "-fexceptions"
            }
        }
        ndk {
            abiFilters 'armeabi-v7a'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    aaptOptions {
        noCompress "tflite"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

repositories {
    maven { url 'https://google.bintray.com/tensorflow' }
    flatDir {
        dirs 'libs'
    }
    mavenCentral()
}

dependencies {
    api fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
    api project(':openCVLibrary341')
    api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

person Death14Stroke    schedule 04.04.2019    source источник
comment
Как правило, файлы aar не содержат сторонних зависимостей. Попробуйте включить весь проект (ваша библиотека openCVLibrary341 здесь) в качестве модуля, а затем используйте api вместо implementation в своем модуле приложения.   -  person Jeel Vankhede    schedule 04.04.2019
comment
моя проблема в том, что я не могу использовать зависимость tensorflow-lite, которую я добавил в mylib.aar во втором модуле. Транзитивные зависимости не работают.   -  person Death14Stroke    schedule 04.04.2019
comment
Да, это то, о чем я упоминал ранее, вам нужно создать fat-aar или импортировать вашу библиотеку как модуль в ваш проект. (переходный вариант в таком случае работать не будет, создание fat-aar вызовет проблемы в будущем.)   -  person Jeel Vankhede    schedule 04.04.2019