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

如何将aidl文件添加到Android studio(来自应用内计费示例),android,android-studio,gradle,android-gradle-plugin,aidl,Android,Android Studio,Gradle,Android Gradle Plugin,Aidl,我目前正在将Eclipse应用程序迁移到Android Studio。 此应用正在使用应用内账单 我的主要问题是编译项目和aidl文件(我想你们都使用) 我收到以下错误消息: Gradle: error: cannot find symbol class IInAppBillingService Gradle: error: package IInAppBillingService does not exist 因此,在一些教程之后,我将这个文件从com.mypackage.billing移到

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

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

我收到以下错误消息:

Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist
因此,在一些教程之后,我将这个文件从com.mypackage.billing移到src/main/aidl (见附件)

但是,当我这么做的时候,我得到了这个信息:


渐变:任务:XXXXXXXXXX:CompiledBugAIDL的执行失败

无法运行命令: (…)C:\Users\xxxx\AndroidStudioProjects\xxxxxx project\xxxxxxx\src\main\aidl\IInAppBillingService.aidl:45 应在名为 com\xxxxxxxx\billing\IInAppBillingService.aidl

这条消息显然与我上面链接的谷歌bug页面的帖子相矛盾

有人成功地使这个aidl文件工作并能帮助我吗

我只是想告诉大家,我遵循了一些链接:


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


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

中,将此添加为答案,因为它似乎帮助了很多人

  • 在“src/main/”下创建一个名为“aidl”的新目录。它应该看起来像“src/main/aidl
  • 将一个新包name'com.android.vending.billing'添加到目录'src/main/aidl'
  • 找到您的sdk位置并转到“sdk\extras\google\play\u计费”。sdk的默认位置为“C:\Program Files(x86)\Android\Android sdk”。如果您对其进行了自定义更改,则必须通过sdk管理器确定位置
  • 将“IInAppBillingService.aidl”复制到上面创建的包中。最后,它看起来应该与下图相似
  • 重建项目,应该很好
  • 注意:如果引用不起作用,请确保包含必要的导入

    import com.android.vending.billing.IInAppBillingService;
    

    根据评论编辑


    在我这样做之后,代码中对IInAppBillingService的引用仍然被突出显示为错误,但在重新构建应用程序后,该类被识别出来

    • src/main
      下创建名为
      aidl
    • 右键单击目录
      aidl
      ,选择
      new->addpackage
    • 输入软件包的名称
      com.android.vending.billing

    • iinapplingservice.aidl
      从目录
      Android/Sdk/extras/google/play\u billing
      复制到目录
      App\u name/App/src/main/aidl/com/Android/vending/billing

    • 现在继续进行InApp计费编码,在定义InApp相关服务时,您将得到一个错误
      无法解析符号IInapplingxxxxxx
    • 现在转到android studio菜单中的
      Build
      ,点击
      rebuildproject
      。这将在
      App\u Name/App/build/generated/source/aidl/debug/com/android/vending/billingservice
      中生成
      iinapplingservice.java
      文件。这将解决问题

    以上的答案集中在文件位置上,但似乎您已经正确设置了该位置。我在安卓工作室也遇到过同样的问题,但上面列出的答案都没有解决,我用头撞了它一个小时。最后,我意识到我忽略了一个明显的要点:

     import com.android.vending.billing.IInAppBillingService;
    
    一旦我添加,它解决了这个错误消息


    这个导入在任何谷歌账单文档中都没有提到,也没有包含在我找到的任何代码示例中。虽然这对于经验丰富的Java开发人员来说可能是显而易见的,但是初学者如果只是想学习他们的第一个项目,可能需要明确指出。

    我已经尝试了所有的解决方案,但问题是Android Studio编译了,有任何明显的原因,包含AIDL包的模块的生成类型与设置指定的不同。 从调试到发布,因此其他模块无法看到AIDL包。 从调试切换到发布并返回,解决了我的问题。

    我们需要添加

  • 创建文件夹-src/main/aidl/packagename并将aidl文件放在此文件夹下

  • 在aidl文件中-提及包名。 包装名称


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

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

    重建并导入aidl类

    重新启动Android Studio对我来说很有用


    第二件傻事花了我一段时间。我在Android Studio上删除了允许他创建文件的代码,但他创建了一个.java(正如预期的那样)而不是一个.aidl Jiji,我真傻

    在我创建了一个新文件夹之前,这里的其余帖子对我都不起作用


    我知道这听起来很简单,但我从google sample all文件夹复制粘贴

    aidl/com/android/vending/billing

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


    接下来,我清理并重建项目,它找到了一个引用。

    如果所有名称都正确,请转到“构建>重建项目”
    它对我很有用

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

    此函数仅支持min sdk 16+。我的旧项目仍然可以支持,您可以临时修改min sdk t