<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1.Jenkins环境搭建博客;http://my.oschina.net/u/930967/blog/299058</span>

2.生成build.xml方法:sdk/tools目录下输入命令行:android update project -p <工程目录>

3.工程根目录下创建ant.properties文件

key.store = key文件存放路径
key.alias = key的别名
key.store.password = key密码
key.alias.password = 别名密码

4.工程根目录下创建build_channels.xmll文件

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


    <import file="build.xml" />
    
    <!-- Packages the application. -->
    <target name="-just-package" depends="-package-resources">
	<package-helper />
    </target>


    <target name="build_one" depends="-set-mode-check, -set-release-mode, -release-obfuscation-check, -setup, -build-setup, -just-package, -release-prompt-for-password, -release-nosign, -release-sign" />


    <target name="build" depends="clean, release">
	<sequential>
	    <echo>Start build channels</echo>
	    <antcall target="build_one"/>
	</sequential>
    </target>
</project>
脚本中去掉编译和混淆的部分,简化打包流程,节省时间,打一个包5秒左右。

5.工程根目录下创建custom_rules.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules" default="deploy">
   
    <import file="build_channels.xml" />
    
    <!-- 循环打包使用ant-contrib-1.0b3.jar -->
    <taskdef resource="net/sf/antcontrib/antcontrib.properties" >
        <classpath>
            <pathelement location="ant-contrib-1.0b3.jar" />
        </classpath>
    </taskdef>

    <target name="deploy" >
        
        <!-- 先执行一次release打包,执行编译和混淆。后面的操作只是改变渠道名。简化打包流程 -->
        <antcall target="release" />
        
        <foreach
            delimiter=","
            list="${market_channels}"
            param="channel"
            target="modify_manifest" >
        </foreach>
    </target>
   
    <!--此处为替换AndroidManifest.xml中的渠道名,需要注意的是使用正则表达式一定要与AndroidManifest.xml中渠道名的格式一致否则替换不成功 -->
    <target name="modify_manifest" >
       <replaceregexp flags="g" byline="false" encoding="UTF-8"> 
        <regexp pattern="meta-data(.*?)\n(.*?)android:name="CHANNEL"(.*?)\n(.*?)android:value="(.*)"" /> 
            <substitution expression="meta-data${line.separator}android:name="CHANNEL"${line.separator}android:value="${channel}"" /> 
           <fileset
                dir="bin\"
                includes="AndroidManifest.xml" />
        </replaceregexp>
       
       <!-- 创建qudao目录用于专门存放渠道包 -->
       <mkdir dir="qudao"/>
      
        <property
            name="out.final.file"
            location="qudao\1.1.2_${channel}.apk" />

        <!-- 执行打包 -->
        <antcall target="build_one" />
        
    </target>

</project>
6.工程根目录下创建local.properties.xml

market_channels=91,zhushou,xiaomi 渠道名以逗号隔开

到此为止打渠道包所需的脚本都已经完成,下面是在Jenkins中如何进行配置。

7.配置需要执行的脚本和target


8.配置渠道名的输入,参数名是local.properties中的参数


9.构建时选择Build with Parameters












Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐