如何自定义开源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 在这里你可以看到,如何包含你的新库
技术 : 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 在这里你可以看到,如何包含你的新库