如何自定义开源aar代码文件?

How to Customise Open source aar code files?

技术 : Android

我需要自定义的AAR : Exoplayer2

我做的:在build.gradle中包含了aar依赖,还有我要自定义的文件,从源码里拿出来,放到将它们放入与其 AAR 完全相同的文件夹结构中,并在这些文件中进行必要的更改。

我卡住的地方: 当我 运行 调试构建时,它工作正常但是当我尝试进行发布构建时它给我以下错误。

(Can't read [com] (Can't read [google] (Can't read [android] (Can't read [exoplayer2] (Can't read [ext] (Can't read [ima] (Can't read [ImaAdsLoader$Builder.class] (Duplicate jar entry [com/google/android/exoplayer2/ext/ima/ImaAdsLoader$Builder.class])))))))))

下面是我的调试和发布构建配置:

release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), '../proguard-rules.txt'
            release {
                signingConfig signingConfigs.release
            }
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), '../proguard-rules.txt'
            signingConfig signingConfigs.debug
        }

我试图解决这个问题: 当我从那个特定的 exoplayer 模块源中获取一个完整的单个文件夹时,假设 xyz 所以我试图从 aar 依赖中排除这个文件夹但无法这样做。

此外,我假设包含该模块的完整源代码而不是包含那个 aar 那么问题将得到解决,但我担心该模块的 gradle 依赖项,我是否应该将其也包含在我的文件中build.gradle 手动 ?

请让我知道实现此目标的最佳方法!!

自定义Exoplayer2

A: 新自己的aar

您应该分叉存储库,将您的更改作为新提交并构建 + 发布到 maven 存储库。

B:包含为代码

或者删除 aar 依赖项,将分叉的 Exoplayer2 存储库作为 git 子模块添加到您的存储库中。进行更改并提交分叉并更新指向主存储库中子模块的指针

例子

你可以看一个运行例子https://github.com/hannesa2/cwac-saferoom?organization=hannesa2&organization=hannesa2 在这里,我完全按照选项 #1 发布了更改后的库 https://jitpack.io/#hannesa2/cwac-saferoom 在这里你可以看到,如何包含你的新库