Android App ID前缀问题

时间:2011-03-02 04:57:07

标签: android actionscript-3 air adobe adt

我正在构建Adobe Air for Android应用程序,我遇到了一个大问题,我使用旧的flash air扩展程序向Android市场发布了一个应用程序,该应用程序使用前缀“app”保存了应用程序ID。

现在我已升级了扩展程序,现在它会使用前缀'air。'保存应用程序ID。

这意味着我无法再向我的应用程序发布更新;那我该怎么办?

使用过期扩展程序的问题是,在发布更新后,用户无法打开应用程序,直到清除缓存文件。

3 个答案:

答案 0 :(得分:8)

您可以设置一个简单的环境变量来轻松禁用air.前缀。 Adobe AIR包装程序中存在以下代码:

String optOut = System.getenv("AIR_NOANDROIDFLAIR");
if ((optOut == null) || (optOut.indexOf("true") == -1)) {
  packageName = "air." + packageName;
}

因此,只需将AIR_NOANDROIDFLAIR环境变量设置为true,重新打包您的应用程序,它就不会有air.前缀。 Google如何在windowsmac中为您的特定操作系统版本设置环境变量。

例如,我在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(略有不同的问题,相同的答案)。

答案 1 :(得分:0)

如果其他人需要,我会发布我的结果。 总结虽然我讨厌说只是将你的应用重新发布为新的应用程序。

我发现这篇文章列出了如何分解已编译的应用程序,更改应用程序前缀并重新编译它。

http://kb2.adobe.com/cps/875/cpsid_87562.html

现在我必须告诉你这对我不起作用。我一路走到最后一步,签下重新包装的应用程序并上传到市场。我遇到的问题是原始应用程序是使用adobe flash cs5创建的mycert.p12签名的。 jarsigner(你用来签署应用程序的东西)不会使用这个证书,它说它的格式错误。不要尝试创建一个新的证书b / c Android市场将只允许你使用原始证书更新你的应用程序,我起初并不知道这一点。好的,然后我发现如果你右键单击(windows vista)在cert上,top选项会将cert安装为另一个文件,然后你可以从MMC(转到开始 - 运行 - 在MMC中输入)导出到jarsigner的格式允许。该应用程序已签名,我上传到市场 - 错误证书不包含私钥...拒绝。如果您使用keytool -list查看证书,它会显示序列号,md5和aes密钥,我会认为其中一个是私钥。我从未找到过以市场允许的方式签署应用程序的方法。我已经重新发布了应用程序,并且在购买新应用程序后,我通过退还第一次购买来慢慢迁移我的客户。

获得的经验教训:随时了解您的扩展程序。最重要的是将你的CERT文件备份到很多地方。如果你失去了它将不会再次更新您发布的应用程序,至少我找到了。

以下是我研究此主题的论坛帖子。 http://forums.adobe.com/thread/800068?tstart=0

我了解市场的最后一件事。没有办法将你的应用作为促销。他们必须购买它。如果您向客户退款,客户应用可能会被删除。我发现了几个关于这个的相互矛盾的故事。

如果你还想潜水,祝你好运。

答案 2 :(得分:0)

最近我做了这个,这是我的结果 经过测试,适用于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,请使用.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 packagesAndroid settings

查找更多此类选项

感谢@JeffWard