在我的.aar中捆绑第三方库

时间:2016-03-21 16:32:48

标签: android jar android-gradle exoplayer aar

我正在构建一个用于音乐流媒体的Android库。它有ExoPlayer作为依赖(优秀的库btw!)。

我们将这个库用于我们现在正在开发的另一个项目,在Xamarin中。目前,我们需要添加两个库(我的.aar和.jar用于ExoPlayer)。说实话,这有点烦人,我喜欢把我的.aar放进去,然后去。

所以有两个问题:

  1. 有没有办法可以将我的.aar中的ExoPlayer捆绑在一起,使用gradle和stuff? (我在这里相当初学者,请尽快)
  2. 我意识到它可能不是最好的事情(依赖应该由app管理,等等等等),但实际上我们每次更新前者时都会一直测试ExoPlayer和我的lib。那么有一个强有力的理由我不应该在我的lib中捆绑ExoPlayer,或者那样可以吗?
  3. 这是我当前的gradle文件。没什么好看的。但是当我将初始应用程序转换为lib时,也许有些奇怪的东西,谁知道......

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            minSdkVersion 19
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile ('com.google.android.exoplayer:exoplayer:r1.5.6')
        testCompile 'junit:junit:4.12'
        testCompile 'org.mockito:mockito-core:1.10.19'
        compile 'com.android.support:appcompat-v7:23.2.0'
    }
    

1 个答案:

答案 0 :(得分:1)

在解决this issue之前,还没有解决方案,但是对于某人来说,可行的替代方法是使用“导入.JAR / .AAR包”将.aar单独捆绑在一起,点击“新模块”。

enter image description here

这种方法的唯一问题是,您一次只能捆绑1个AAR,因此您需要为每个模块创建一个模块。


另一种方法是尝试使用 Mobbeel fat-aar插件,您可以在此处找到它:

https://github.com/Mobbeel/fataar-gradle-plugin

  

这是当前唯一支持Android Gradle Plugin 3.1.X的版本,跟踪here对AGP 3.2和3.3的支持。它支持更高级的功能,但并非所有功能都可以正常工作(您需要针对特定​​的用例尝试一下,看看它是否有效)