El servicio de distribución interna de PGYER es la plataforma líder en China para la distribución interna de aplicaciones móviles, dedicada a proporcionar un servicio de distribución interna de aplicaciones fácil de usar para desarrolladores móviles y usuarios de prueba.
La plataforma de servicios para desarrolladores de PGYER se compromete a proporcionar excelentes servicios para desarrolladores, resolviendo las diversas necesidades de los desarrolladores en todo el ciclo de vida del desarrollo.
Escanear para seguir
Cuenta oficial de WeChat de PGYER
Obtén las últimas noticias, beneficios oficiales, promociones y más
Centro de documentación de PGYER
这篇文章将会给大家介绍如何在 Android 项目上使用 Travis CI ,并发布签名 apk 到蒲公英。
Travis CI 是目前比较流行的持续集成工具之一,用来构建及测试在 Github 托管的代码,使用它可以极大的简化工作流程。Travis CI 产品分为:
注:本文中介绍的Demo是基于(Travis-ci.org)
需要在本地安装 Travis CI 命令工具。
确保本地系统配置 Ruby 1.9 以上版本:
ruby -v
安装Travis-CI (如果使用 Mac OS 最好先更新 Ruby 到最新版本,然后再安装)
gem install travis --no-rdoc --no-ri
验证 Travis 是否安装成功 (有版本输出则说明安装成功)
travis -v
1.8.8
通过Github账号登录Travis平台。Travis会自动同步Github账号上所有的开源项目。通过列表选择需要启动的项目。
.travis.yml
文件。这个文件用于说明 Travis-CI 需要处理的构建。 Travis-CI 本身提供基本的构建和支持语言,同时开发者可以通过.travis.yml
文件设置自己的构建操作,同时需要遵从 Travis-CI 自己规定的构建生命周期。具体可查阅这里
在完成 .travis.yml
定义后, 可以通过 travis lint [path to your .travis.yml]
命令验证这个文件语法是否正确性。如果正确会出现以下的提示:
配置 Android 工程基本模板,在 .travis.yml
中定义以下内容:
language: android #语言说明
jdk: oraclejdk8 #jdk版本
sudo: required #权限要求
env: #环境变量
global:
- ANDROID_API=26
- EMULATOR_API=21
- ANDROID_BUILD_TOOLS=26.0.2
- ADB_INSTALL_TIMEOUT=5 # minutes
android: #Android 环境要求
components:
- tools
- platform-tools
- build-tools-$ANDROID_BUILD_TOOLS
- android-$ANDROID_API
- android-$EMULATOR_API
- extra-google-m2repository
- extra-android-m2repository # 配置design 库
- addon-google_apis-google-19 # 配置google play services
- sys-img-armeabi-v7a-android-$ANDROID_API
- sys-img-armeabi-v7a-android-$EMULATOR_API
licenses: #内容许可添加
- android-sdk-preview-license-.+
- android-sdk-license-.+
- google-gdk-license-.+
注:这里的 Android 版本需要和你项目中的版本一致。如果在构建过程需要用到不同的 adnroid版本
或者 build-tool
版本,则都需要再此声明,否则 CI 会出现类似以下的错误:
可以设置缓存机制,这样可以保证规定的缓存文件不需要每次下载,提高每次构建的速度(可选); 但是如果在更好环境的基础配置的情况(比如更新gradle 版本等,建议先清除缓存再跑CI)
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache: #指定缓存目录
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
可以手动删除 Travis CI cache ,如下图:
启动模拟器(可选,只有在需要跑测试用到模拟器才添加)
注:这里规定的模拟器 android 版本需要在 .travis.yml
android
部分声明到相关的版本,否则在启动模拟器时会出现错误,停止构建。整个Travis-CI 的状态为 errored
。
before_script:
- echo no | android create avd --force -n test -t android-$EMULATOR_API --abi armeabi-v7a
- emulator -avd test -no-skin -no-audio -no-window &
- android-wait-for-emulator
如果模拟器的 andorid 版本未添加会报以下错误:
运行脚本
script:
- ./gradlew clean build connectedCheck -PdisablePreDex --stacktrace"
script:
- ./gradlew assembleRelease
创建apk签名文件(Android Studio -> Build -> Generate singed APK -> Create new)
生成一个.jks
文件
先使用 Github 账户登录 travis 命令
travis login # 根据提示依次输入项目所属 Github 的账户和密码
使用Travis 命令对签名文件加密。(这个加密后的文件需要放在项目的根目录一同上传到仓库)
travis encrypt-file [文件名].jks
会生成一个加密以后的文件 *.jks.enc
按照脚本提示将图中的命令添加到before_install
生命周期下:
before_install:
- openssl aes-256-cbc -K $encrypted_df44b3ae1834_key -iv $encrypted_df44b3ae1834_iv -in demo.jks.enc -out demo.jks -d
使用Travis 命令对签名文件中的参数加密。
travis encrypt storepass=YOUR_STORE_PASSWORD --add env.global
travis encrypt keypass=YOUR_KEY_PASSWORD --add env.global
命令生效以后会在.travis.yml
中 env: global:
中生成以下部分
注:同一个签名文件和秘钥,如果更改了 Github 所属人的地址,需要通过命令退出,再使用新的 Github 账户登录,重新生成所有的加密部分。
travis logout
travis login
配置Travis-CI 打包流程
after_success:
- cp $TRAVIS_BUILD_DIR/demo.jks $HOME
- cd app/build/outputs/apk/
- jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $HOME/demo.jks -storepass $storepass -keypass $keypass app-release-unsigned.apk demo #[ demo 是签名文件的key alias]
- jarsigner -verify app-release-unsigned.apk # 验证未签名的 apk
- "${ANDROID_HOME}/build-tools/24.0.2/zipalign -v 4 app-release-unsigned.apk yourapp.apk" # apk优化并重命名
在before_install
添加蒲公英上传脚本:
before_install:
- cd $TRAVIS_BUILD_DIR
- wget -c https://raw.githubusercontent.com/Pgyer/TravisFile/master/pgyer_upload.sh
-O pgyer_upload.sh
- chmod +x pgyer_upload.sh
在after_script
添加上传步骤:
after_script:
- set -e
- $TRAVIS_BUILD_DIR/pgyer_upload.sh "${TRAVIS_BUILD_DIR}/app/build/outputs/apk/release/<apk名称>" <蒲公英 API_KEY>
蒲公英的 API_KEY 可以通过这里查看 本篇分享的 Demo 已经上传Github,欢迎大家浏览,地址是:https://github.com/Pgyer/TravisUploadAndroidDemo 。
本文内容是 Android 项目使用 Travis CI简单的教程 。上传蒲公英的部分,单独使用脚本上传签名好的 apk 是由于在参数错误等的情况下,单纯使用 curl
命令会使 Travis CI 认为构建是正确,整个构建返回结果是 passed
,实际上并没有完成上传蒲公英的步骤。而在脚本中我们处理了比较常见的情况,并且根据不同结果做出不同的命令结果,这样就能使Travis CI 完整有效的返回整个集成的状态。
希望本文对各位有所帮助,同时欢迎指正。
Acerca de nosotros
Servicios de productos
Su información de cuenta está siendo auditada, por lo que no puede utilizar esta función temporalmente; puede:
Consultar la documentación de ayuda para conocer los métodos de operación comunes en la plataforma PGYER;
Consulte las Normas de revisión de aplicaciones de PGYER antes de cargar la aplicación.
Actualmente no ha completado la verificación de identidad, el límite de descargas por versión es de 0 veces al día, después de la verificación de identidad se puede extender a 500 veces al día
La función de publicación de TestFlight actualmente solo está disponible para usuarios de la versión profesional. (Haga clic para conocer los planes de precios de PGYER)
支付成功
Grupo de usuarios VIP de PGYER
Abra WeChat - Escanee y únase al grupo de chat