Удалите jar во время выполнения на субмодуле в Android Studio

У меня есть три файла build.gradle для проекта (проект build.gradle), один для основного модуля (main build.gradle) и один для другого подмодуля (подмодуль build.gradle)

Мой субмодуль build.gradle использует ADM (Amazon Device Messaging). и поэтому имеет следующую зависимость.

Использование предоставленной зависимости от основного build.gradle работает, но не работает, если я добавлю его в подмодуль. Следующее работает, если на

основной build.gradle

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile fileTree(dir: 'libs', exclude: 'amazon-device-messaging-1.0.1.jar', include: '*.jar')
    provided files('libs/amazon-device-messaging-1.0.1.jar')
}

Что я пробовал

  1. В подмодуль build.gradle добавлено следующее (по-прежнему получается исключение времени выполнения)

    configurations {
        provided
    }
    sourceSets {
    main {
        compileClasspath += configurations.provided
    }
    test {
        compileClasspath += configurations.provided
        }
    }
    
    sourceSets.main.compileClasspath += configurations.provided
    
    dependencies {
    provided files('libs/amazon-device-messaging-1.0.1.jar')
    }
    

ПРИМЕЧАНИЕ. Я также изменил предоставленный файл на что-то нестандартное, например,libslibs, и он все еще не работает

  1. В файл подмодуля build.gradle добавлено следующее (все еще исключение времени выполнения)

    android.libraryVariants.all { 
    variant -> variant.packageLibrary.exclude( 'ext_libs/amazon-device-messaging-1.0.1.jar' )
    }
    
  2. Добавил следующее в файл подмодуля build.gradle (я даже не могу скомпилировать этого парня - думаю, он удаляется и во время сборки)

    android.libraryVariants.all { variant ->
        variant.outputs.each { output ->
            output.packageLibrary.exclude('libs/someLib.jar')
        }
    }
    

2 ответа

Решение

Что работает, так это добавление зависимости к репозиторию maven и включение его в библиотеку с предоставленной зависимостью

  1. Добавьте банку ADM в локальный репозиторий Maven.

Команда:

            mvn install:install-file "-Dfile=amazon-device-messaging-1.0.1.jar" "-DgroupId=com.amazon.device.messaging" "-DartifactId=amazondevicemessaging" "-Dversion=1.0.1" "-Dpackaging=jar"
  1. Включите локальный репозиторий maven в качестве зависимости проекта:

Добавьте "mavenLocal()" в основной скрипт сборки Gradle:

            allprojects {
            repositories {
                            mavenCentral()
                            mavenLocal()
             }
  1. Свяжите артефакт Maven в проекте ADM.

Добавьте ниже строку ADMWrapperLib Gradle скрипт (::).

зависимостей {compile fileTree (dir: 'libs', include: '*.jar')

provided 'com.amazon.device.messaging:amazondevicemessaging:1.0.1'

}

Другие вопросы по тегам