sti*_*mth 22 ant android version apk
通常我们使用命令在调试模式下构建android包
ant debug
Run Code Online (Sandbox Code Playgroud)
并得到apk文件名AppName-debug.apk.
有没有办法以AppName-debug-<version-number>.apk不使用'mv'命令直接生成apk文件?
谢谢.
cis*_*rns 38
我通过使用Android清单中的信息以自动方式完成此操作.
我的方法是修改本地项目ant build.xml文件以导入主build.xml文件的自定义副本,在最新版本的SDK中,导入到本地文件的主文件位于<SDK>/tools/ant/build.xml(在以前的版本中是android_rules.xml)注意项目本地import默认build.xml文件中的行.
build.xmlAndroid工具创建的本地评论包含有关如何进行自定义的详细信息,以便将来对工具的更新不会破坏您的更改.
在自定义规则文件中添加:
<xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/>
Run Code Online (Sandbox Code Playgroud)
这将清单读入一组ant属性,并带有自定义前缀以确保没有名称冲突.
然后,您可以将$ {mymanifest.manifest.android:versionName}添加到定义了apk名称的任何位置,只需.apk在自定义规则文件中搜索.
我已经使用此过程从构建服务器自动化版本控制文件.
通过一些额外的调整,还可以自动签署您的发布应用程序,购买设置属性中的密码并使用签名任务中的密码.存储在仅存在于构建服务器上的单独属性文件中的实际密码.虽然存在轻微的安全风险,但在某些情况下,由于需要完整的端到端构建自动化而使其无法承受.
另一个更像Android的解决方案是使用XPATH任务,因为它在$ {sdk.dir} /tools/ant/build.xml中完成:
<xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName"
output="versionName" default="unknown"/>
<echo message="name: ${versionName}"></echo>
Run Code Online (Sandbox Code Playgroud)
这需要定义任务:
<path id="android.antlibs">
<pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
</path>
<taskdef name="xpath"
classname="com.android.ant.XPathTask"
classpathref="android.antlibs" />
Run Code Online (Sandbox Code Playgroud)
我不知道哪个是最低版本的SDK版本,但它适用于SDK14.
问候,迈克尔
| 归档时间: |
|
| 查看次数: |
8261 次 |
| 最近记录: |