如何将aidl文件添加到Android studio(来自应用内结算示例)

时间:2013-07-24 14:00:16

标签: android android-studio gradle android-gradle aidl

我目前正在将Eclipse应用程序迁移到Android Studio。 此应用正在使用应用内结算。

我的主要问题是编译项目和aidl文件(我想你们都使用this file

我收到此错误消息:

Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist

因此,按照一些教程,我将此文件从com.mypackage.billing移动到src / main / aidl (见this reference

但是,就像我那样,我收到这条消息:

  

Gradle:任务执行失败':xxxxxxxxxxx:compileDebugAidl'。

     
    

无法运行命令:             (...)C:\ Users \ xxxx \ AndroidStudioProjects \ xxxxxxProject \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl:45     接口IInAppBillingService应该在一个名为的文件中声明     COM \ XXXXXXXX \帐单\ IInAppBillingService.aidl。

  

该消息显然与我上面链接的Google错误页面中的帖子相矛盾。

任何人都过分使这个aidl文件起作用并可以帮助我吗?

enter image description here

请注意,我遵循了一些链接:

11 个答案:

答案 0 :(得分:218)

添加此作为答案,因为它似乎可以帮助很多人。

  1. 在'src / main /'下创建一个名为'aidl'的新目录。它应该看起来像' src / main / aidl '。
  2. 将新软件包名称' com.android.vending.billing '添加到目录' src / main / aidl '
  3. 找到您的sdk位置,然后转到“sdk \ extras \ google \ play_billing”。 sdk的默认位置是“C:\ Program Files(x86)\ Android \ android-sdk”。如果您自定义更改了它,那么您将必须通过sdk管理器找出位置。
  4. 将'IInAppBillingService.aidl'复制到上面创建的包中。最后,它看起来应该与下图相似。
  5. Screenshot of result

    1. 重建项目,应该不错。
    2. 注意:如果您的参考不起作用,请确保包含必要的导入

      import com.android.vending.billing.IInAppBillingService;
      

      https://issuetracker.google.com/issues/36973270

      从评论中修改

      执行此操作后,我的代码中对IInAppBillingService的引用仍然突出显示为错误,但在重建应用程序后,该类已被识别

答案 1 :(得分:159)

正如错误消息所示,您需要将IInAppBillingService.aidl放在由其软件包(com.android.vending.billing)指定的正确目录中。

在您已有的src/main/aidl/文件夹中,将.aidl文件放入com/android/vending/billing/

答案 2 :(得分:9)

此处的其他帖子对我无效,直到我创建了新文件夹,如此处所示。

enter image description here

答案 3 :(得分:8)

  • 在名为src/main
  • aidl下创建新目录
  • 右键点击目录aidl,选择new->add package
  • 输入包名称com.android.vending.billing

  • IInAppBillingService.aidl从目录Android/Sdk/extras/google/play_billing复制到目录App_name/app/src/main/aidl/com/android/vending/billing

  • 现在继续使用InApp计费编码,在定义InApp相关服务时,您将收到错误can not resolve symbol IInAppBillingXXXXXX
  • 现在从android studio菜单转到Build,点击Rebuild Project。这将在IInAppBillingService.java内生成App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing个文件。这将解决问题。

答案 4 :(得分:5)

在build.gradle中添加此代码

android {
    sourceSets {
        main {
            aidl.srcDirs = ['src']
        }
    }
}

重建并导入aidl类

答案 5 :(得分:2)

以上答案主要集中在文件位置,但看起来您已经正确设置了。我在Android Studio中遇到过同样的问题,但是所列出的答案都没有解决,我在一小时内对抗它。最终,我意识到我错过了一个明显的重要内容:

 import com.android.vending.billing.IInAppBillingService;

我添加后,它解决了此错误消息。

此导入未在任何Google结算文档中提及,或包含在我找到的任何代码示例中。虽然对于有经验的Java开发人员来说可能是显而易见的,但只是尝试学习他们的第一个项目的初学者可能需要明确指出。

答案 6 :(得分:1)

我们需要添加

  1. 创建文件夹 - src / main / aidl / packagename并在其下放置aidl文件。

  2. 在aidl文件中 - 提及包名称。 包packagename

  3. 现在清理项目,重建项目 - 我们可以在app \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java中生成的aidl的相应java文件

答案 7 :(得分:1)

我知道这听起来很简单,但我从google sample all folder

复制粘贴

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main

  

AIDL / COM /机器人/自动售货机/记帐

     

复制到项目aidl(我在Android Studio中设置了项目视图)

然后我清理并重建项目,它找到了一个参考。

答案 8 :(得分:0)

我已经尝试了所有解决方案,但问题是Android Studio已经编译了包含AIDL包的模块的不同构建类型,而不是设置指定的模块。 从调试到发布,所以其他模块无法看到AIDL pkg。 从调试切换到发布并返回,解决了我的问题。

答案 9 :(得分:0)

如果你做的所有名称都正确,请转到 Build>rebuild project 它对我有用

答案 10 :(得分:0)

我使用 Android Studio 4.1,只需右键单击鼠标 -> 新建 -> AIDL -> AIDL 文件。 将自动创建一个文件并将其放置在 [src/main/aidl] 文件夹中。如果 aidl 文件夹不存在,也会创建它。

此功能仅支持最低 sdk 16+。我的老项目还是可以支持的,可以暂时修改min sdk为16,创建aidl并构建项目。相关接口和类生成后,恢复min sdk设置,它也可以正常工作并构建项目。