gradle打包android注意事项
生成签名
keytool -genkey -alias duanyiwen -keyalg RSA -validity 20000 -keystore duanyiwen.jks
- 密码相关:dyiwen
- 组织相关:dyiwen
- 配置文件:
./app/build.gradle
android {
compileSdkVersion 26
signingConfigs {
config {
keyAlias 'dyiwen'
keyPassword 'dyiwen.com'
storeFile file('/root/dyiwen.jks')
storePassword 'dyiwen.com'
}
}
...
gradle切国内源
- 注释代理:(如果配置)
- 配置国内源
- change:
./build.gradle
,注释jcenter()
加入maven两行改为阿里源。
- change:
Dockerfile
FROM gradle:jdk8-slim
MAINTAINER duanyiwen dyiwen@aliyun.com
ENV ANDROID_HOME=/opt/app/android-sdk
ENV ANDROID_TOOLS=/opt/app/android-sdk-tools
ENV REPO_OS_OVERRIDE=linux
ENV JAVA_HOME=/usr/local/openjdk-8
ENV JRE_HOME=/usr/local/openjdk-8/jre
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$ANDROID_TOOLS/tools/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
USER root
#配置apt国内源,网易的debian
#RUN echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" > /etc/apt/sources.list && \
#echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
#echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
#echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
#
#RUN apt-get update && \
#apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 && \
#mkdir -p /root/.android/ && touch /root/.android/repositories.cfg
RUN mkdir -p /root/.android/ && touch /root/.android/repositories.cfg && \
mkdir -p ${ANDROID_HOME} && mkdir -p ${ANDROID_TOOLS}
WORKDIR /home/workspace
#android sdk 命令行工具 https://developer.android.google.cn/studio?hl=zh_cn#downloads
ADD commandlinetools-linux-6200805_latest.tar ${ANDROID_TOOLS}
# 安装sdk
#RUN /opt/app/android_sdk/tools/bin/sdkmanager "build-tools;26.0.3" --sdk_root=${ANDROID_HOME} && \
# /opt/app/android_sdk/tools/bin/sdkmanager "platforms;android-26" --sdk_root=${ANDROID_HOME}
# 生成签名
RUN keytool -genkey -alias dyiwen -keyalg RSA -validity 20000 -keystore /root/dyiwen.jks -storepass dyiwen.com -keypass dyiwen.com -dname "CN=dyiwen,OU=dyiwen,O=dyiwen,L=dyiwen,ST=dyiwen,C=dyiwen" && \
apt-get clean && apt-get autoclean
docker-compose
version: '3.1'
services:
verdaccio:
image: registry.cn-hangzhou.aliyuncs.com/dyiwen-common/gradle:jdk8-slim-self
container_name: android-work
restart: always
# networks:
# - node-network
# environment:
# - VERDACCIO_PORT=4873
# ports:
# - "4873:4873"
network_mode: "host"
volumes:
- "./android-sdk:/opt/app/android-sdk"#sdk版本安装目录,持久化
- "./gradle:/home/gradle"#缓存
- "./workspace:/home/"
- "./.gradle:/root/.gradle"#gradle缓存
logging:
driver: "json-file"
options:
max-size: "20m"
max-file: "1"
- 安装sdk不同版本环境
docker exec android-work sh -c "yes | sdkmanager 'build-tools;26.0.3' --sdk_root=/opt/app/android-sdk"
docker exec android-work sh -c "yes | sdkmanager 'platforms;android-26' --sdk_root=/opt/app/android-sdk"
- 集成命令
- 打包:
docker exec android_work sh -c "cd 项目名称 && ./gradlew aR"
- 打包:
打包命令
./gradlew clean clean项目
./gradlew build 构建项目
/gradlew assembleDebug or /gradlew aD 编译并打Debug包
./gradlew assembleRelease or /gradlew aR 编译并打Release的包
./gradlew installRelease or /gradlew iR Release模式打包并安装
./gradlew installDebug or /gradlew iD Debug模式打包并安装
./gradlew uninstallRelease or ./gradlew uR 卸载Release模式包
./gradlew uninstallDebug or ./gradlew uD 卸载Debug模式包
GradleDaemon(守护进程)
Gradle 启动比较耗时,Gradle 通过守护进程解决该问题。
- JVM 自身的优化,JVM自带有运行时代码优化功能,通过反复构建5-10次可以获得最优的运行速度;
- 资源缓存;
通过这种方式可以将构建构建时间降低 15-75%. - 禁用
echo "org.gradle.daemon=false" >> USER_HOME/.gradle/gradle.properties
结论:GradleDaemon守护进程有助于提升多次构建的速度,大概节省了25s的启动速度。但守护进程会一致占用约1.05G的内存空间。对于没有频繁构建安卓需求,对构建效率需求较低的服务器上建议关闭守护进程。