3

我正在为 Android 应用程序构建 Adob​​e Air,但我遇到了一个大问题,我使用旧的 Flash Air 扩展程序将应用程序发布到了 android 市场,该扩展程序使用前缀“app”保存了应用程序 ID。

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

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

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

4

3 回答 3

8

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

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

因此,只需将AIR_NOANDROIDFLAIR环境变量设置为true,重新打包您的应用程序,它就不会有air.前缀。谷歌如何在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这个标志不应该引起问题。

在这里交叉发布(略有不同的问题,相同的答案)。

于 2013-05-16T17:43:47.483 回答
0

如果其他人需要它,我将发布我的结果与这个问题。总而言之,尽管我讨厌说只是将您的应用程序重新发布为新应用程序。

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

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

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

经验教训:随时了解您的扩展。最重要的是,将您的证书文件备份到许多地方。如果您丢失它,您将不会再次更新您发布的应用程序,至少我发现。

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

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

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

于 2011-03-15T01:24:30.690 回答
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如果您有一个现有的 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 包Android 设置查找更多此类选项

感谢@JeffWard

于 2014-11-14T23:45:10.407 回答