2012-07-30 81 views
1

我被告知有一种方法可以使用aapt的--version-code选项向版本没有定义版本的APK中添加/插入版本代码。然而,我还没有发现有人这样做的例子(https://groups.google.com/forum/#!msg/adt-dev/XjehZDzfXhk/g2sWBC37_I4J除外,链接到一个死网页,甚至不是我试图做的同样的事情),如果确实有可能做到这一点。我可以使用AAPT将版本代码添加到APK吗?

目前aapt d badging example.apk对有问题的APK运行返回类似

包:名称= 'com.example.core' 的versionCode = ''=的versionName '1.0.0' sdkVersion: '8'

在我的清单中,我现在将versionName定义为xml文件中的一个字符串,所以我可以用android:versionName="@string/app_version_name"(在manifest标签内)将其拉入。但是,如果我使用版本代码尝试此操作,它似乎不想解析引用。它试图从字面上将版本代码设置为我输入的路径,然后因为它不是整数而失败。

我试过做类似aapt p --version-code 100 example.apk的东西,但它似乎想要打包整个项目,并且期望一个文件目录作为输入,而不是apk文件。 (我认为这是aapt p[ackage]的默认行为)

是否可以在使用aapt工具构建APK之后设置APK的版本代码?如果是这样,那么正确的语法是什么?

回答

1

该解决方案不会直接使用aapt,但它会在幕后。

您可以使用Android APKTool打开你APK,改变AndroidManifest.xml文件,添加的版本信息;然后再次使用APKTool重新打包。该工具是开源的,并使用aapt。因此,你可以看看它的代码,找出如何使用aapt直接做到这一点。

+0

我主要是在寻找可以添加到我们当前maven构建过程的解决方案。例如,如果您设置了某个属性,默认的android build.xml将在运行aapt时插入版本代码。但是,我无法控制maven aapt调用,所以我希望能够在apk插入版本代码后添加另一个。 – matt5784 2012-07-31 14:31:36

+0

我最终选择使用脚本更简单的查找/替换模板化清单,但这将是一个很好的替代解决方案。 – matt5784 2012-09-18 19:53:02