《Gradle for Android》笔记(8):CI和高级自定义构建

cover

CI和Gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Emulator Management: Create, Start and Wait before_script:
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-skin -no-audio -no-window &
# 等待模拟器启动
- android-wait-for-emulator
# 解锁
- adb shell input keyevent 82 &
```

### 减少Apk体积
* 启用**ProGuard**:`minifyEnabled true`
* ProGuard:[Android ProGuard](https://developer.android.com/studio/build/shrink-code.html)
* 启用**Resource Shrinking**:`shrinkResources = true`
* 查看Resource Shrinking效果,执行`shrinkReleaseResources`任务。
```groovy
gradlew :app:shrinkReleaseResources
  • 详细信息,info参数

    1
    gradlew clean assembleRelease --info
  • 使用keep.xml文件手动保留资源。/res/raw目录下,会自动清理。

    1
    2
    <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/keep_me,@layout/also_used_*"/>
  • 根据资源类型(比如:语言、屏幕密度)指定需要保留的资源

    1
    2
    3
    4
    5
    6
    7
    8
    android {
    defaultConfig {
    // 语言
    resConfigs "en", "da", "nl"
    // 屏幕密度
    resConfigs "hdpi", "xhdpi", "xxhdpi", "xxxhdpi"
    }
    }

加速构建

  • org.gradle.parallel=true,使用并行进程构建。
  • org.gradle.daemon=true,启用后台守护进程,复用进程,第二次及之后不需要进程启动时间。Android Studio默认打开,但是命令行内默认是关闭的。进程启动之后,3小时空闲会自动关闭,适合短时间内频繁执行Gradle任务的场景。
  • org.gradle.jvmargs=-Xms256m -Xmx1024m,JVM参数。支持这些单位:kmg
  • org.gradle.configureondemand,在Configuration阶段,只处理和即将执行的Task相关的Module。用于有很多Module的项目。
  • ~/.gradle目录下可以进行全局配置
  • —profile参数让Gradle在执行Task时生成时间统计。目录build/reports/profile
  • 忽略Lint错误:abortOnError false,不建议

Ant & Gradle

NR

分割Apk

NR

其他文章