Google Play要求在AndroidManifest.xml中将versionCode设置为正32位整数
我正在拼命尝试上传一个Android应用程序,该应用程序是使用Intellij IDEA与Adobe Flex SDK 4.6一起开发和打包的。PKCS#12是使用openSSL创建的(我只想提到这一点,但我认为这不是问题所在) 一切都很顺利,直到我愚蠢地想把这个应用发布到谷歌游戏商店。这句简单的话摧毁了我所有的梦想:Google Play要求在AndroidManifest.xml中将versionCode设置为正32位整数,android,apache-flex,intellij-idea,Android,Apache Flex,Intellij Idea,我正在拼命尝试上传一个Android应用程序,该应用程序是使用Intellij IDEA与Adobe Flex SDK 4.6一起开发和打包的。PKCS#12是使用openSSL创建的(我只想提到这一点,但我认为这不是问题所在) 一切都很顺利,直到我愚蠢地想把这个应用发布到谷歌游戏商店。这句简单的话摧毁了我所有的梦想: Google Play requires versionCode to be set to a positive 32-bit integer in AndroidManifes
Google Play requires versionCode to be set to a positive 32-bit integer in AndroidManifest.xml.
好的,不能直接从FlexSDK定义Android版本代码并不是什么秘密。你必须使用-Tag,我就是这么做的。事实上,我尝试了几种不同的组合(当然一次只有一种),比如:
0
1.
2.
0.0.1
1.0.0
2.0.1
。。。不管你能想象什么
但无论我做了什么,当我上传APK时,状态栏将变为100%,并开始倒数,好像它在嘲笑我,并以上面的错误消息结束
我从Adobe社区了解到,在Android上,AIR版本a.b.c被转换为Android版本代码,使用的公式是:a*1000000+b*1000+c
使用这个公式,-标记的所有值都应该变成32位整数
有什么想法吗?版本代码是一个增量数字,用于跟踪哪个版本是最新的 你说的是版本名,版本名可以是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是一个字符串
这似乎是Flex中的一个错误,请尝试999等数字。看到这条线了吗
您还可以拆开Flex生成的apk并查看清单以了解发生了什么,您甚至可以在手动计算值check out后将其重新组合起来。Flex SDK有一个列出的错误,因此我必须选择一个解决方法,我想在这里与您分享 我的解决方案是解压缩APK文件,编辑AndroidManifest.xml,再次打包APK文件并签名。我使用apktool和jarsigner(JDK的一部分)
谢谢,但我知道这一点。问题是我使用的FlexSDK不能输入版本代码,因为它是从版本号(FlexSDK)派生的。请看一下我提到的公式。结果应该是Flex SDK放入versionCode-value中的内容。我们只是想建议修补APK-当您拥有源代码时通常是一件愚蠢的事情,但是如果工具流如此顽固,在某一点上,人们可能只是想要一个快捷方式来进行修复。我只是使用apktool反编译了APK,并查看了结果AndroidManifest.xml。版本代码设置为“0”。这绝对是一个bug。该链接来自2010年,使用了Flash Builder的测试版。这不可能是Flex中的bug;但这可能是FlexSDK/Flash Builder附带的AIR SDK的一个缺陷。我没有亲自接触过它,并且使用了与原始海报相似的数字。我没有使用FB,而是使用Intellij IDEA,它使用Flex SDK打包APK。因此,这很可能是Flex SDK中的一个bug,因为生成的版本代码是“0”。我的应用程序使用1.0.1作为版本号很好地上传到Google Play商店。我不确定这里可能有什么问题。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.my.app"
android:versionCode="23"
android:versionName="1.2.1" >
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