gradle使用同名aar

  项目使用腾讯云做直播,由于增加下载直播视频的需求须对直播SDK进行升级。二话不说先下载前版SDK,直接替换旧版本的,原本想的非常简单,文件替换了就可以用到新版SDK中的类,结果谁料怎么都找不到新增的类。由于腾讯SDK的demo使用gradle2.2.3版本,会生成 {module name}/build/intermediates/exploded-aar 目录,不存在这个问题,于是升级demo中的gradle版本后竟然也是同样的问题,原想将项目的gradle版本降至2.2.3,尝试后放弃,各种错误。

  遂想只要让android studio能成功爆破aar文件就可以解决问题,于是找到了方法:在项目的 gradle.properties 中添加 android.enableBuildCache=true 就可以生成 exploded-aar 目录,尝试未果再次放弃。该方法已不再适用gradle3.0.1,方向错误,停止前进就是进步,及时止损。

  后来发现gradle也有爆破aar,只不过是放在了 {user name}/.gradle/caches/transforms-1/files-1.1/{aar file name} 目录下,于是想删除以前爆破出来的aar文件,是不是就可以解决呢?说干就干,立马删除爆破出来的目录,重新build,定义一新版SDK中的对象,结果依然无法找到该类,但是编译可通过,这也能想通,毕竟新版SDK已经打包进去了。接下来就想到可能是gradle的缓存导致,动手新建项目引用同一包,结果问题依旧,于是修改aar包文件名,rebuild,奇迹出现了,证明的确是缓存导致。

  接下来就是清除缓存的问题,现在使用的是修改过文件名的aar包,直接在Studio的Terminal输入 gradlew build --refresh-dependencies 清理缓存后再把aar文件改回原来的名字,重新编译一切正常。

posted @ 2018-05-09 20:18  祁连山  阅读(388)  评论(0编辑  收藏  举报