新的游戏项目上线后,接了很过国内的推广渠道的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 可以查看官方文档
http://www.w3.org/TR/xpath/
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包中使用
分享到:
相关推荐
例如,下面的Ant任务将使用XPath选择器找到AndroidManifest.xml中的`<application>`标签,并添加一个新的属性: ```xml <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/> ...
3. **修改AndroidManifest.xml**:在AndroidManifest.xml中,定义一个占位符,如`${channel}" />`。xmltask会将这个占位符替换为当前渠道的ID。 4. **签名和打包**:在循环中,为每个渠道生成签名文件,然后使用`...
ant 自动化打包配置时需要,动态替换文件中特定的字符
你可以将xmltask.jar放在Ant的lib目录下,或者在你的构建脚本中使用`<classpath>`元素指定它的位置。例如: ```xml <path id="my.classpath"> <pathelement location="path/to/xmltask.jar"/> ``` 接下来,我们...
xmltask提供了作为Ant构建的一部分自动编辑XML文件的工具。 与Ant随附的标准过滤器任务不同,它是XML敏感的,但不需要您定义XSLT。
木偶Windows XML任务总览从先前导出的窗口创建Windows计划任务。...用法windows_xmltask {'My Task Name':ensure => present,overwrite => 'false',xmlfile => 'puppet:///config/soft/my_exported_task.xml',}执照
近几天在做一个小项目,需要使用ant编译并能够将SVN版本信息打包进所编译出的jar包,为此查了很多资料,总结如下: 1.运行环境需要安装ant并配置好环境变量(此点很重要,Eclipse自带的ant某些功能会受限报错) 2....
OEXMLParser是一个帮助器类,它允许简单灵活地解析 XML 文件,对 RSS 提要特别有用。 阅读下面的内容,看看它是多么简单和棒极了! 入门 您可以简单地创建一个 OEXMLParser 对象并将 XML 的源 URL 作为字符串传递给...