mac os上android申请签名和使用ant自动编译打包签名apk

来源:互联网 发布:java开源oa办公系统 编辑:程序博客网 时间:2024/06/05 18:35
 原创文章转载请保留出处 http://blog.csdn.net/s278777851/article/details/9053985 

一、 mac上申请android 签名

cd ~/Android-sdk(进入android sdk目录)
keytool -genkey -v -keystore android-release-key.keystore(可改) -alias androidreleasekey(可改)  -keyalg RSA --validity 10000(有效时间,可改)
二、ant自动编译打包apk
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, 编译好以后生成的apk会放在bin目录里面

如果有使用lib项目, 把build.xml复制到lib项目去,修改下对应的project name即可。


2013.7.4 更新   ----------------------------------------------------------------------------------------------

4. 同时打包多个渠道

在ant.properties 文件末尾加上 market_channels=MMMarket,GFan,AppChina,91Assistant,NDuo,3G,MuMaYi,MyApp

在build.xml 文件的末尾加上 

[html] view plain copy
<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
0 0