关于Ant打包APK的记录

最近工作中需要用Ant对Android工程进行打包生成apk文件,工作完成之后对Ant又有一些新的认识,遂记录在这里。

一、Ant集成svnant

Ant有很多第三方工具,这些工具扩展了Ant的功能,使用起来也十分方便。工作中需要用Ant从SVN检出工程所以使用到svnant。

1、svnant下载地址

http://subclipse.tigris.org/svnant.html

目前最新的版本是1.3.1

2、Ant集成svnant

首先是引入svnant的lib目录下的jar包

<!-- 将svnant的jar包加入到环境变量  -->
<path id="svnant.classpath">
<fileset dir="${svnantlib.dir}"><!-- dir表示svnant的lib目录所在位置  -->
<include name="**/*.jar"/>
</fileset>
</path>
其中svnantlib.dir配置在build.properties文件当中,指向svnant的lib目录的位置。

然后引入svn task文件。

<!-- 引用svn task文件,使svn功能可以使用-->
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath"/>
在svnant1.3.1版本,需要配置svn的Setting。

<!-- 设置svn属性  -->
<svnSetting id="svn.setting" svnkit="true" username="${svn.username}" password="${svn.password}"  javahl="false" />
其中svn.username、svn.password分别是svn账户和密码配置在build.properties文件当中。

环境配置完毕,就可以通过svnant对工程进行检出操作。

<!-- 检出代码-->
<target name="checkout">
<svn refid="svn.setting">  
         <checkout url="${svn.url}" revision="HEAD" destPath="${project-svn}"/><!-- 默认支持叠加检出 -->
</svn> 
</target>
使用svnant不仅能够检出工程,还能获得相应的svn信息,需要如下标签来获得检出工程的svn信息。

<info target="${project-svn}" /><!-- target表示要获得svn信息的目录,info标签表示svn信息  -->
通过上述过程,就能够从svn中检出项目, 并且获得对应项目的svn信息,比如其版本号,修改时间等等。

3、完整过程

<?xml version="1.0" encoding="utf-8"?>
<project name="svnant" basedir="." default="version-number">
<!-- 引入属性文件 -->
<property file="build.properties"/>
<!-- svn检出项目根目录 -->
<property name="project-svn" value="svnant" />


<!-- 将svnant的jar包加入到环境变量  -->
<path id="svnant.classpath">
<fileset dir="${svnantlib.dir}"><!-- dir表示svnant的lib目录所在位置  -->
<include name="**/*.jar"/>
</fileset>
</path>


<!-- 引用svn task文件,使svn功能可以使用-->
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath"/>


<!-- 设置svn属性  -->
<svnSetting id="svn.setting" svnkit="true" username="${svn.username}" password="${svn.password}"  javahl="false" />  


<!-- 检出代码-->
<target name="checkout">
<svn refid="svn.setting">  
          <checkout url="${svn.url}" revision="HEAD" destPath="${project-svn}"/><!-- 默认支持叠加检出 -->
  <info target="${project-svn}" /><!-- target表示要获得svn信息的目录,info标签表示svn信息  -->
        </svn> 
<echo message="checkout version is ${svn.info.lastRev} and the lastmodify is ${svn.info.lastDate}"/>
</target>


<!-- 获得指定目录SVN版本号  -->
<target name="version-number" depends="checkout">
<property name="svn-version" value="${svn.info.lastRev}" /><!-- 必须在检出工程之后才能得到信息  -->
<echo message="the svnversion is ${svn-version}"></echo>
</target>
</project>

4、build.properties属性文件

svn.url=svn地址
svn.username=用户名
svn.password=密码
svnantlib.dir=svnant的lib目录

5、svnant的doc

docdoc

svnant的doc,需要的时候可以做参考,这里主要用到checkout和info两个。



二、Ant集成xmltask

xmltask比Ant原生的replace具有更加强大的功能,使用xmltask能够对xml文件进行编辑,因为需要对清单文件进行编辑,所以使用到xmltask。

1、xmltask下载地址

http://sourceforge.net/projects/xmltask/

2、Ant集成xmltask

首先引入xmltask的jar包

<path id="xmltask.classpath">
	<fileset dir="${xmltasklib.dir}">
		<include name="**/*.jar"/>
	</fileset>
</path>  

然后定义一个xmltask

<taskdef name="xmltask" classpathref="xmltask.classpath" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>

然后就可以通过xmltask来操作XML文件,这里列出一些常用的操作

替换某个指定标签的属性的值


<replace path="//manifest/@android:versionCode" withText="xmltask_attr"/>
<!-- path采用XPath匹配 -->

xmltask采用的是XPath进行XML的匹配

向指定标签添加属性


<attr path="//manifest" attr="android:versionName" value="xmltask_name" />  

删除指定标签

<remove path="//manifest/application/activity[contains(@android:name, 'xml')]"/> 

向指定位置添加标签

<insert path="//manifest/application/activity" position="after">
<![CDATA[
		<activity>`
		</activity>
	]]>
</insert>
3、完整过程

<?xml version="1.0" encoding="utf-8"?>
<project name="xmltask" basedir="." default="xmltask">
	
	<!-- 引入属性文件 -->
	<property file="build.properties"/>

	<path id="xmltask.classpath">
		<fileset dir="${xmltasklib.dir}">
			<include name="**/*.jar"/>
		</fileset>
	</path>  

	<taskdef name="xmltask" classpathref="xmltask.classpath" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>

	<!-- xmltask操作xml  -->
	<target name="xmltask">	
		<xmltask source="AndroidManifest.xml" dest="AndroidManifest.xml" preserveType="true" encoding="UTF-8"> <!-- source表示要操作的xml,dest表示输出的目标xml -->
			<!-- 替换某个指定标签的属性的值 -->
			<replace path="//manifest/@android:versionCode" withText="xmltask_attr"/><!-- path采用XPath匹配 -->
			<!-- 向指定标签内添加属性 -->
			<attr path="//manifest" attr="android:versionName" value="xmltask_name" />  
			<!-- 删除指定标签:删除activity标签内android:name属性还有xml的activity的标签 -->
			<remove path="//manifest/application/activity[contains(@android:name, 'xml')]"/> 
			<!-- 向指定位置插入标签 -->
			<insert path="//manifest/application/activity" position="after">
			  <![CDATA[
				<activity>`
				</activity>
			  ]]>
			</insert>
		</xmltask>  
	</target>

</project>

4、build.properties属性文件

xmltasklib.dir=xmltaskjar包的位置

5、xmltask的doc

地址:http://www.oopsconsultancy.com/software/xmltask/index.html#examples



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是两种Python打包apk的方式: 1. 使用python-for-android打包apk 可以使用python-for-android工具为Android创建一个包。具体步骤如下: 1)安装依赖项 ```shell sudo apt-get update sudo apt-get install build-essential ccache git libncurses5:i386 libstdc++6:i386 zlib1g:i386 openjdk-8-jdk unzip ant ``` 2)安装python-for-android ```shell sudo pip install python-for-android ``` 3)创建一个新项目 ```shell p4a apk --private /path/to/your/project --package org.test.myapp --name "My Application" --version 0.1 --bootstrap=sdl2 ``` 其中,/path/to/your/project是你的项目路径,org.test.myapp是你的应用程序包名称,My Application是你的应用程序名称,0.1是你的应用程序版本号,sdl2是你的应用程序引导程序。 4)构建APK ```shell cd /path/to/your/project p4a apk --private . --package org.test.myapp --name "My Application" --version 0.1 --bootstrap=sdl2 --debug ``` 其中,--debug选项用于构建调试版本的APK。 2. 使用Buildozer打包apk 可以使用Buildozer工具自动完成整个过程。具体步骤如下: 1)安装依赖项 ```shell sudo apt-get update sudo apt-get install -y python3-pip build-essential git python3-setuptools libffi-dev ``` 2)安装Buildozer ```shell sudo pip3 install buildozer ``` 3)创建一个新项目 ```shell buildozer init ``` 4)编辑buildozer.spec文件 ```shell nano buildozer.spec ``` 在文件中设置应用程序名称、版本、包名、依赖项等。 5)构建APK ```shell buildozer android debug deploy run ``` 其中,debug选项用于构建调试版本的APK,deploy选项用于将APK部署到连接的设备上,run选项用于在设备上运行应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值