我建立一個Adobe的AIR for Android應用程序,我有一個很大的問題,我使用的是舊閃光燈空氣擴展以一個前綴保存應用程序ID發佈的應用程序到Android市場的應用程序。「Android應用程序ID前綴問題
現在,我已經升級,現在可以用如下前綴應用程序ID擴展「空氣」。
這是什麼意思是我不能再發布更新到我的應用程序;所以我能做什麼?
使用過時擴展的問題是,發佈更新後的用戶不能夠直到緩存文件被清除,打開應用程序。
我建立一個Adobe的AIR for Android應用程序,我有一個很大的問題,我使用的是舊閃光燈空氣擴展以一個前綴保存應用程序ID發佈的應用程序到Android市場的應用程序。「Android應用程序ID前綴問題
現在,我已經升級,現在可以用如下前綴應用程序ID擴展「空氣」。
這是什麼意思是我不能再發布更新到我的應用程序;所以我能做什麼?
使用過時擴展的問題是,發佈更新後的用戶不能夠直到緩存文件被清除,打開應用程序。
我會發布我的結果與這個問題,以防其他人需要它。 總結一下,雖然我討厭說只是重新發布你的應用程序作爲一個新的應用程序。
我發現這個職位,規定了如何打破你的已編譯的應用程序,改變應用程序的前綴並重新編譯。
http://kb2.adobe.com/cps/875/cpsid_87562.html
現在,我必須告訴你它沒有爲我工作。我一路走到最後一步,簽下重新包裝的應用程序並上傳到市場。我遇到的問題是,原始應用程序使用adobe flash cs5創建的mycert.p12進行簽名。 jarsigner(您用來簽署應用程序的東西)不會使用此證書,它表示它的格式不正確。不要嘗試創建一個新的證書B/C Android市場只會讓你使用原始證書更新你的應用程序,我一開始並不知道這一點。好了,那麼我發現如果你在cert證書上右鍵點擊(windows vista),最上面的選項將證書安裝爲一個不同的文件,然後你可以從MMC中導出(轉到開始 - 運行 - 輸入MMC),格式爲jarsigner允許。該應用程序已簽署,我上傳到市場 - 錯誤證書不包含私鑰...拒絕。如果你使用keytool -list查看證書,它會顯示一個序列號,一個md5和aes密鑰,我會認爲其中的一個密鑰就是私鑰。我從未找到以市場容許的方式簽署應用程序的方法。自從我重新發布了該應用程序以來,我已經通過在購買新應用程序後退款首次購買,從而慢慢遷移我的客戶。
獲得的經驗:保持更新您的擴展。最重要的是備份你的CERT文件到很多地方。如果你鬆動你不會更新你的發佈的應用程序再次,至少我發現。
這是我研究此主題的論壇帖子。 http://forums.adobe.com/thread/800068?tstart=0
最後一件事我瞭解了市場。沒有辦法將您的應用作爲宣傳推廣。他們必須購買它。如果您向客戶退款,客戶應用可能會被刪除。儘管我發現了關於這一個的幾個相互矛盾的故事。
如果你還想潛入好運。
有一個簡單的環境變量可以設置輕鬆地停用air.
前綴。存在於Adobe AIR的打包下面的代碼:
String optOut = System.getenv("AIR_NOANDROIDFLAIR");
if ((optOut == null) || (optOut.indexOf("true") == -1)) {
packageName = "air." + packageName;
}
因此,只需將AIR_NOANDROIDFLAIR
環境變量設置爲true
,重新包裝你的應用程序,它不會有air.
前綴。 Google如何爲您的特定操作系統版本設置windows或mac環境變量。
例如,我用在Mac/Linux的命令行編譯器,我運行:
> export AIR_NOANDROIDFLAIR=true
> java -jar $AIR_HOME/lib/adt.jar -package -target apk-captive-runtime -storetype pkcs12 -keystore cert.p12 -storepass *** Main.apk Main-app.xml Main.swf
警告:我不知道這有什麼影響。根據上面的人的說明,這可能只是一個好的想法與俘虜運行時(但這是默認從AIR 3.8前進)。
更新: Renaun Erickson said此標誌不應引起問題。
交叉發佈here(稍有不同的問題,相同的答案)。
最近我做了這個,這裏是我的結果。
經測試,AIR SDK 15,Mac OSX 10.10 Yosemite正常工作。窗戶應該類似地工作。
要查看所有選項adt.jar
java -jar $AIR_HOME/lib/adt.jar -help
要包含ANE文件添加-extdir
export AIR_NOANDROIDFLAIR=true
java -jar /FULL_PATH_TO_AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype pkcs12 -keystore <DEVELOPER>.p12 -storepass <PASSWORD> Main.apk Main-app.xml Main.swf -extdir /PATH_TO_ANE_DIRECTORY
而是一個.p12
文件,如果你有一個現有的Android .keystore
,使用-storetype jks
java -jar /FULL_PATH_TO_AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype jks -keystore <DEVELOPER>.keystore -storepass <PASSWORD> Main.apk Main-app.xml Main.swf -extdir /PATH_TO_ANE_DIRECTORY
例如
java -jar /Users/cforcloud/AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype jks -keystore /Users/cforcloud/android.keystore -storepass secretPassword Main.apk Main-app.xml Main.swf -extdir /Users/cforcloud/ane_directory
找到更多這樣的選項Android APK packages和Android settings
由於@JeffWard
你是怎麼發現的Adobe AIR的打包源代碼包含那些引用「AIR_NOANDROIDFLAIR」環境行變量?據我所知,它只是二進制形式,而不是源代碼。另外,我遞歸地grepped整個AIR SDK目錄,並且該字符串在純文本格式中找不到。 – OMA 2014-06-25 04:28:13