【问题标题】:Can't build IMarketBillingService.aidl for inApp purchase无法为应用内购买构建 IMarketBillingService.aidl
【发布时间】:2011-09-20 04:16:35
【问题描述】:

我尝试导入 com.android.vending.billing.IMarketBillingService。但我得到了错误:

The import com.android.vending.billing.IMarketBillingService cannot be resolved.

我有另一个项目,我做了完全相同的事情,而且效果很好。我将应用内购买所需的文件复制到新项目中。这意味着数据必须是正确的。 (我替换了包名)我多次检查我是否忘记了一个类。几天前,我为同事复制了文件,它也可以正常工作。

我也尝试过清理和更新项目。

【问题讨论】:

标签: android in-app-purchase


【解决方案1】:

从以下链接下载源代码,将您的代码与下载的代码进行比较,我相信您会解决您的问题。

http://www.anddev.org/resources/file/2875

【讨论】:

  • 谢谢,我一直在寻找一个非常简单的应用内购买代码。但它仍然不能解决我的问题。我发现 gen 文件夹不包含 IMarketBillingService.java 。 com.android.vending.billing 在 gen 文件夹中也不存在。
  • 我认为您的环境有问题,下载的示例是否有效?
  • 是的,它有效。就像我的旧项目一样,我使用相同的代码。 3 个项目(包括你的)在同一个工作区中。我尝试将 IMarketBillingService.java 从旧项目的 gen 文件夹复制到新项目的 com.android.vending.billing。这样就可以了!但我想知道为什么我的新项目不会生成这个 java 文件。
【解决方案2】:

最后,我使用旧项目的生成 java 文件而不是 IMarketBillingService.aidl。现在可以了。

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题。我发现在您的项目中任何应用内计费来源之前放入 .aidl 会生成 .java。

    当您尝试在创建之前引用该 .java 文件时,您的项目将包含错误。因为您有错误,它不会构建您的资源,即 R.java 或 IMarketBillingService.java。

    【讨论】:

    • 注释掉所有内容以便构建仍然不会导致我的 AIDL 文件被编译。
    • 放对了吗? .AIDL 文件必须在 src/com/android/vending/billing/ 下才能正确构建。
    • 是的,它只是没有构建。一个同事有同样的问题,还有一个问题,构建服务器让它编译得很好。 WTH?!
    【解决方案4】:

    我通过取消选中项目属性上的所有构建器来解决此问题,点击确定,然后再次检查它们并点击确定。非常感谢,谷歌!

    【讨论】:

    • 哇。你可能救了我一个星期之类的。我永远不会发现!谢谢:D
    • 这是我相信的最有趣的答案......而且它奏效了...... 提示 4 其他:这不是玩笑......它确实有效。别开玩笑了。
    • @yehudahs,Android 开发人员只是没有花时间让他们的工具变得可靠。足够好,继续前进。
    • 为我工作。谢谢!
    • 为我工作。非常快速的解决方案!
    【解决方案5】:

    你也可以只删除eclipse中的gen文件夹,这应该会触发eclipse插件的rebuild并创建相应的java类。

    【讨论】:

    • 在我取消选择项目下的“自动构建”并单击“清理”后为我工作..
    【解决方案6】:

    我在迁移到新机器时遇到了这个令人沮丧的问题。对我有用的是在命令行中使用“ant debug”来生成计费服务文件。

    http://developer.android.com/guide/developing/building/building-cmdline.html

    【讨论】:

      【解决方案7】:

      导入整个“android-sdk-macosx/extras/google”文件夹及其所有项目。 “com.example.dungeons.Dungeons”项目现在应该可以编译了。

      【讨论】:

        【解决方案8】:

        至少在 Eclipse 中,您要做的就是更改 Java 编译器设置(因为这是编译器错误)。

        尝试将编译器合规级别从 1.5 更改为 1.6 或 1.7。它对我有用。

        【讨论】:

          【解决方案9】:

          以下是为我解决此问题的方法:

          IInAppBillingService.aidl 文件中关于如何设置的文档比较模糊:

          将 IInAppBillingService.aidl 文件复制到您的 Android 项目中。

          • 如果您使用的是 Eclipse:将 IInAppBillingService.aidl 文件导入您的 /src 目录。
          • 如果您在非 Eclipse 环境中开发:创建以下目录 /src/com/android/vending/billing 并将 IInAppBillingService.aidl 文件复制到此目录中。

          对我来说,这意味着如果我在 Eclipse 中,我应该把它放在我的 src 目录的根目录中,但如果不是,那么我需要把它放在他们指定的包中。所以,我把 IInAppBillingService.aidl 放在我的 /src 目录的根目录中,它有所有的失败。这就是问题所在。

          我不知道为什么文档是这样写的,但解决方案是将此文件放入正确的包目录中,即com.android.vending.billing,正如在 .aidl 文件中声明的那样。然后它成功生成并且所有其他文件都正确构建。

          【讨论】:

            【解决方案10】:

            我在这里尝试了一些方法,但对我不起作用。

            对我来说是一个简单的Clean,然后是Build All

            【讨论】:

              【解决方案11】:

              就我而言,我必须从 Project Properties>Android>Project Build Target 中选择 Android Project Target。 显然,在我上次升级 Eclipse 之后,我没有下载我用于项目的 API 级别。结果,Eclipse 无法解析最后使用的 API 级别,并导致错误。

              【讨论】:

                【解决方案12】:

                我遇到了这个问题,这救了我:

                1. 在 'src/main/' 下创建一个名为 'aidl' 的新目录。它应该看起来像“src/main/aidl”。
                2. 添加一个名为“com.android.vending.billing”的新包到目录“src/main/aidl
                3. 将'IInAppBillingService.aidl'复制到上面创建的包中。最后,它应该类似于下图。


                参考文献

                https://code.google.com/p/android/issues/detail?id=56755 https://stackoverflow.com/a/22769862/2615737

                【讨论】:

                  猜你喜欢
                  • 2015-12-09
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-02-06
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多