Android中使用友盟时用Ant进行多渠道打包及相关问题

使用友盟更新,如果要进行多渠道监控,则需要打多个包,非常麻烦,使用Ant多渠道打包方式打包非常方便快捷。网上已有很多Ant多渠道打包的文章,打包过程可参照这两篇博客,讲的很详细,本文主要讲述打包过程中遇到的问题和注意事项,以及提供一份demo。
Ant基础打包过程
Ant多渠道打包

如果看完上述博客已经可以成功打包,则不需要看如下内容了,如果没有打包成功则需保证,通过ant release命令已经可以成功打成单独的包。本文以附件的demo为基础进行讲述,该demo依据上述文章完成。
如果要完成ant多渠道打包,需要四个文件。
1、build.xml
2、local.properties
3、ant.properties
4、custom_rules.xml
其中文件1、2在执行android update project –name AntTest -t android-17 -p ./命令后自动生成,文件3、4可从别处移植过来。

打包过程:
【1】导入循环打包所需的jar包:ant-contrib-1.0b3.jar,该包很多地方可以下载。
【重要】
(1)下载好该包后右键点击该jar文件选择“打开方式”WinRAR压缩文件管理器,依次打开
net/sf/antcontrib/antcontrib.properties,然后用#注释掉if=net.sf.antcontrib.logic.IfTask这一 行,这是因为ant-contrib中的if语句会与Android-SDK自带的if语句冲突,导致报错if doesn’t support the “condition”attribute,所以我们这里要注释掉ant-contrib中的if语句,只使用它的foreach语句。
(2)在某些配置文件中会写到该包的地址,默认为lib/ant-contrib-1.0b3.jar,而不是libs/ant-contrib-1.0b3.jar,最简单的做法是,在项目中新建一个lib文件夹,把该jar包放进去,然后右键该包手动执行Add to Build path操作。

【2】通过android update命令生成文件1、2。
【3】在demo中移植文件1、3、4覆盖到项目中。
【4】根据项目情况修改文件1、3中的内容。
文件3:
内容比较直观,可以直接查看文件中的注释,修改对应内容,如果在eclipse中注释显示成乱码或者\u751F\u6210\u76EE\u5F55的样子,可以通过其他工具如notepad++打开。
【注意】在修改路径时,如key.store=E:\anttest2的样式,反斜杠必须是两个,复制粘贴路径时,IDE会自动有一个escape backslashes in original string的地址,点击即可。另外所写的路径必须是存在的,如果不存在,系统不会默认新建。

文件1:

    name="AntTest"
 此处的内容,改为自己的项目名。
    <replaceregexp
            encoding="utf-8"
            file="AndroidManifest.xml"
            match="ANTS"        
            replace="${channel}" /> 
            和
    <replaceregexp
            encoding="utf-8"
            file="AndroidManifest.xml"
            match="${channel}"
            replace="ANTS" />
其中match="ANTS"和replace="ANTS"是在AndroidManifest.xml文件中友盟的默认渠道名称,对应
    <meta-data
            android:name="UMENG_CHANNEL"
            android:value="ANTS" />
中的value值,在循环打包中用于替换成指定渠道名。
    <copy tofile="${gos.path}/test_${channel}.apk" >
            <fileset
                dir="${out.absolute.dir}/"
                includes="AntTest-release.apk" />
 其中的includes="AntTest-release.apk"是临时apk文件,把-release之前的部分替换成自己的项目名称.

5、执行ant deploy命令完成多渠道打包。

【可能遇到的错误】
1、编译过程中
[taskdef] Could not load definitions from resource net/sf/antcontrib/antlib.xml. It could not be found.
忘记了导入ant-contrib-1.0b3.jar包。

2、编译过程中
D:\Android\sdk\tools\ant\build.xml:601: The following error occurred while executing this line:
D:\Android\sdk\tools\ant\build.xml:653: The following error occurred while executing this line:
D:\Android\sdk\tools\ant\build.xml:698: null returned: 1
在系统tool/ant/build.xml文件中赋值

<property name="aapt.ignore.assets" value="crunch" />

3、编译过程中
BUILD FAILED
E:\workspace_20150701\AntTest\build.xml:117: The following error occurred while
executing this line:
E:\workspace_20150701\AntTest\build.xml:148: Cannot perform operation from direc
tory to file.
上述build文件中的临时apk文件名错误或者其他路径错误

【注意事项】
1、友盟的更新机制,一个设备安装A渠道的apk后,如果卸载该apk换装另一个渠道B的apk,则在统计中仍然会被认定为A渠道,导致无法验证统计信息。解决方法是,在友盟中重新申请一个appkey,用该key进行打包验证即可。
2、编译过程中如果出现编码错误的警告,立即停止编译查看报警告的位置,该警告的存在可能影响到编译完的apk的显示,出现乱码,另外如果某个类被整个注释掉,可能出现编码错误的警告。

Demo地址

猜你喜欢

转载自blog.csdn.net/lwt675071503/article/details/47375695
今日推荐