2012-11-29 50 views
2

我拼命尝试上载使用Intellij IDEA开发并与Adobe Flex SDK 4.6一起打包的Android应用程序。 PKCS#12是使用openSSL创建的(我只想提到这一点,但我不认为这是问题)。Google Play需要在AndroidManifest.xml中将versionCode设置为正整数的32位整数

一切工作正常,直到我有愚蠢的愿望将应用程序发布到谷歌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位整数。

什么想法?

+0

我的应用程序使用1.0.1作为versionNumber正常上传到Google Play商店。我不确定这里可能会出现什么问题。 – JeffryHouser

回答

2

Flex SDK有一个错误,列出了here,所以我必须选择一种解决方法,我想在此与您分享。

我的解决方案是解压缩APK文件,编辑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 
1

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

你谈论的是的versionName,可以的versionName是0.0.0.0,快照或任何

<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

+0

谢谢,但我知道这一点。问题是我使用flex SDK,因为它是从versionNumber(Flex SDK)派生的,所以无法输入versionCode。请看我提到的公式。结果应该是Flex SDK放入versionCode值的内容。 – Randy

2

这似乎是Flex中的一个错误,请尝试数字,例如999.请参阅此线程http://forums.adobe.com/thread/765086

您也可以拆开那Flex的生成APK,并采取一看清单,看看到底是怎么回事,你甚至可以把它重新走到一起后manualy cahnging价值退房How to view AndroidManifest.xml from APK file?

+0

刚刚建议修补APK - 当你有源代码时,通常会做一件愚蠢的事情,但是如果工具流是固执的,那么在某个点上,人们可能只需要修补程序的快捷方式。 –

+0

我刚刚使用apktool对APK进行了反编译,并查看了最终的AndroidManifest.xml。 versionCode被设置为“0”。这绝对是一个错误。 – Randy

+0

该链接来自2010年,并使用Flash Builder的测试版。这不能是Flex中的一个错误;但它可能是Flex SDK/Flash Builder附带的AIR SDK的错误。我个人并没有碰到它,并且使用与原始海报所用的相似的数字。 – JeffryHouser