Fastlane-Android(持续集成+渠道分发)

简介: fastlane对Android平台支持实在有限,15个核心工具中仅有2个是用于Android平台的,其中: 1.Supply是用于上传APK文件和同步Meta信息到Google Play商店(类似iOS的Deliver) 2.Screengrab是用于生成各种屏幕尺寸的截屏,然后上传这些截屏到Google Play商店 以上都是我粘贴的。

fastlane对Android平台支持实在有限,15个核心工具中仅有2个是用于Android平台的,其中:

1.Supply是用于上传APK文件和同步Meta信息到Google Play商店(类似iOS的Deliver)

2.Screengrab是用于生成各种屏幕尺寸的截屏,然后上传这些截屏到Google Play商店

以上都是我粘贴的。。。

所以说,对于我们国内的Android开发来说,P用没有。。。其实在持续分发上面,Android本身没有像iOS那样多的签名、证书等复杂的管理,基本上构建出一个apk安装包就能直接安装并使用,所以也不能都怪人家FASTLANE了,但是,FASTLANE本身支持自定义action与plugin的编写,这就提供了一个很自由的拓展平台,我们可以根据自定义一些action或plugin来实现一些操作。这里我们主要用FASTLANE来解决持续集成构建+渠道号写入(重签名)的问题:

首先,先看一下FASTLANE的安装环境以及其他要求:

1.Ruby 2.0以上(注意是“以上”不包括2.0,安装最新版本最好)

2.Gradle(版本一定要与RD开发使用的版本一致,避免在编译过程中由于gradle版本不一致导致编译问题)

3.Android SDK、Java环境变量

4.APP项目工程代码(直接Git拉取)

5.渠道号打包工具

一、FASTLANE项目工程初始化

打开终端,切到Android工程目录,命令行 fastlane init,这时会有几条信息需要你确认:

1.Do you have everything commited in version control? If not please do so now!(是否已经将所有内容提交到版本控制了,如果没有尽快完成),选择Y

2.Package Name (com.krausefx.app)(输入包名):输入你项目的包名即可

3.Do you plan on uploading metadata, screenshots and builds to Google Play using fastlane?(是否上传Meta信息,截屏等到Google Play),选择N

完成以上几部之后,基本初始化就完成了,这时会在工程目录下发现这个文件夹:

image2017-12-11%2011%3A42%3A4.png?versio


第一眼看到这个的时候可能会有这种感觉,这啥?这就是FASTLANE?我要怎么运行?image2017-12-11%2014%3A45%3A32.png?versi

首先,我们看看这个目录下的两个文件:Appfile、fastfile

appfile:它定义了您的应用程序全局的配置信息;

fastfile:它定义了驱动器的行为的“通道” FASTLANE;(官方文档Google直译)

简单点来说,appfile是放置配置参数的地方,fastfile则是存放我们需要运行的fastlane的命令行内容的文件,除了这两个文件,还有一个action文件夹,这里用来存放我们自定义的action(后面再介绍)。

二、FASTLANE命令执行

我们在使用fastlane执行命令的时候就用 fastlane XXX(命令名)的方式来执行,例如:fastlane beta,这条命令是通过fastlane来实现Android Rlease包的构建,编辑fastfile文件,如图:

image2017-12-11%2015%3A29%3A23.png?versi

这时不难发现,刚才执行的fastlane beta,其实就是执行fastfile中的一个lane,也就是说,通过在fastfile中添加并编写lane的内容,就可以去帮我们完成各种操作,而且,还有一点就是这一行:sh "your_script.sh",这说明fastlane是支持在lane中使用shell命令并执行shell脚本的(鼓掌)

常用的fastlane命令:


fastlane actions: 列出所有可用fastlane活动
fastlane action [action_name]: 显示一个更详细的活动描述
fastlane lanes: 列出所有可用lanes (有描述)
fastlane list: 列出所有可用lanes (没有描述)
fastlane new_action: 在fastlane创建一个活动(集成)

细心的同学可能还会注意到before_all这一类的lane,这个是FASTLANE自带的生命周期,如下

fastlane生命周期


执行顺序
方法名
说明
1 before_all 在执行 lane 之前只执行一次
2 before_each 每次执行 lane 之前都会执行一次
3 lane 自定义的任务
4 after_each 每次执行 lane 之后都会执行一次
5 after_all 在执行 lane 成功结束之后执行一次
6 error 在执行上述情况任意环境报错都会中止并执行一次

定义一个带参的lane:通过 option[:configuration] 取其中value,如图

image2017-12-11%2017%3A26%3A8.png?versio

再举一个例子,如下:

image2017-12-12%2015%3A10%3A27.png?versi

第一个框中内容为定义参数,由外部传参,第二个框则是自定义编写的action的调用,括号内为传入的参数,整体完成的操作就是git pull拉取代码,gradle clean、gradle assembleRelease构建Android包,最后add_channels_to_apk为自定义对生成的产物进行渠道号写入操作。前面说过,这里使用FASTLANE主要就是为了解决打包+渠道号写入的问题,到这里是不是就解决了?很遗憾...并没有,且看后面说明。

三、Android包构建+渠道号写入操作

渠道号的写入方式有很多种,有对apk文件后缀修改信息的方式、也有对apk解压后新增文件后再重签名的方式,但这两种方法在安全方面是不符合我们的要求的,所以我们采用的是通过修改apk解压后的assets文件夹目录下的channel文件内容后再进行重签名的方法,虽然略微低效,但是胜在安全。

1.首先是构建Android Release包,以现有的lane为基础,修改lane beta,注释掉 crashlytics这一行(这个是做上传信息到frabric crash信息统计平台的功能)在工程目录下执行命令 直接执行fastlane beta,开始构建Android apk,构建完成后会提示产物apk存放路径--./app/build/outputs/apk/

2.完成构建后接下来就是最后的一步操作,写入渠道号了,正如之前介绍的,fastlane里面是支持执行shell脚本的,所以结合我们现有的渠道包打包工具(见之前高源的分享–Android包重签名与渠道号),可以直接在lane中定义操作,完成打包后的渠道号写入操作,重新定义一个lane,照样命名为do_package_apk:


image2017-12-11%2019%3A13%3A53.png?versi

然后依然是在工程目录下执行命令:fastlane do_package_apk,接下来只需要在电脑前默默地看着fastlane给你秀就好了

PS..写得有点简陋,其实后面两句完全可以再封装成一个lane,然后再调用即可,后续优化 []~( ̄▽ ̄)~*

由于我们最终交付的渠道包有副标题要求,所以要构建几个不同的apk,如果要RD每次更改代码(项目中的AndroidManifest.xml文件)再提交再构建会很影响效率,所以QA可以在本地代码更新后,直接修改本地代码,然后执行构建操作,so我在这里取消了git pull的操作,避免代码冲突引起git报错问题。

相关文章
|
4月前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
14天前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
64 1
|
11天前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
61 0
|
11天前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
25 0
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
全面解析TensorFlow Lite:从模型转换到Android应用集成,教你如何在移动设备上轻松部署轻量级机器学习模型,实现高效本地推理
【8月更文挑战第31天】本文通过技术综述介绍了如何使用TensorFlow Lite将机器学习模型部署至移动设备。从创建、训练模型开始,详细演示了模型向TensorFlow Lite格式的转换过程,并指导如何在Android应用中集成该模型以实现预测功能,突显了TensorFlow Lite在资源受限环境中的优势及灵活性。
32 0
|
3月前
|
Android开发
39. 【Android教程】触摸事件分发
39. 【Android教程】触摸事件分发
31 2
|
4月前
|
Java 开发工具 Android开发
Android mk 集成app
Android mk 集成app
41 5
|
3月前
|
文字识别 Android开发 C++
Tesseract OCR集成Android Studio实现OCR识别
Tesseract OCR集成Android Studio实现OCR识别
169 0
|
4月前
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
79 1
|
4月前
|
安全 Android开发 iOS开发
构建未来:安卓与iOS的无缝集成技术探索
【5月更文挑战第20天】随着智能设备的普及和技术的不断进步,安卓和iOS两大操作系统之间的界限正在逐渐模糊。本文将深入探讨如何通过最新的API、框架和工具实现安卓与iOS应用的无缝集成,以及这一趋势对开发者和用户的潜在影响。我们将从技术可行性、安全性挑战、用户体验优化等角度出发,分析当前的发展状况,并展望未来可能的技术融合路径。