【问题标题】:Android App ID prefix problemAndroid App ID前缀问题
【发布时间】:2011-07-07 00:29:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android actionscript-3 air adobe adt


    【解决方案1】:

    您可以设置一个简单的环境变量来轻松禁用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(略有不同的问题,相同的答案)。

    【讨论】:

    • 您是如何发现 Adob​​e AIR 打包程序源代码包含引用“AIR_NOANDROIDFLAIR”环境变量的那些行的?据我所知,它只是二进制形式,而不是源代码。此外,我递归地搜索了整个 AIR SDK 目录,并且在纯文本形式的任何地方都找不到该字符串。
    【解决方案2】:

    我将发布我的结果以防其他人需要它。 总而言之,虽然我讨厌说只是将您的应用重新发布为新应用。

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

    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

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

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

    【讨论】:

      【解决方案3】:

      最近我这样做了,这是我的结果。
      经测试,可与 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
      

      如果你有一个现有的 android .keystore,而不是 .p12 文件,请使用 -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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多