原创文章转载请保留出处 http://blog.csdn.net/s278777851/article/details/9053985
一、mac上申请android签名
- cd ~/Android-sdk(进入android sdk目录)
- keytool -genseckey -v -keystore android-release-key.keystore(可改) -alias androidreleasekey(可改) -keyalg RSA --validity 10000(有效时间,可改)
1. 安装ant,下载地址 http://ant.apache.org/ ,
配置环境变量,把ant的bin目录加入 path即可。
export ANT_HOME=/Users/XXXXX/software/ant/apache-ant-1.9.1
export PATH=${PATH}:${ANT_HOME}/bin
命令行输入 ant -version查看ant版本,如果版本是mac自带的旧版本,右键Finder前往 /usr/share, 找到ant目录,重名成 ant_bak即可。
2.获取ant的build文件
控制台进入android-sdk/tools 目录,
./android update project --name projectName(项目名称) -t 5 -p /Users/xxxxx/Documents/workspace/projectName (项目本地路径)
执行后项目文件夹会有一个build.xml等文件。
在项目目录下新建ant.properties文件。内容为,
key.store=xxxx.keystore
key.alias=xxxxx
key.store.password=xxxxx
key.alias.password=xxxxx
3. 编译打包
控制台进入项目目录, 运行ant release(debug使用ant debug), 编译好以后生成的apk会放在bin目录里面
如果有使用lib项目, 把build.xml复制到lib项目去,修改下对应的project name即可。
4. 同时打包多个渠道
在ant.properties 文件末尾加上 market_channels=MMMarket,GFan,AppChina,91Assistant,NDuo,3G,MuMaYi,MyApp
在build.xml 文件的末尾加上
<property name="out.unaligned.dir" value="bin/${ant.project.name}_release"/>
<property name="xml.temp.folder" value="bin/temp"></property>
<mkdir dir="${out.unaligned.dir}" />
<target name="modify_update_file" >
<echo>*********************** make channel ${channel}</echo>
<replaceregexp
byline="false"
encoding="utf-8"
file="AndroidManifest.xml"
match="channel_value"
replace="${channel}" />
<property name="out.unaligned.file" location="${out.unaligned.dir}/${ant.project.name}_release_${channel}.apk" />
</target>
<target name="make_one_channels" depends="savemanifest, modify_update_file, release, replacemanifest, delete_temp_folder"
description="description" >
</target>
<target name="replacemanifest" >
<echo>*********************** replacemanifest</echo>
<delete file="${basedir}\AndroidManifest.xml" />
<copy encoding="utf-8" file="${xml.temp.folder}\AndroidManifest.xml"
todir="${basedir}" />
</target>
<target name="savemanifest" >
<echo>*********************** savemanifest</echo>
<copy encoding="utf-8" file="${basedir}\AndroidManifest.xml" todir="${xml.temp.folder}" />
</target>
<target name="deletebin" >
<delete dir="${basedir}\bin" />
</target>
<target name="delete_temp_folder">
<delete dir="${xml.temp.folder}"></delete>
</target>
<taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach" classpath="libs\ant-contrib-1.0b3.jar" />
<target name="make_channels" >
<foreach delimiter="," list="${market_channels}" param="channel" target="make_one_channels" ></foreach>
</target>
添加支持ant循环的jar包ant-contrib,下载连接 http://pan.baidu.com/share/link?shareid=3559837426&uk=2201015946
运行 ant make_channels.
参考文档:http://developer.android.com/tools/building/building-cmdline.html#ReleaseMode