Android中用ANT打包如何将内容复制到AndroidManifest文件中
现公司有一需求,需要在不同的渠道下面有一个单独的XML文件,里面是渠道商代码中需要添加到AndroidManifest.xml文件中,求问用ANT打包时如何将这些内容替换...
现公司有一需求,需要在不同的渠道下面有一个单独的XML文件,里面是渠道商代码中需要添加到AndroidManifest.xml文件中,求问用ANT打包时如何将这些内容替换AndroidManifest.xml中的空节点或者复制到AndroidManifest.xml指定位置。
需要添加的内容如下(这是渠道商单独的xml文件):
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_SMS" />
<meta-data
android:name="QHOPENSDK_APPID"
android:value="200793576" >
</meta-data>
<meta-data
android:name="QHOPENSDK_APPKEY"
android:value="2288993e4041b44971f5219d0b9cbd90" >
</meta-data>
<meta-data
android:name="QHOPENSDK_PRIVATEKEY"
android:value="b6185a24078cb8b04d92c5e918f79f37" >
</meta-data>
<meta-data
android:name="QHOPENSDK_CHANNEL"
android:value="default" >
</meta-data>
<activity
android:name="cn.paypalm.jar.game360.InitialAct"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="behind"
android:theme="@style/FloatingWindowStyle"
android:windowSoftInputMode="stateAlwaysHidden" >
</activity>
只有十分了,各位如若知道,还忘不吝赐教。
感谢两位的答复,我已经用一个java程序搞定了,在ANT中调用JAVA程序中的main方法,然后签到想要的效果。贴上代码:
<target name="run_java_main" description="generator structure pictures">
<java classpath="E:/workspace/PackageAnt/bin" classname="com.mas.test.TestAntA" fork="true">
<!--main函数中传入的参数-->
<arg value="${out.root.resource.path.resource}"/>
<arg value="${app.source.path}"/>
<arg value="${sdkName}"/>
</java>
</target>
其中main方法中的数组保存的数据就是这里传入的参数。直接在main方法中取用即可,这里也可以不传参数。 展开
需要添加的内容如下(这是渠道商单独的xml文件):
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_SMS" />
<meta-data
android:name="QHOPENSDK_APPID"
android:value="200793576" >
</meta-data>
<meta-data
android:name="QHOPENSDK_APPKEY"
android:value="2288993e4041b44971f5219d0b9cbd90" >
</meta-data>
<meta-data
android:name="QHOPENSDK_PRIVATEKEY"
android:value="b6185a24078cb8b04d92c5e918f79f37" >
</meta-data>
<meta-data
android:name="QHOPENSDK_CHANNEL"
android:value="default" >
</meta-data>
<activity
android:name="cn.paypalm.jar.game360.InitialAct"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="behind"
android:theme="@style/FloatingWindowStyle"
android:windowSoftInputMode="stateAlwaysHidden" >
</activity>
只有十分了,各位如若知道,还忘不吝赐教。
感谢两位的答复,我已经用一个java程序搞定了,在ANT中调用JAVA程序中的main方法,然后签到想要的效果。贴上代码:
<target name="run_java_main" description="generator structure pictures">
<java classpath="E:/workspace/PackageAnt/bin" classname="com.mas.test.TestAntA" fork="true">
<!--main函数中传入的参数-->
<arg value="${out.root.resource.path.resource}"/>
<arg value="${app.source.path}"/>
<arg value="${sdkName}"/>
</java>
</target>
其中main方法中的数组保存的数据就是这里传入的参数。直接在main方法中取用即可,这里也可以不传参数。 展开
3个回答
展开全部
看这么的行不行。分析下
首先。android是支持自动构建的对吧。也就有一套逻辑自持把你的工程目录下的那些所有文件打包成apk文件。就是sdk\tools\ant目录下那个build.xml的作用。他有一个主文件是公共的一般只是引入即可。还有作为辅助的ant.properties 保存本地信息内容的
其中这个主文件他是通过路径的方法找到项目的AndroidManifest文件的
名字的引用(build.xml中的一段)
<property name="manifest.file" value="AndroidManifest.xml" />
目标的指向
<!-- get the project manifest package -->
<xpath input="${manifest.abs.file}"
expression="/manifest/@package" output="project.app.package" />
这样就能知道ant的工作原理和步骤。
-》定位项目跟目录。-》找到AndroidManifest文件等等。-》根据自己的逻辑去组织编译代码还有打包混淆等等操作。
其中可以从“找到AndroidManifest文件”这一步出手。想办法控制这个引用是你能分配的。以任务的形式来管理。
其中一个方法是,准备n个版本的AndroidManifest文件 然后通过target任务来决定某次编译具体使用你做的N个中的哪一个。这是简洁算是取巧方法
另外一个方法是。你把所有的ant编译过程通过调试(xml代码也可以调试,断点跟踪)来弄明白每个任务的具体含义。然后通过改写的手段来diy你自己的build 这是最彻底最有知识量的方法。也就不用那么多n版本的AndroidManifest,通过replace某个字段值即可
首先。android是支持自动构建的对吧。也就有一套逻辑自持把你的工程目录下的那些所有文件打包成apk文件。就是sdk\tools\ant目录下那个build.xml的作用。他有一个主文件是公共的一般只是引入即可。还有作为辅助的ant.properties 保存本地信息内容的
其中这个主文件他是通过路径的方法找到项目的AndroidManifest文件的
名字的引用(build.xml中的一段)
<property name="manifest.file" value="AndroidManifest.xml" />
目标的指向
<!-- get the project manifest package -->
<xpath input="${manifest.abs.file}"
expression="/manifest/@package" output="project.app.package" />
这样就能知道ant的工作原理和步骤。
-》定位项目跟目录。-》找到AndroidManifest文件等等。-》根据自己的逻辑去组织编译代码还有打包混淆等等操作。
其中可以从“找到AndroidManifest文件”这一步出手。想办法控制这个引用是你能分配的。以任务的形式来管理。
其中一个方法是,准备n个版本的AndroidManifest文件 然后通过target任务来决定某次编译具体使用你做的N个中的哪一个。这是简洁算是取巧方法
另外一个方法是。你把所有的ant编译过程通过调试(xml代码也可以调试,断点跟踪)来弄明白每个任务的具体含义。然后通过改写的手段来diy你自己的build 这是最彻底最有知识量的方法。也就不用那么多n版本的AndroidManifest,通过replace某个字段值即可
展开全部
抱歉,我也不会从 ant 里面去修改,给你个目前我在用的变通的方法。
用 sh 脚本(linux/cygwin)或者 批处理(Windows),先修改想要修改的东西,再调用 ant build
想要对文件做什么修改,就直接在脚本中完成了
用 sh 脚本(linux/cygwin)或者 批处理(Windows),先修改想要修改的东西,再调用 ant build
想要对文件做什么修改,就直接在脚本中完成了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这能做到么。。
坐等高手
坐等高手
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询