Android最新ant打包build脚本
来源:互联网 发布:哥伦比亚的倒影知乎 编辑:程序博客网 时间:2024/06/05 04:15
目前看到网上很多打包的文章,使用了apkbuilder之类的,如下:
<!-- 使用到的命令(当前系统为windows,如果系统为linux,可将.bat文件替换成相对应的命令) --> <property name="aapt" value="${sdk-platform-tools}/aapt" /> <property name="aidl" value="${sdk-platform-tools}/aidl" /> <property name="dx" value="${sdk-platform-tools}/dx.bat" /> <property name="apkbuilder" value="${sdk-tools}/apkbuilder.bat" /> <property name="jarsigner" value="${env.JAVA_HOME}/bin/jarsigner" /> <property name="zipalign" value="${sdk-tools}/zipalign.exe" />
其实这些东西在最新的sdk里面是没有的,很多朋友都表示不知道如何去写这个脚本文件。
闲话少说,直接上干货。
准备4个文件,ant.properties,local.properties,custom_rules.xml,build.xml[当然,前提是你的项目已经基于Ant构建了哈,如果不知道,就百度一下]
manifest文件里面的节点必须有:
<meta-data android:name="BaiduMobAd_CHANNEL" android:value="BaiduMobAd_CHANNEL_VALUE" > </meta-data>
第一:local.properties文件
# This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must *NOT* be checked into Version Control Systems,# as it contains information specific to your local configuration.# location of the SDK. This is only used by Ant# For customization when using a Version Control System, please read the# header note.sdk.dir=/Users/luffy/Documents/adt/sdkproject.dir=/Users/luffy/Documents/git/Test-android
第二:ant.properties文件
application.package=com.test.helloant.project.name=testjava.encoding=utf-8jar.libs.dir=libsbuild.first=falsemarket_channels=release,360Market,qqMarket,leMarket,gita2Marketkey.alias=testaliaskey.alias.password=test123456key.store.password=test123456key.store=/Users/luffy/Documents/test/test.keystoreant-contrib=/usr/share/locale/apache-ant-1.9.4/lib/ant-contrib-1.0b3.jarout.absolute.dir=/Users/luffy/Documents/version/testgos.path=/Users/luffy/Documents/versionapp_version=2.0.2这个主要要注意的是 ant-contrid ,它是用来循环打包的插件,如果在最新的ant里面没有,就去单独下载下来,放入ant的lib目录里
然后是out.absolute.dir,这是循环打包时,临时文件的存放路径
最后是gos.path 这是最终版本的存放路径。
第三:custom_rules.xml
<?xml version="1.0" encoding="UTF-8"?><!-- 渠道包打包脚本 ant deploy --><project name="custom_rules" > <taskdef resource="net/sf/antcontrib/antcontrib.properties" > <classpath> <pathelement location="${ant-contrib}" /> </classpath> </taskdef> <!-- 循环打包 --> <target name="deploy" > <antcall target="clean" /> <foreach delimiter="," list="${market_channels}" param="channel" target="modify_manifest" > </foreach> </target> <target name="modify_manifest" > <replaceregexp encoding="utf-8" file="AndroidManifest.xml" match="BaiduMobAd_CHANNEL_VALUE" replace="${channel}" /> <antcall target="release" /> <copy tofile="${gos.path}/${ant.project.name}_${channel}_v${app_version}.apk" > <fileset dir="${out.absolute.dir}/" includes="test-release.apk" /> </copy> <delete includeEmptyDirs="true" > <fileset dir="${out.absolute.dir}" includes="**/*" /> </delete> <replaceregexp encoding="utf-8" file="AndroidManifest.xml" match="${channel}" replace="BaiduMobAd_CHANNEL_VALUE" /> <echo message="===========================" /> </target></project>
第四:build.xml
<?xml version="1.0" encoding="UTF-8"?><project name="test" default="help" > <property file="local.properties" /> <property file="ant.properties" /> <loadproperties srcFile="project.properties" /> <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable." unless="sdk.dir" /> <import file="custom_rules.xml" optional="true" /> <import file="${sdk.dir}/tools/ant/build.xml" /></project>
然后我们整体来解读这两个xml文件,其中build比较简单,就是引入 local.properties,ant properties,custom_rules.xml 和 sdk里面自带的 build.xml
如果你对这个custom脚本文件表示看不懂,教你一个简单的办法。把每一个 target节点,当成java的一个method,方法调用!
我们来看看,里面其实只有两个 target :deploy 和 modify_manifest
那么我们可以这样来理解 deploy,它首先是'调用'了 clean方法来clean项目的缓存[bin目录] 和 执行一行 for循环代码。在for循环里面不断的‘调用’
modify_manifest 方法。
而 modify_manifest 首先用传递进来的渠道号 替换 manifest文件的 BaiduMobAd_CHANNEL_VALUE,然后调用 release 方法来生成apk。此时的apk是存放在临时目录里面,所以它又执行了一个copy代码,把临时目录里面的apk拷贝到另一个文件夹里面,然后再执行一个delete代码清空临时目录,最后再把 替换的渠道号还原为 BaiduMobAd_CHANNEL_VALUE。
最后我们在命令行里面执行 ant deploy 命令, 就可以同时生成多个渠道的包了
0 0
- Android最新ant打包build脚本
- Ant 编译、打包 build.xml 脚本模板
- android ant脚本打包apk
- Android ant 打包 ant -f build.xml release 出错
- 通过ant脚本,编译打包android工程
- Android脚本打包之ant语法
- 通过ant脚本,编译打包android工程
- 使用Android.bat生成ant打包脚本
- 通过ant脚本编译打包android工程
- 通过ant脚本编译打包android工程
- 通过ant脚本编译打包android工程
- 通过ant脚本,编译打包android工程
- 通过ant脚本,编译打包android工程
- 通过ant脚本,编译打包android工程
- Android项目中Ant打包脚本编写
- Android ant 脚本打包(一)
- 通过ant脚本,编译打包android工程
- [ANT] Ant脚本封装ndk-build命令并执行打包启动
- 阿里巴巴Dubbo实现的源码分析
- Android四大组件介绍
- 命令行中编译Java程序字符乱码问题
- 社説 20150309 東北の産業復興 自立支える官民連携が必要だ
- 数组-14. 数字加密(15)
- Android最新ant打包build脚本
- 利用Bamboo创建build plan-和github连接
- Java OCR tesseract 图像智能字符识别技术 Java代码实现(二)
- OSG Shader GLSL 4.3 使用纹理 例子
- 安卓第三记
- Android屏幕适配
- c_字符串_从string对象中去掉标点符号
- LinearLayout 对各种layout_width/height的展现
- 社説 20150309 自民党大会 1強に慢心せず改革断行せよ