Gradle
- gradle+idea 快速上手
- idea+gradle 多模块项目创建教程入门例子
- W3Cschool Gradle 教程
- gradle 新的依赖方式 implementation、api、compileOnly
- Gradle User Manual
- gradle新的依赖方式你真的了解吗?
-
gradle 新的依赖关系:
gradle3.0或者以上版本 3.0之前(deprecated) 说明 作用 implementation compile gradle升级到3.0之后,新增了 implementation, 而compile 方式被标记为了deprecated, compile 在3.0之后仍然可以使用,但是 gradle 官方说会在 gradle 后续的某次重要升级后变为不可用. 如果我们使用了implementation方式来依赖项目的话,那么这个库就在编译时期,只对当前的module可见,对其他的module不可见,但是在运行使其是可见的,这种方式的好处是可以显著减少 build项目的时间,因为假如该依赖库有接口或者代码变动,那么Gradle只会去重新编译和它有直接依赖关系的module,也就是该库不存在传递性 api compile 同上 使用api方式来依赖项目或者库的话,那么这个库,在编译时期和运行时期都可以对其他module可见 compileOnly provided 3.0之后版本,使用compileOnly来替代provided 假如在项目中,对某些库你只是想要在编译时期使用,而在运行时期并不需要这个库,你可以使用这种方式! runtimeOnly apk 3.0之后,使用 runtinmeOnly来替代apk Gradle 在运行时会将该库添加到 build 的 output 中去 -
Android打包apk通过gradle脚本实现动态替换so库文件
在build.gradle文件中加入以下代码,实现打包apk动态替换so库文件:project.afterEvaluate { //动态替换so库文件,在执行packageRelease任务之前将armeabi-v7a目录下的所有so文件拷贝到armeabi目录 packageRelease.doFirst { delete{ delete 'build/intermediates/transforms/stripDebugSymbol/release/0/lib/armeabi' } copy{ from 'build/intermediates/transforms/stripDebugSymbol/release/0/lib/armeabi-v7a' into 'build/intermediates/transforms/stripDebugSymbol/release/0/lib/armeabi' include '*.so' } delete{ delete 'build/intermediates/transforms/mergeJniLibs/release/0/lib/armeabi' } copy{ from 'build/intermediates/transforms/mergeJniLibs/release/0/lib/armeabi-v7a' into 'build/intermediates/transforms/mergeJniLibs/release/0/lib/armeabi' include '*.so' } } }
网友评论