ant自动打包脚本(二)

融合SDK ant自动打包脚本,可以循环打包,采用源工程(主工程)和依赖库的形式

<?xml version="1.0" encoding="UTF-8"?>
<project name="AndroidProjectBuild" default="build">

    
    
    <!-- ========================================本地环境配置============================ -->
    <!-- SDK版本号配置 -->
    <property file="project.properties" />
    
    <!-- Android SDK路径、项目路径、签名信息、渠道名在该文件中配置 -->
    <property file="build.properties" />
    
    <!-- 游戏参数配置文件 -->
    <import file="config.xml" optional="true" />
    
    <!-- SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值) -->  
    <property environment="env" />
    <condition property="sdk.dir" value="${env.ANDROID_HOME}">
        <isset property="env.ANDROID_HOME" />
    </condition>
    
    
    <!-- ========================================外部引用的插件============================= -->
    <!-- 插件包,循环方法 -->
    <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${ant.lib.dir}/ant-contrib-1.0b3.jar" /> 
    <!-- 自定义utils jar包,java代码用于辅助替换渠道参数 -->
    <property name="build-ant-utils" value="${ant.lib.dir}/build-ant-utils.jar"/>
    <!-- xmltask包 -->
    <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
    <!-- 安卓SDK自带插件包antlibs -->
    <taskdef resource="anttasks.properties" classpath="${sdk.dir}/tools/lib/ant-tasks.jar" />
    
		
	<!-- =======================================使用的安卓SDK工具路径============================== -->
    <!-- SDK指定平台目录 -->  
    <property name="sdk-platform-android" value="${sdk.dir}/platforms/android-22"/>  
    <!-- SDK中tools目录 -->  
    <property name="sdk-tools" value="${sdk.dir}/tools" />  
    <!-- SDK指定平台中tools目录 -->  
    <property name="sdk-build-tools-android" value="${sdk.dir}/build-tools/22.0.1" /> 
    
    <!-- 使用到的命令(当前系统为windows,如果系统为linux,可将.bat文件替换成相对应的命令) -->  
    <property name="aapt" value="${sdk-build-tools-android}/aapt" />  
    <property name="aidl" value="${sdk-build-tools-android}/aidl" />  
    <property name="dx" value="${sdk-build-tools-android}/dx.bat" />  
    <!--优化APK工具 Windows(改为 zipalign.exe)-->
	<property name="zipalign" value="${sdk-build-tools-android}/zipalign.exe" /> 
	<!-- sdklib -->
    <property name="sdklib" value="${sdk-tools}/lib/sdklib.jar" />  
    <!-- 签名工具 -->
    <!-- <property name="jarsigner" value="D:\jdk\JDK1.8_AnZhuangLuJing\jdk1.8.0_131\bin\jarsigner" /> -->  
    <!-- 编译需要的jar; 如果项目使用到地图服务则需要maps.jar -->  
    <property name="android-jar" value="${sdk-platform-android}/android.jar" />  
    <!-- 编译aidl文件所需的预处理框架文件framework.aidl -->  
    <property name="framework-aidl" value="${sdk-platform-android}/framework.aidl" />  
    <!-- <property name="aapt.ignore.assets" value="" /> -->
    <property name="aapt.ignore.assets" value="&lt;dir&gt;crunch:!.svn:!.git:.*:&lt;dir&gt;_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" />
    
  
  
    <!-- =======================================工程目录配置================================= -->
    <!-- 编译工程的路径 -->
    <property name="basedir" value="." />
    <!-- apk生成目录 -->  
    <property name="outdir-buildApk" value="${ant.dir}/buildApk" />
    
    <!-- java源文件目录 -->  
    <property name="project-src" value="${basedir}/src" />  
    <!-- 外部类库所在目录 -->  
    <property name="project-libs" value="${basedir}/libs" />  
    <!-- res资源文件目录 -->  
    <property name="project-res" value="${basedir}/res" /> 
    <!-- assets资源文件目录 -->  
    <property name="project-asset" value="${basedir}/assets" />  
    <!-- 生成R文件的相对目录 -->  
    <property name="project-gen" value="${basedir}/gen" />  
    <!-- 编译后的文件放置目录 -->  
    <property name="project-bin" value="${basedir}/bin" />  
    <!-- 清单文件 -->  
    <property name="project-manifest.xml" value="${basedir}/AndroidManifest.xml" /> 
    
  	<!-- bin目录下生成classes的目录 -->  
    <property name="bin-classes" value="${project-bin}/classes" />
    <!-- bin目录下的classes.dex相关变量 -->  
    <property name="bin-classes.dex" value="${project-bin}/classes.dex" />  
    <!-- bin目录下的经过aapt生成的资源包文件 -->  
    <property name="resources.ap_" value="resources.ap_" /> 
    <property name="library-resources.ap_" value="library-resources.ap_" /> 
    <!-- bin目录下的经过aapt生成的资源包文件 -->  
    <property name="bin-resources.ap_" value="${project-bin}/${resources.ap_}" /> 
    <property name="bin-library-resources.ap_" value="${project-bin}/${library-resources.ap_}" /> 
    <!-- bin目录下生成classes的目录 -->  
    <property name="bin-res" value="${project-bin}/res" />
    <!-- bin目录下的清单文件 -->  
    <property name="bin-manifest.xml" value="${project-bin}/AndroidManifest.xml" /> 
     
    <!-- 合并manifest开关 true为合并,false不合并 -->
    <property name="manifestmerger.enabled" value="true" />
    
    
    
    <!-- ====================================================开始打包============================================= -->
    <!-- 签名证书配置 -->
    <target name="init-sign">
        <echo>================================================start===============================================</echo>
        <echo>初始化签名证书配置</echo>
        <!--获取当前时间-->
		<tstamp>
	       <format property="TODAY_CN" pattern="yyyyMMdd_HHmmss" locale="zh"/>
	    </tstamp>
	    <!-- 证书文件 -->  
	    <property name="keystore-file" value="${ant.dir}/keystore/release.keystore" /> 
	    <!-- 未签名apk包 -->  
	    <property name="unsigned-package" value="${project-bin}/${game.appname}-unsigned.apk" />  
	    <!-- 已签名apk包 -->  
	    <property name="signed-package" value="${project-bin}/${game.appname}-.apk" />
	    <!-- 优化后最终生成的apk包 -->  
    	<property name="zip-signed-package" value="${outdir-buildApk}/${game.appname}_${channelname}_${TODAY_CN}.apk" />
    </target>
    
    
    <!-- 初始化依赖库配置 -->
    <target name="init-library" depends="init-sign">
        <echo>初始化依赖库配置</echo>
       	<!-- Library工程名 -->
	   	<property name="library-name" value="JGSDK_Channel_${channelname}" />
	   	<!-- Library工程路径 -->
	   	<property name="library-path" value="${ant.dir}/channel/${library-name}" />
	   	<!-- Library工程res文件路径 -->
	   	<property name="library-res" value="${library-path}/res" />
	   	<!-- Library工程src文件路径 -->
	   	<property name="library-src" value="${library-path}/src" />
	   	<!-- Library工程libs文件路径 -->
	   	<property name="library-libs" value="${library-path}/libs" />
	   	<!-- Library工程assets文件路径 -->
	   	<property name="library-assets" value="${library-path}/assets" />
	   	<!-- Library工程AndroidManifest.xml文件路径 -->
	   	<property name="library-manifest.xml" value="${library-path}/AndroidManifest.xml" />
	   	<!-- 依赖库配置,等同于eclipse工程中project.properties文件里“android.library.reference.1=../JgCommonChannel” -->
	   	<property name="android.library.reference.1" value="../channel/${library-name}"/> 
    </target>
    
    
    <!-- 初始化工作 -->  
    <target name="init" depends="init-library">  
        <echo>1、初始化</echo>  
        <!-- 加载项目属性,解析Android目标,库依赖项并用结果设置一些属性。 
        	  所有属性名称都作为参数以结束方式传递。-->
        <gettarget
                androidJarFileOut="project.target.android.jar"
                androidAidlFileOut="project.target.framework.aidl"
                bootClassPathOut="project.target.class.path"
                targetApiOut="project.target.apilevel"
                minSdkVersionOut="project.minSdkVersion" />
        <echo>   </echo>  
        <!-- 清楚本地bin gen文件 -->
        <delete dir="${project-bin}" />  
        <delete dir="${project-gen}" />
        <delete dir="${library-path}/bin" />  
        <delete dir="${library-path}/gen" />
        <mkdir dir="${project-bin}" />  
        <mkdir dir="${project-gen}" /> 
        <mkdir dir="${bin-classes}" /> 
        <mkdir dir="${bin-res}"/>
        <mkdir dir="${outdir-buildApk}" /> 
        
        <!-- 先备份一份主工程下的assets文件 -->
        <copy todir="assets1" overwrite="true">
            <fileset dir="assets"/>
        </copy>
        <!-- 复制依赖库的assets文件到主工程assets文件夹中,完成assets的合并 -->
        <copy todir="assets" overwrite="true">
            <fileset dir="${library-path}/assets"/>
        </copy>
    </target>  
    
    
    <!-- 合并依赖库清单文件 -->
    <target name="merge-library" depends="init">      
       	<echo>2、合并依赖库清单文件;当前依赖库: ${library-name} </echo>
   		<!-- 配置依赖dependency -->
      	<dependency
                libraryFolderPathOut="project.library.folder.path"
                libraryPackagesOut="project.library.packages"
                libraryManifestFilePathOut="project.library.manifest.file.path"
                libraryResFolderPathOut="project.library.res.folder.path"
                libraryBinAidlFolderPathOut="project.library.bin.aidl.folder.path"
                libraryRFilePathOut="project.library.bin.r.file.path"
                libraryNativeFolderPathOut="project.library.native.folder.path"
                jarLibraryPathOut="project.all.jars.path"
                targetApi="${project.target.apilevel}"
                renderscriptSupportMode="false"
                buildToolsFolder="false"
                renderscriptSupportLibsOut="project.rs.support.libs.path"
                verbose="true" />
        <!-- 合并mergemanifest -->
        <mergemanifest
                appManifest="${project-manifest.xml}"
                outManifest="${bin-manifest.xml}"
                enabled="${manifestmerger.enabled}">
                <library refid="project.library.manifest.file.path" />
        </mergemanifest>
        
        <!-- 调用获取渠道参数任务 -->
        <antcall target="${channelname}"></antcall>
	</target>
    
    <!-- 根据工程中的资源文件生成R.java文件 depends="merge-library"  -->  
    <target name="gen-R" depends="merge-library"> 
        <echo>4、生成R文件</echo>
        <exec executable="${aapt}" failonerror="true">  
            <arg value="package" />  
            <!-- <arg value="-f" /> -->  
            <arg value="-m" />  
            <arg value="-J" />  
            <arg value="${project-gen}" />  
            <arg value="-S" />  
            <arg value="${project-res}" />  
            <arg value="-S" />
         	<arg value="${library-res}" /> <!--  依赖库res的路径--> 
            <arg value="-A" />
            <arg value="${project-asset}" />
            <arg value="-A" />
            <arg value="${library-assets}" /><!-- 依赖库的assets资源路径 --> 
            <arg value="-M" />  
            <arg value="${bin-manifest.xml}" />  
            <arg value="--extra-packages" />
            <arg value="${library-name}" /><!-- 依赖库的包名 --> 
            <arg value="-I" />  
            <arg value="${android-jar}" /> 
            <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错--> 
        </exec>  
    </target>  
    
    
    <!-- 编译aidl文件 -->  
    <target name="aidl" depends="gen-R">  
        <echo>5、编译aidl文件</echo>  
        <apply executable="${aidl}" failonerror="true">  
            <!-- 指定预处理文件 -->  
            <arg value="-p${framework-aidl}"/>  
            <!-- aidl声明的目录 -->  
            <arg value="-I${project-src}"/>  
            <!-- 目标文件目录 -->  
            <arg value="-o${project-gen}"/>  
            <!-- 指定哪些文件需要编译 -->  
            <fileset dir="${project-src}">  
                <include name="**/*.aidl"/>  
            </fileset>  
        </apply>  
    </target> 
    
    
    <!-- 将工程中的java源文件编译成class文件 -->  
    <target name="compile" depends="aidl">  
        <echo>6、编译依赖库java文件</echo>  
        <javac encoding="utf-8" target="1.7" source="1.7" fork="true" srcdir="." destdir="${bin-classes}" bootclasspath="${android-jar}" includeantruntime="false">  
            <src path="${library-src}" />	<!-- 库应用源码 -->
        	<src path="${project-gen}" />	<!-- gen文件 -->
            <classpath>  
                <fileset dir="${project-libs}" includes="*.jar"/>  
                <fileset dir="${library-libs}" includes="*.jar"/>  <!-- 第三方jar包需要引用,用于辅助编译 -->
                <filelist>  
                    <file name="${android-maps-jar}"/>  
                </filelist>  
            </classpath>  
        </javac>  
        <echo>  </echo>  
        <echo>7、编译源工程java文件</echo>  
        <javac encoding="utf-8" target="1.7" source="1.7" fork="true" srcdir="." destdir="${bin-classes}" bootclasspath="${android-jar}" includeantruntime="false">  
            <src path="${project-src}" />	<!-- 工程源码 -->
        	<src path="${project-gen}" />	<!-- gen文件 -->
            <classpath>  
                <fileset dir="${project-libs}" includes="*.jar"/>  
                <fileset dir="${library-libs}" includes="*.jar"/>  <!-- 第三方jar包需要引用,用于辅助编译 -->
                <filelist>  
                    <file name="${android-maps-jar}"/>  
                </filelist>  
            </classpath>  
        </javac>  
    </target>  
    
    <!-- 将.class文件转化成.dex文件 -->  
    <target name="dex" depends="compile">  
        <echo>8、将class文件转化成dex文件</echo>  
        <exec executable="${dx}" failonerror="true">  
            <arg value="--dex" />  
            <!-- 输出dex文件 -->  
            <arg value="--output=${bin-classes.dex}" />  
            <!-- 要生成.dex文件的源classes和libraries -->  
            <arg value="${bin-classes}" />  
            <arg value="${project-libs}"/>
            <arg value="${library-libs}"/>
        </exec>  
    </target>   
    
    <!-- 更新预处理的PNG缓存 -->
    <target name="crunch">
        <echo>9.1、更新预处理的PNG缓存</echo> 
        <exec executable="${aapt}" taskName="crunch">
            <arg value="crunch" />
            <arg value="-v" />
            <arg value="-S" />
            <arg path="${project-res}" />
            <arg value="-C" />
            <arg path="${bin-res}" />
        </exec>
        
        <exec executable="${aapt}" taskName="crunch">
            <arg value="crunch" />
            <arg value="-v" />
            <arg value="-S" />
            <arg path="${library-res}" />
            <arg value="-C" />
            <arg path="${bin-res}" />
        </exec>
    </target>
    
    <!-- 将资源文件放进输出目录 -->  
    <target name="package-res-and-assets" depends="crunch">
        <echo>9.2、将资源文件放进输出目录</echo> 
        <aapt executable="${aapt}"
              command="package"
              manifest="${bin-manifest.xml}"
              assets="${project-asset}"
              androidjar="${android-jar}"
              apkfolder="${project-bin}"
              nocrunch="true"
              resourcefilename="${resources.ap_}"
              resourcefilter=""
              libraryResFolderPathRefid="project.library.res.folder.path"
              libraryPackagesRefid="project.library.packages"
              libraryRFileRefid="project.library.bin.r.file.path"
              previousBuildType="release"
              buildType="release"
              ignoreAssets="${aapt.ignore.assets}">
	          <res path="${bin-res}" />
	          <res path="${project-res}" />
	      </aapt>
    </target>
    
    <!-- 将资源文件放进输出目录 -->  
    <!-- <target name="package-res-and-assets" depends="crunch">  
        <echo>9.2、将资源文件放进输出目录</echo>  
        <exec executable="${aapt}" failonerror="true">  
            <arg value="package" />  
            <arg value="-f" />  
            <arg value="-M" />  
            <arg value="${bin-manifest.xml}" /> 
            <arg value="-S" />  
            <arg value="${bin-res}" />
            <arg value="-S" />  
            <arg value="${library-res}" />
            <arg value="-A" />  
            <arg value="${project-asset}" />  
            <arg value="-A" />
            <arg value="${library-assets}" /> 
            <arg value="-I" />  
            <arg value="${android-jar}" />  
            <arg value="-F" />  
            <arg value="${bin-resources.ap_}" />  
            <arg value="- -auto-add-overlay" />
        </exec>  
    </target>   -->
    
    
    <!-- 打包成未签名的apk -->  
    <target name="package" depends="dex,package-res-and-assets">  
	    <echo>10、打包成未签名的apk</echo>  
	    <java classpath="${sdklib}" classname="com.android.sdklib.build.ApkBuilderMain">    
	        <!-- 输出apk的路径 -->  
	        <arg value="${unsigned-package}" />  
	        <!-- u指创建未签名的包-->  
	        <arg value="-u" />  
	        <!-- 指定前资源压缩包路径res.zip文件路径 -->  
	        <arg value="-z" />  
	        <arg value="${bin-resources.ap_}" /> 
	        <!-- 前面已经生产的,要打包的dex压缩文件 -->  
	        <arg value="-f" />      
	        <arg value="${bin-classes.dex}" />  
	        <arg value="-rf" />  
	        <arg value="${project-src}" />
	        <!--引用的第三方jar以及其中的资源文件,按照一定的格式放置到apk文件夹中  -->  
	        <arg value="-rj" />  
	        <arg value="${project-libs}"/>
	        <arg value="-rj" />  
	        <arg value="${library-libs}"/>   
	        <!-- 将主项目libs下面的so库打包 -->  
	        <arg value="-nf" />  
	        <arg value="${project-libs}" /> 
	        <arg value="-nf" />  
	        <arg value="${library-libs}" /> 
	    </java>  
	</target>  
    
    
    <!-- 对apk进行签名 -->  
    <target name="jarsigner" depends="package">  
        <echo>11、对apk进行签名</echo>  
        <!-- 两种签名方式,这里采用signapk方式 -->
        <!-- <exec executable="${jarsigner}" failonerror="true"> 
            <arg value="-sigalg" />
			<arg value="SHA1withRSA" />
			<arg value="-digestalg" />
			<arg value="SHA1" />
            <arg value="-keystore" />  
            <arg value="${keystore-file}" />  签名证书
            <arg value="-storepass" />  
            <arg value="${keystore-pass}" />  证书密码
            <arg value="-keypass" />  
            <arg value="${keystore-alias-pass}" />  证书密码
            <arg value="-signedjar" />  
            <arg value="${signed-package}" />  签名后输出位置
            <arg value="${unsigned-package}"/>  
            不要忘了证书的别名  
            <arg value="${keystore-alias}"/>  
        </exec>  --> 
        
        <!-- signapk签名方式 -->
        <signapk
            input="${unsigned-package}"
            output="${signed-package}"
            keystore="${keystore-file}"
            storepass="${keystore-pass}"
            alias="${keystore-alias}"
            keypass="${keystore-alias-pass}"/>
    </target>  
    
    
    <!-- zipalign优化android程序 优化之前把main文件删除-->
	<target name="zipalign_sign" depends="jarsigner">
		<echo>12、 zipalign 优化</echo>
		<exec executable="${zipalign}" failonerror="true">
			<arg value="-v" />
			<arg value="-f" />
			<arg value="4" /> <!--4字节对齐的优化-->
			<arg value="${signed-package}" />
			<arg value="${zip-signed-package}" /> <!-- 优化后输出位置 -->
		</exec>
	</target>
    
	
    <!-- 打包成功,删除未签名的apk -->  
    <target name="delete_cache_apk" depends="zipalign_sign">  
        <echo>13、删除未签名的apk</echo>
        <delete file="${unsigned-package}"/> 
        <delete file="${signed-package}"/> 
        <!-- 删除第一步中主工程中合并后的assets文件夹 -->
       	<delete dir="assets" /> 
       	<!-- 将备份的assets1文件改名为assets -->
       	<move file="assets1" tofile="assets"/>
    </target>  
    
    <!-- 打包生成路径 -->
    <target name="release" depends="delete_cache_apk">  
        <echo>14、打包成功,apk路径:${zip-signed-package}</echo>
        <antcall target="update-back-packagename"/>
    </target>  
    
    
    <!-- 将工程中涉及修改包名的目录修改回默认的,以便下次打包 -->
    <target name="update-back-packagename">
        <echo>15、将工程中涉及修改包名的目录修改回默认的</echo>
        <!-- 获取项目清单包 -->
        <xpath input="${bin-manifest.xml}"
                expression="/manifest/@package" output="project.app.package.name" />
        <!-- 修改工程中引用到该类的包路径 -->
		<replaceregexp flags="g" encoding="UTF-8" byline="true">
	      	<regexp pattern="import(.*)${project.app.package.name}.R"/>
	        <substitution expression="import ${game.default.package.name}.R"/>
	        <fileset dir="${library-src}" includes="**/*.java"/>
	    </replaceregexp>
		<!-- 修改工程中所有类的package路径 -->
	    <replaceregexp flags="g" encoding="UTF-8" byline="true">
		    <regexp pattern="${project.app.package.name}"/>
		    <substitution expression="${game.default.package.name}"/>
		    <fileset dir="${library-src}" includes="**/*.java"/>
   		</replaceregexp>
   		
	    <!-- 判断当前打包的渠道为朋友玩渠道的话 -->
	    <condition property="condition-equals-pkgname2">  
             <equals arg1="${channelname}" arg2="pengyouwan" />  
        </condition>  
        <antcall target="replace-back-assest-params"/>  
    </target>
    

    <!-- ============================渠道参数替换================================== -->
    <!-- 修改应用程序的包名、应用名、渠道参数 -->
    <target name="replace-params">
        <echo>3、修改应用程序的包名、应用名、渠道参数</echo>
		<!-- 替换工程中的占位符包名,该操作直接修改的bin目录下的AndroidManifest.xml -->    
		<replaceregexp flags="g" encoding="UTF-8" byline="true">        
		    <regexp pattern="${game.default.package.name}"/>        
		    <substitution expression='${game.packge.name}'/>        
		    <fileset dir="${project-bin}" includes="AndroidManifest.xml"/>    
	    </replaceregexp>
	    <!-- 替换工程中java文件引用到R文件路径 -->
		<replaceregexp flags="g" encoding="UTF-8" byline="true">
	      	<regexp pattern="import(.*)${game.default.package.name}.R"/>
	        <substitution expression="import ${game.packge.name}.R"/>
	        <fileset dir="${library-src}" includes="**/*.java"/>
	    </replaceregexp>
		<!-- 替换工程中所有类的package路径 -->
	    <replaceregexp flags="g" encoding="UTF-8" byline="true">
		    <regexp pattern="${game.default.package.name}"/>
		    <substitution expression="${game.packge.name}"/>
		    <fileset dir="${library-src}" includes="**/*.java"/>
   		</replaceregexp>
        <!-- 修改工程包名package -->
        <xmltask source="${bin-manifest.xml}" dest="${bin-manifest.xml}" encoding="utf-8" >  
	        <attr path="//manifest" attr="package" value="${game.packge.name}" />  
    	</xmltask>
    	<!-- 修改版本号 -->
        <xmltask source="${bin-manifest.xml}" dest="${bin-manifest.xml}" encoding="utf-8" >  
	        <attr path="//manifest" attr="android:versionCode" value="${game.version.code}" />  
    	</xmltask>
    	<!-- 修改版本名称 -->
		<xmltask source="${bin-manifest.xml}" dest="${bin-manifest.xml}" encoding="utf-8" >  
	        <attr path="//manifest" attr="android:versionName" value="${game.version.name}" />  
    	</xmltask> 
    	<!-- 修改应用名 -->
		<xmltask source="${bin-manifest.xml}" dest="${bin-manifest.xml}" encoding="utf-8" >  
	        <attr path="//manifest/application" attr="android:label" value="${game.appname}.${channelname}" />  
    	</xmltask>
    	
		<!-- =================金刚参数============== -->
		<!-- 替换金刚gameID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_JGSDK_GAME_ID"
                replace="${jgsdk.game.id}"
                byline="true"/>
        <!-- 替换金刚secret -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_JGSDK_SECRCT"
                replace="${jgsdk.secret}"
                byline="true"/>
        <!-- 替换金刚渠道id -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_JGSDK_CHANNEL_ID"
                replace="${jgsdk.channel.id}"
                byline="true"/>
        <!-- 替换金刚域名 -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_JGSDK_ADDRESS"
                replace="${jgsdk.address}"
                byline="true"/>
        
        <!-- =================渠道参数============== -->
        <!-- 替换渠道SDK APP_ID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_APP_ID"
                replace="${channelsdk.app.id}"
                byline="true"/>
        <!-- 替换渠道SDK微信APP_ID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_WEIXIN_APP_ID"
                replace="${channelsdk.weixin.app.id}"
                byline="true"/>
        <!-- 替换渠道SDK APP_KEY -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_APP_KEY"
                replace="${channelsdk.app.key}"
                byline="true"/>
        <!-- 替换渠道SDK APP_SECRET -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_APP_SECRET"
                replace="${channelsdk.app.secret}"
                byline="true"/>
        <!-- 替换渠道SDK privatekey -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_PRIVATEKEY"
                replace="${channelsdk.private.key}"
                byline="true"/>
        <!-- 替换渠道SDK GAME_ID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_GAME_ID"
                replace="${channelsdk.game.id}"
                byline="true"/>
        <!-- 替换渠道SDK PAY_ID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_PAY_ID"
                replace="${channelsdk.pay.id}"
                byline="true"/>
        <!-- 替换渠道SDK LOGIN_ID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_LOGIN_ID"
                replace="${channelsdk.login.id}"
                byline="true"/>
        <!-- 替换渠道SDK LOGIN_KEY -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_LOGIN_KEY"
                replace="${channelsdk.login.key}"
                byline="true"/>
        <!-- 替换渠道SDK MERCHANT_ID -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SDK_MERCHANT_ID"
                replace="${channelsdk.merchant.id}"
                byline="true"/>
        <!-- 替换渠道SDK 服务器标识 -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_CHANNEL_SERVER_SEQ_NUM"
                replace="${channelsdk.server.seq.num}"
                byline="true"/>
        <!-- 修改开发模式,true调试模式,false正式 -->
        <replaceregexp file="${bin-manifest.xml}" encoding="UTF-8"
                match="DEFAULT_DEBUG"
                replace="${channelsdk.debug}"
                byline="true"/>
        
        
        <!-- 判断当前打包的渠道为朋友玩渠道的话 -->
	    <condition property="condition-equals-pkgname2">  
             <equals arg1="${channelname}" arg2="pengyouwan" />  
         </condition>  
	    <!-- 通过上面的判断结果来决定是否运行以下任务的逻辑 -->
        <antcall target="replace-assest-params"/>  
    </target>
    
    <!-- 辅助替换渠道参配的java代码,(目前有朋友玩渠道) -->
    <target name="replace-assest-params" if="condition-equals-pkgname2">
        <echo>3.1、替换assest下的配置文件里的参数为游戏的</echo>
		<java classname="ReplaceAssestParams" fork="true" failonerror="true" >
			<classpath>
				<pathelement path="${build-ant-utils}" />
			</classpath>
			<!-- 传入的参数,第一个是默认占位符,第二个gamekey,第三个要修改的配置文件路径,使用空格分开,
			这里调用的ReplaceAssestParams类,只处理三个参数 -->
		    <arg line="DEFAULT_GAME_KEY ${channelsdk.game.key} ${library-assets}"/>
		</java>
	</target>
    
    <!-- 将参配替换回原来的占位符的java代码,(目前有朋友玩渠道) -->
    <target name="replace-back-assest-params" if="condition-equals-pkgname2">
        <echo>3.2、替换assest下的配置文件里的参数为原始默认的</echo>
		<java classname="ReplaceBackAssestParams" fork="true" failonerror="true" >
			<classpath>
				<pathelement path="${build-ant-utils}" />
			</classpath>
			<!-- 传入的参数,要修改的配置文件路径,使用空格分开, -->
		    <arg line="${library-assets}"/>
		</java>
	</target>
    
    
    <!-- ================输入渠道名打包或者全部打包===================== -->
    <!-- 根据输入的渠道名打包 -->
    <target name="build">
        <echo>所有渠道名:${allchannelname}</echo>
        <input addproperty="channelname">请输入要打包的渠道名</input>
        <antcall target="release"/>
    </target>
    
    <!--全部打包 -->
    <target name="build-all">
        <foreach target="release" list="${allchannelname}" param="channelname" delimiter=",">
        </foreach>
    </target>
    
    
    
    
    
    
</project>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值