自己搞了一个 aar,并在一个开源库中使用。
https://github.com/befovy/fijkplayer 双击 666 ✨
由于这个 aar 项目本身使用 NDK, 运行时需要查找一些 java class。一旦这些 java class 在 android 打包的时候被混淆,运行时就会报错。
所以需要在 proguard 文件中 keep 一些 java class。但虽然我在 aar 项目打包时 keep 了必要的 java class,但防不住用户 app 打包时对这些 java class 再次混淆。 之前我的办法就是在文档中提示用户,混淆时要加上一些 keep。但还是很多人不看文档,不断上报此类 issue。
最近我发现一个终极解决办法。 在 aar gradle 中加入 consumerProguardFiles,然后 aar 库项目就会把 proguard 文件打包到 aar 输出中,app 项目用到这中 aar,会在打包时自动应用 aar 中自带的 proguard 文件。完美解决了此类问题。
具体解决方案。
aar 项目中的 gradle 配置。
android {
defaultConfig {
consumerProguardFiles 'proguard-rules.pro'
}
}
aar 项目的 proguard-rules.pro 文件
-keep class tv.danmaku.ijk.media.player.** {
*;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.