Google Play要求在AndroidManifest.xml中将versionCode设置为正32位整数

时间:2012-11-29 20:48:36

标签: android flex intellij-idea

我正在拼命尝试使用Intellij IDEA上传使用Adobe Flex SDK 4.6开发和打包的Android应用程序。 PKCS#12是使用openSSL创建的(我只想提一下,但我不认为这是问题所在。)

一切正常,直到我痴迷于将应用程序发布到Google Play商店。用这个简单的句子摧毁了我所有的梦想:

Google Play requires versionCode to be set to a positive 32-bit integer in AndroidManifest.xml.

好吧,你不能直接从Flex SDK定义Android versionCode也不是秘密。你必须使用-Tag,我做了。实际上我尝试了几种不同的组合(当然一次只有一种),如:

<versionNumber>0</versionNumber>
<versionNumber>1</versionNumber>
<versionNumber>2</versionNumber>
<versionNumber>0.0.1</versionNumber>
<versionNumber>1.0.0</versionNumber>
<versionNumber>2.0.1</versionNumber>

......无论你能想象到什么......

但无论我做了什么,当我上传APK时,状态栏将达到100%并开始向后计数,好像它在嘲笑我并最终得到上述错误消息。

从Adobe社区我了解到,在Android上,AIR版本a.b.c使用以下公式转换为Android版本代码:a * 1000000 + b * 1000 + c。

好吧,使用这个公式,-Tag的所有值都应该变为32位整数。

任何想法?

3 个答案:

答案 0 :(得分:2)

这似乎是Flex中的一个错误,请尝试999这样的数字。请参阅此主题http://forums.adobe.com/thread/765086

您还可以拆开Flex生成的apk并查看清单以查看发生了什么,您甚至可以在手动修改值How to view AndroidManifest.xml from APK file?后将其重新组合在一起/ p>

答案 1 :(得分:2)

Flex SDK有一个列出here的错误,因此我必须选择一个我想与您分享的解决方法。

我的解决方案是解压APK-File,编辑AndroidManifest.xml,再次打包APK文件并签名。我使用apktool和jarsigner(JDK的一部分)。

java -jar apktool.jar d MyApp.apk // unpack
// edit AndroidManifest.xml
java -jar apktool.jar b MyApp_patched.apk // repack
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -storetype pkcs12 -keystore ../AndroidCertificates.p12 MyApp_fixed.apk "1" // sign

答案 2 :(得分:1)

版本代码是一个增量编号,用于跟踪哪个版本是最新版本。

你所说的是versionName,versionName可以是0.0.0.0-SNAPSHOT或其他什么

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.app"
    android:versionCode="23"
    android:versionName="1.2.1" >

versionCode是一个整数

versionName是一个字符串

http://developer.android.com/guide/topics/manifest/manifest-element.html#vcode