在Linux打包Android应用APK,并配置Jenkins构建

前言

安卓APP的开发小伙伴反应想要使用Jenkins来打包APK,代替其本地打包,因为会影响其使用。

于是就在本地环境先进行实践操作,这里就记录下。

资源列表

名称 资源类型 链接地址 备注
JDK11 JAVA环境 官网下载页面 Android SDK需使用11版本
Gradle 打包工具 官网下载页面 按自身项目要求下载所需版本
Android Command line tools Android工具 官网下载页面 下载Command line tools only 即可
Jenkins 任务工具 官网下载页面 自行安装

配置环境

JDK:

tar zxf jdk-11.0.17_linux-x64_bin.tar.gz -C /usr/local/
echo 'export JAVA_HOME=/usr/local/jdk-11.0.17' > /etc/profile.d/java.sh
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
source /etc/profile.d/java.sh
java -version

Gradle:

unzip -q gradle-7.2-bin.zip
mv gradle-7.2 /usr/local/
echo 'export PATH=$PATH:/usr/local/gradle-7.2/bin' > /etc/profile.d/gradle.sh
source /etc/profile.d/gradle.sh gradle -v

Android Command line tool:

unzip -q commandlinetools-linux-9477386_latest.zip 
mv cmdline-tools/ /usr/local/
mkdir /usr/local/android_sdk
echo 'export ANDROID_HOME=/usr/local/android_sdk' > /etc/profile.d/android.sh
echo 'export PATH=$PATH:/usr/local/cmdline-tools/bin' >> /etc/profile.d/android.sh
source /etc/profile.d/android.sh
sdkmanager --version --sdk_root=/usr/local/android_sdk

下载Android SDK:

sdkmanager --sdk_root=/usr/local/android_sdk "platform-tools" "build-tools;30.0.3" "platforms;android-31"

Tips:根据自身项目选择需要的SDK套件和版本。

其会先打印License Agreement,输入y接受即可开始下载。

直接打包

拉取开发上传的Demo代码,在本地进行打包测试:

cd /opt
git clone -b master http://192.168.2.12/android/jekins-test.git
cd jekins-test
gradle app:clean
gradle app:assembleRelease

修改使用本地Nexus库:

vim settings.gradle
...
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {  
            allowInsecureProtocol true
            url 'http://127.0.0.1:8081/repository/maven-public/'
            credentials {
               username 'admin'
               password 'yourpass'
            }
        }
    }
}
...

进行打包:

gradle app:clean
gradle app:assembleRelease

Tips: 第一次打包需要拉取依赖,需要些时间,这里我之前执行了下载,所以时间比较短;APK包生成的文件名和路径为项目中定义的。

发表评论

error: Content is protected !!