任务中遇到的难题
1.SDK项目多模块,编译后每个模块自己生成了1个jar包。但是需求是只对外发布一个jar包,需要进行合并多个jar包。
2.生成的jar包中因为模块引入了百度地图定位导致jar包内有不需要的asset文件杂项。
3.多模块的混淆问题。
解决方案每个模块在编译之后都会在XXX/build/intermediates/bundles/release/classes.jar 路径下生成jar包使用如下脚本可协助你合并多个jar包 (路径问题自己解决哈)
#!/bin/sh#进入输出目录cd output#清空输出目录rm -rf *#创建输出子目录mkdir tempmkdir release#定义sdk版本号version="1.0.0"#定义模块是否打包标识is_include_wifidao=trueis_include_location=trueis_include_interactive=trueis_include_wificonnect=true#省略其他...#解压所有release版本的jar包到temp目录中cd tempif $is_include_wifidao; then jar -xvf ../../wifidao/build/intermediates/bundles/release/classes.jarfiif $is_include_location; then jar -xvf ../../location/build/intermediates/bundles/release/classes.jarfiif $is_include_interactive; then jar -xvf ../../interactive/build/intermediates/bundles/release/classes.jarfiif $is_include_wificonnect; then jar -xvf ../../wificonnect/build/intermediates/bundles/release/classes.jarfi#压缩所有release版本的class文件到一个独立的jar包中jar -cvfM SDK_${version}_release.jar .#拷贝文件mv SDK_${version}_release.jar ../release#清空temp目录rm -rf *#删除temp目录cd ..rm -rf temp第二个问题解决方案,将第三方库 单独新建一个模块来存放,然后在引入隔绝需要打包的模块中直接引入第三方库。(因为发现AS中不会将其他模块的东西编译进另外一个模块得到的启发)
第三个问题,解决方案在合并为一个jar包之后,利用Android SDK自带的混淆工具将混淆配置导入,进行混淆。
需要注意:混淆时候记得导入依赖的第三方库/V4包/ Android SDK/
例如:Android SDK /usr/local/coding/env/android_sdk_linux/platforms/android-23/android.jarV4包 /home/lin/文档/git_repo/zhonglianSDK/output/support-v4-23.2.0-sources.jarvolley 百度地图定位gson 点底下Load configuration就可以导入 proguard-rules.pro文件 然后根据情况修改下即可,还可以保存配置~具体用法自己可以再查哈。