Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Play要求在AndroidManifest.xml中将versionCode设置为正32位整数_Android_Apache Flex_Intellij Idea - Fatal编程技术网

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

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

我正在拼命尝试上传一个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 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