我正在拼命尝试使用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位整数。
任何想法?
答案 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