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

Waz*_*_Be 136 android gradle aidl android-studio android-gradle-plugin

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

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

我收到此错误消息:

Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist
Run Code Online (Sandbox Code Playgroud)

因此,在一些教程之后,我将此文件从com.mypackage.billing移动到src/main/aidl(请参阅此参考)

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

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

无法运行命令:(...)C:\ Users\xxxx\AndroidStudioProjects\xxxxxxProject\xxxxxxx\src\main\aidl\IInAppBillingService.aidl:45接口IInAppBillingService应在名为com\xxxxxxxx\billing\IInAppBillingService的文件中声明.aidl.

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

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

在此输入图像描述

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

Kal*_*ade 219

添加这个作为答案,因为它似乎帮助了很多人.

  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'复制到上面创建的包中.最后,它看起来应该与下图相似.

结果截图

  1. 重建项目,它应该是好的.

注意:如果您的参考不起作用,请确保包含必要的导入

import com.android.vending.billing.IInAppBillingService;
Run Code Online (Sandbox Code Playgroud)

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

从评论编辑

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

  • 在我这样做之后,我的代码中对IInAppBillingService的引用仍然突出显示为错误,但在重建应用程序后,该类被识别. (5认同)
  • 花了20分钟试图解决这个问题,直到我得到你的答案.然后我尝试upvote它得到错误"你最后投票给这个答案......"我想有些人永远不会学习:) (4认同)
  • 如果仍然无法解决,请重建项目. (3认同)

Sam*_*zor 161

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

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

  • 只是为了澄清.在src/main /下创建一个目录aidl.然后添加一个新的包com.android.vending.billing.然后将aidl文件复制到新包中.请参阅https://code.google.com/p/android/issues/detail?id=56755 (80认同)
  • 所以它在/ src/main/aidl/com/android/vending/billing中?你使用gradle构建?如果是这样,请点击Android Studio右上角的小gradle按钮进行gradle重新加载配置,或关闭/打开Android Studio. (9认同)
  • 当我这样做时,我得到:Gradle:错误:找不到符号类IInAppBillingService (5认同)
  • 如果你没有src/main,在任何地方创建aidl目录并在build.gradle中指定:android {sourceSets {main {aidl {srcDirs'actual_path ..' (3认同)
  • @Kalel Wade这是我的解决方案,您应该将其添加为答案. (2认同)

zee*_*wan 9

这里的其他帖子对我来说不起作用,直到我创建了一个如此处所示的新文件夹.

在此输入图像描述


Pra*_*ena 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
  • 现在转到Buildandroid studio菜单,点击Rebuild Project.这将IInAppBillingService.java在里面生成文件App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing.这将解决问题.


Ahm*_*deh 7

在build.gradle中添加此代码

android {
    sourceSets {
        main {
            aidl.srcDirs = ['src']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

重建和导入aidl类


Ati*_*aiz 5

此答案可能并不完全适合所发布的问题,但可能会帮助其他遇到与创建AIDL文件夹相关问题的人。有时,即使我们创建类似 .AIDL 的文件夹,AIDL 文件夹也不会显示在 Android Studio 中app > New > Folder > AIDL Folder。该文件夹存在于文件资源管理器中,但在 Android Studio 中未显示或检测到。

我遇到了这个问题,并使用以下步骤解决了它

步骤1:打开文件并在文件末尾 gradle.properties添加 ,如屏幕截图所示。android.defaults.buildfeatures.aidl=true在此输入图像描述

步骤 2:右键单击该app文件夹,将显示一个窗口,执行以下流程app > New > Folder > AIDL Folder 在此输入图像描述

第 3 步:单击“完成”按钮 在此输入图像描述AIDL文件夹现已创建并显示在 Android Studio 中 在此输入图像描述