您当前的位置: 首页 >  gradle

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android应用构建:16:使用gradle和Android SDK镜像构建安卓应用

发布时间:2019-12-22 06:11:47 ,浏览量:0

在这里插入图片描述 这篇文章以Android SDK 26.1.1 和gradle 6.0.1为例,介绍如何安卓应用构建的容器化方式,前面文章介绍了gradle wrapper的使用方式,而本文方式则是固定gradle版本在镜像之中的方式,如果需要变动直接调整镜像的FROM生成新的构建镜像即可。

Dockerfile
###############################################################################
#
#IMAGE:   Android SDK
#VERSION: 26.1.1
#         Gradle: 6.0.1
#         JDK     1.8
#
###############################################################################
FROM liumiaocn/gradle:jdk8.6.0.1

###############################################################################
#MAINTAINER
###############################################################################
MAINTAINER LiuMiao 

###############################################################################
#ENVIRONMENT VARS
###############################################################################
ENV ANDROID_HOME /usr/local/android
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools

###############################################################################
# install gradle 
###############################################################################
ARG SDK_ZIP_FILE=sdk-tools-linux-4333796.zip
ARG SDK_TOOLS_URL=https://dl.google.com/android/repository/${SDK_ZIP_FILE}
RUN set -o errexit -o nounset       \
    && wget ${SDK_TOOLS_URL}        \
    && unzip ${SDK_ZIP_FILE}        \
    && mkdir -p ${ANDROID_HOME}     \
    && mv tools ${ANDROID_HOME}     \
    && cd ${ANDROID_HOME}/tools/bin \
    && mkdir -p /root/.android      \
    && touch /root/.android/repositories.cfg \
    && yes | sdkmanager --licenses  \
    && ./sdkmanager platform-tools "platforms;android-29" "build-tools;29.0.2"

Dockerfile说明:

  • 在前文SDK的镜像构建方法之中已经说明:https://liumiaocn.blog.csdn.net/article/details/103640872
  • FROM:是唯一的不同之处,前面SDK镜像只是用OPENJDK作为基础镜像,而本文示例则使用Gradle 6.0.1的镜像作为基础镜像。
镜像下载

下载命令:docker pull liumiaocn/android:sdk.26.1.1.gradle.6.0.1

版本确认
liumiaocn:android liumiao$ docker run --rm liumiaocn/android:sdk.26.1.1.gradle.6.0.1 gradle --version

------------------------------------------------------------
Gradle 6.0.1
------------------------------------------------------------

Build time:   2019-11-18 20:25:01 UTC
Revision:     fad121066a68c4701acd362daf4287a7c309a0f5

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_232 (AdoptOpenJDK 25.232-b09)
OS:           Linux 4.9.184-linuxkit amd64

liumiaocn:android liumiao$
Demo应用

此镜像与前文的gradlew使用方式的镜像有所区别,gradlew更像是一个带着gradle安装程序的配置文件方式,所以需要一个包含gradlew配置的工程在镜像之中,本文的镜像更为纯粹,就是Android工程的构建环境:Android SDK + Gradle,所使用的代码工程如下所示:

  • https://github.com/liumiaocn/easypack/tree/master/containers/standard/android/Demo
apk构建

使用时通过-v将待构建的内容挂载到容器中,然后执行构建即可

liumiaocn:Demo liumiao$ ls
Demo.iml		build.gradle		gradle.properties	gradlew.bat		local.properties
app			gradle			gradlew			keyReleaseV2.jks	settings.gradle
liumiaocn:Demo liumiao$ find . -type f |grep apk
liumiaocn:Demo liumiao$ docker run --rm -v `pwd`:/data/Demo liumiaocn/android:sdk.26.1.1.gradle.6.0.1 gradle -b /data/Demo/build.gradle assembleRelease
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :app:preBuild UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:checkReleaseManifest
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseBuildConfig
> Task :app:javaPreCompileRelease
> Task :app:mainApkListPersistenceRelease
> Task :app:generateReleaseResValues
> Task :app:generateReleaseResources
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:processReleaseManifest
> Task :app:mergeReleaseResources
> Task :app:processReleaseResources
> Task :app:compileReleaseJavaWithJavac
> Task :app:compileReleaseSources
> Task :app:prepareLintJar

> Task :app:lintVitalRelease
Calling mockable JAR artifact transform to create file: /home/gradle/.gradle/caches/transforms-2/files-2.1/9b93ae36d1d5a1d11f3fe6311b0e3a13/android.jar with input /usr/local/android/platforms/android-29/android.jar

> Task :app:checkReleaseDuplicateClasses
> Task :app:transformClassesWithDexBuilderForRelease
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders
> Task :app:generateReleaseAssets
> Task :app:mergeReleaseAssets
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:validateSigningRelease
> Task :app:signingConfigWriterRelease
> Task :app:mergeExtDexRelease
> Task :app:mergeReleaseJniLibFolders
> Task :app:mergeReleaseNativeLibs
> Task :app:stripReleaseDebugSymbols
> Task :app:mergeReleaseJavaResource
> Task :app:mergeDexRelease
> Task :app:packageRelease
> Task :app:assembleRelease

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 2m 2s
26 actionable tasks: 26 executed
liumiaocn:Demo liumiao$ 
liumiaocn:Demo liumiao$ find . -type f |grep apk
./app/build/intermediates/apk_list/release/mainApkListPersistenceRelease/apk-list.gson
./app/build/outputs/apk/release/output.json
./app/build/outputs/apk/release/app-release.apk
liumiaocn:Demo liumiao$
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

1.8691s