当前位置: 首页 > news >正文

老k频道网站入口权威网站建设公司

老k频道网站入口,权威网站建设公司,开发软件需要什么技术,ppt设计教程网基本介绍 Android应用的自动化打包是应用持续集成以及多渠道发布的基础。当前Android客户端自动化打包的主要有两种方式#xff0c;Ant和Maven。两种方式本质上都是调用Android SDK里面提供的工具#xff0c;不过各自有各自的特点。 1. Ant脚本 好处#xff1a;开发成本较低…基本介绍 Android应用的自动化打包是应用持续集成以及多渠道发布的基础。当前Android客户端自动化打包的主要有两种方式Ant和Maven。两种方式本质上都是调用Android SDK里面提供的工具不过各自有各自的特点。 1. Ant脚本 好处开发成本较低android sdk默认提供ant的打包脚本可以根据需要进行修改和扩展。 不足不天然支持包的依赖管理需要自己写代码控制应用的依赖。 2. Maven 好处天然支持包的依赖管理依赖管理不需要写过多的代码。Maven插件机制容易扩展和定制方便实现自己的打包流程。 不足从头编写Maven脚本或者maven插件大家对Maven的熟悉程度稍低门槛稍高。   这里介绍一种Antshell脚本的自动化打包方案。Ant脚本直接复用sdk提供的脚本并稍作扩展对应用的包依赖和打包流程自动化控制选择使用shell实现。   具体实施 打包整体逻辑 Shell脚本见源码感谢今为帮忙重构 Shell脚本实现了上图中的逻辑比较简单这里不再细述可以看一下源码。 Ant脚本定制 这里主要描述一下对Android自带ant脚本的定制。 Android SDK里面自带的ant脚本在~/android-sdk-linux_x86/tools/ant/build.xml如果你的Android主工程没有支持ant构建那么可以在主工程根目录下通过运行 android update project -p . –n projectname 来增加ant构建支持运行后会在根目录下生成build.xml通过import file${sdk.dir}/tools/ant/build.xml /继承自SDK中的build.xml SDK中的build.xml有release task包括了android打包的完成流程看代码如下 target namereleasedepends-set-release-mode, -release-obfuscation-check, -package, -post-package, -release-prompt-for-password, -release-nosign, -release-sign, -post-builddescriptionBuilds the application in release mode./target 由代码可见release任务依赖了8个其它的任务其实核心的任务就2个 l   -package 编译生成未签名APK l   -release-sign 签名 总结起来整个过程分解为编译生成未签名包和签名两个阶段。我们要做的就是在这两个阶段中增加一个替换渠道号的步骤如上图中描述主要过程核心流程 编译生成未签名包循环替换每个渠道号到未签名包循环针对替换后的未签名包生成签名包  步骤1和3其实就是原来release任务的分解代码如下 target namerelease2depends-set-release-mode, -package, -post-package, -release-prompt-for-password, -release-nosign, -post-builddescriptionBuilds the application in unsigned mode./target target namesignapkdepends-set-release-mode,-release-sign, -post-builddescriptionSign apk. Android应用根目录下自动生成的build继承自系统的ant脚本该脚本中的ant task可以直接复用因此有了上面自己写的两个任务release2和signapk分别表示了1和3阶段的任务。 步骤2的逻辑系统ant脚本里面没有现成的任务需要自己编写代码如下 target namemodichannelexec executable${aapt} taskNameremovearg valueremove /arg value-v /arg value./bin/${appname}-release-unsigned.apk /arg valueassets/channel //execexec executable${aapt} taskNameaddarg valueadd /arg value-v /arg value./bin/${appname}-release-unsigned.apk /arg valueassets/channel //exec/target 这个任务做了两件事儿第一调用android sdk的aapt工具先删除未签名包中的默认渠道文件第二添加新渠道文件到未签名包。注意这里一定要用android自带的aapt工具操作apk压缩包如果使用zip会对raw文件进行压缩这个似乎并不符合apk打包的规范aapt对raw文件的压缩有处理注对于zip和aapt压缩的区别并没有过多深入的了解有兴趣的可以进一步探讨导致打包出来的apk读取raw目录下的资源失败。   总结 整个打包流程代码量不大用shell实现打包流程控制扩展了三个ant task。用这种方案可以做到针对多渠道发布只需要一次编译多次渠道替换和签名因为android编译很耗时这样可以大大减少渠道的打包时间。   源码 http://code.taobao.org/p/android_build/src/ 问题 总的来说还是比较简单的当然整个过程也遇到了一些问题和雷区列举一下避免再次犯错也算经验积累。 需要了解ant的继承机制和任务依赖机制这个是这次改造的基础避免重复劳动直接复用android自带ant脚本中的任务。最纠结的过程是如何拆分release流程插入渠道替换逻辑。这个过程遇到的问题最多。其实最后总结下来拆分ant任务最简单的方式在于看这个任务的子任务是否有共同的上下文依赖比如运行时的环境变量依赖等等拆分到两个任务中的子任务之间最好不要有这种依赖否则运行起来会出现变量值错误的问题当然如果搞清楚整个流程也可以修改代码但是工作量比较大。对于apk压缩包的操作请使用android自带的aapt避免直接使用zip直接使用zip会将apk里面的raw资源压缩导致有些rom下读取raw文件失败。其实生成未签名包之后无需解压替换直接aapt操作压缩包替换就好了这样可以避免使用zip。 编写shell时当前路径要控制好否则会很麻烦错误不断。转载于:https://www.cnblogs.com/youngerbaby/archive/2013/05/18/3085548.html
http://www.sadfv.cn/news/148507/

相关文章:

  • 网站推广优化建设方案网站会员体系方案
  • 哪个网站可以建设网站上海黄页固定电话查询
  • 企业网站建设解决方案报告论文哪些网站可以做兼职设计师
  • 怎么查询网站备案接入商国内做的好的电商网站有哪些
  • 响应式网站多少价格池州建设网站
  • 青岛 网站制作公司如何选择合肥网站建设
  • 2015网站建设源码麻城网站设计
  • 手机网站专题网站团购功能怎么做
  • 网站模板设计教程上海免费注册公司官网
  • 菏泽网站建设制作网站建设和编程的区别
  • 呼市做网站的公司江西网站建设公司
  • 南浔区住房和城乡建设局网站WordPress电影评分模板
  • 网站搭建费用明细一个公司做两个网站的好处
  • 假冒中国建设银行的网站网站开发项目范围说明书意义
  • 网站经常被黑app开发免费
  • 建网站需要什么资质上海黄页企业名录电话
  • 环保设备网站源码推荐专业的网站建设公司
  • 作风建设活动网站外贸是做什么的工作
  • 常德网站建设网站优化教育视频培训网站建设
  • 运城建设厅官方网站上海建筑设计研究院有限公司招聘
  • 互联网网站基础设计师交流网站
  • 长治做网站哪家好云表无代码开发平台
  • 2018一级a做爰片免费网站湖北标书设计制作
  • 做家务的男人们在哪个网站播出中山网站seo关键词
  • 威海外贸网站建设多少钱长沙网络优化产品
  • 网站结构物理室内展厅设计公司
  • 机械网站建设注意什么软件工程学费
  • python毕业设计做网站承德网站建设价格
  • 重庆企业网站排名优化方法今天国际新闻最新消息10条
  • 网站使用方法镇江网站制作费用