在 Android Studio 的子模块上在运行时删除 jar

Remove jar during runtime on Sub-Module in Android Studio

我有三个 build.gradle 文件用于项目 (project build.gradle),一个用于主模块 (main build.gradle),一个用于另一个子模块 (submodule [=] 54=])

我的子模块 build.gradle 使用 ADM(亚马逊设备消息传递)。因此附加了以下依赖项。

使用提供的对主要 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')
    }
    

注意:我也将 provided 更改为 providedlibs 之类的自定义内容,但它仍然不起作用

  1. 将以下内容添加到 子模块 build.gradle 文件(仍然是运行时异常)

    android.libraryVariants.all { 
    variant -> variant.packageLibrary.exclude( 'ext_libs/amazon-device-messaging-1.0.1.jar' )
    }
    
  2. 将以下内容添加到 子模块 build.gradle 文件(我什至不能用这个 fellah 编译 - 我猜它也会在构建过程中删除)

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

有效的方法是将依赖项添加到 Maven 存储库并将其包含在具有提供的依赖项的库中

  1. 在 Maven 本地存储库中添加 ADM jar。

命令:

            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 存储库作为项目依赖项:

在主 Gradle 构建脚本中添加“mavenLocal()”:

            allprojects {
            repositories {
                            mavenCentral()
                            mavenLocal()
             }
  1. Link ADM 项目中的 Maven 工件。

在下面添加行 ADMWrapperLib Gradle 脚本 (::)。

依赖项 { 编译文件树(目录:'libs',包括:'*.jar')

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

}