2012-11-29 122 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