当前位置: 代码迷 >> Android >> 三、Ant apk多渠道打包
  详细解决方案

三、Ant apk多渠道打包

热度:15   发布时间:2016-04-28 04:43:41.0
Ant编译打包Android工程流程

一、Ant编译打包android工程步骤


二、Ant apk签名

1.keystore签名    定义自己的签名文件
生成keystore文件:keytool -genkey -alias android.keystore -keyalg RSA - validity 20000 -keystore android.keystore 
对应的java命令:jarsigner -verbose -keystore android.keystore -signedjar android_signed.apk android.apk
对应的ant脚本命令:
	<target name="sign">		<echo>Begin sign unobfuscated package...</echo>		<exec executable="${signer}" failonerror="true">			<arg value="-verbose" />			<arg value="-keystore" />			<arg value="${keystore}" />			<arg value="-storepass" />			<arg value="${store_pass}" />			<arg value="-keypass" />			<arg value="${key_pass}" />			<arg value="-signedjar" />			<arg value="${temp}\${file_name}_unobfs_signed.apk" />			<arg value="${temp}\${file_name}_unobfs.apk" />			<arg value="${key_name}" />		</exec>	</target>

<property name="keystore" value="${project_path}\pada_keystore_formal" />	<!-- 签名的密钥名称设置-->	<property name="key_name" value="padaapp" />	<!-- 签名的密码设置-->	<property name="key_pass" value="padaeaglenet" />	<!-- 签名的密码设置-->	<property name="store_pass" value="padaeaglenet" />

2.系统签名(platform.pk8 , platform.x509.pem)   有些应用需要系统签名,比如定义了sharedUserId="android.uid.system".
系统签名文件:platform.pk8 , platform.x509.pem
存放目录:build/target/product/security/
对应的java命令:java -jar SignApk.jar platform.x509.pem platform.pk8 app_unsigned.apk app_signed.apk
对应的ant脚本命令:
<exec executable="java" failonerror="true">            <arg value="-jar"/>            <arg value="${project.dir}/STBsign/signapk.jar"/>            <arg value="${project.dir}/STBsign/platform.x509.pem"/>            <arg value="${project.dir}/STBsign/platform.pk8"/>            <arg value="${buildtemp.dir}/unsigntest.apk"/>            <arg value="${buildtemp.dir}/TVJUSIGN.apk"/>        </exec> 


三、Ant apk多渠道打包

目前主流的多渠道打包方法是在AndroidManifest.xml中的Application下添加一个渠道元数据节点。比如,使用友盟统计,它配置AndroidManifest.XML添加下面代码:

      <meta-data
            android:name="UMENG_CHANNEL"
            android:value="channelcode" />

使用自动化方式替换channelcode的值,可以用正则表达式,代码如下:

<target name="alter_umeng_channel">
		<property name="umeng_channel" value="${public_umeng_channel}"/>		<echo> alter_umeng_channle_id... "${umeng_channel}" </echo>		 <replaceregexp file="${auto.project.tmp.dir}/AndroidManifest.xml"	           match="<meta\-data(\s+)android:name="UMENG_CHANNEL"(\s+)android:value="[a-zA-Z0-9]+""	           replace="<meta\-data android:name="UMENG_CHANNEL" android:value="${umeng_channel}""	        />	</target>




  相关解决方案