欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

ant施用xmltask替换androidmanifest.xml文件中的配置

更新时间: 2014-01-05 02:01:47 责任编辑: Author_N1

 

Ant使用xmltask替换AndroidManifest.xml文件中的配置
  新的游戏项目上线后,接了很过国内的推广渠道的SDK,其中一个很繁琐的问题就是打包,每次升级版本都要打几十个包;如果人肉操作的话非常费劲,而且很容易出错。正好Android的SDK中也提供了ant来脚本化打包操作。所以就针对公司里游戏项目的结构对ant打包脚本,添加了些功能。将游戏中的所有可配置的内容全部整理build.properties文件中,比如说游戏中的日志开关,正式环境和测试环境的测试地址,渠道标记、版本号等等

  Ant本身提供了非常便捷灵活的扩展方式,所以有很多第三方的扩展包。xmltask就是一个非常方便的操作xml文件的扩展。http://sourceforge.net/projects/xmltask/

1、通过taskdef来引入xmltask
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>


2、 添加replace-manifest target
<target name="-replace-manifest" >
	<xmltask source="${basedir}/${manifest.file}" dest="${basedir}/${manifest.file}" encoding="utf-8" >
		<attr path="//manifest" attr="android:versionName" value="${project.versionname}" />
		<attr path="//manifest" attr="android:versionCode" value="${project.versioncode}" />
		<attr path="//manifest/application/meta-data[@android:name='usedSDK']" attr="android:value" value="${project.usedSDK}" />
		<attr path="//manifest/application/meta-data[@android:name='debugable']" attr="android:value" value="${project.debugable}" />
		<attr path="//manifest/application/meta-data[@android:name='usedEntirePack']" attr="android:value" value="${project.usedEntirePack}" />
		<attr path="//manifest/application/meta-data[@android:name='lazySetGLView']" attr="android:value" value="${project.lazySetGLView}" />
	</xmltask>
</target>

xmltask中的attr 标签中的path是通过xpath方式来定位到xml中节点的,关于xpath 可以查看官方文档[url]http://www.w3.org/TR/xpath/[url]

3、在java代码中获取AndroidManifest.xml文件中的配置
public class AppBase extends Application {

	@Override
	public void onCreate() {
		super.onCreate();
		Platform platform = new AZPlatform();
		try {
			ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),
					PackageManager.GET_META_DATA);

			Bundle meta = appInfo.metaData;
			platform.setDebugable(meta.getBoolean(DEBUGABLE_KEY, false));
			platform.setUsedSDK(meta.getInt(USED_SDK_KEY, 0));
			platform.setUsedEntirePack(meta.getBoolean(USED_ENTIRE_PACK_KEY, true));
			platform.setLazySetGLView(meta.getBoolean(LAZY_SET_GLVIEW_KEY, false));

			Cocos2dxHelper.PLATFORM_INST = platform;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
	}
}

Platform 是针对不同渠道做的一个单例模板类,设置完一些平台相关的配置后,注入到Cocos2dxHelper中,便于Cocos2dx的lib包中使用

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:01:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4727/
本文WWW.DOC100.NET DOC100.NET版权所有。