2

我正在拼命尝试使用 Intellij IDEA 上传一个使用 Adob​​e 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% 并开始倒数,好像它在嘲笑我,最后出现上述错误消息。

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

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

有任何想法吗?

4

3 回答 3

2

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

您还可以拆开 Flex 生成的 apk 并查看清单以了解发生了什么,您甚至可以在手动更改值后将其重新组合在一起查看如何从 APK 文件查看 AndroidManifest.xml ?

于 2012-11-29T21:03:58.313 回答
2

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

我的解决方案是解压 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
于 2012-12-17T15:35:04.900 回答
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

于 2012-11-29T20:52:35.847 回答