我怎样才能将aidl文件添加到Android工作室(从应用程序开票示例)

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

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

我得到这个错误消息:

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

所以,按照一些教程,我将这个文件从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 bug页面的post相矛盾。

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

在这里输入图像描述

只是通知,我遵循的一些链接:

  • http://tools.android.com/tech-docs/new-build-system/user-guide
  • http://developer.android.com/guide/components/aidl.html

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

在你已经有的src/main/aidl/文件夹中,把.aidl文件放到com/android/vending/billing/

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

  1. 在“src / main /”下创build一个名为“aidl” 的新目录 。 它应该看起来像' src / main / aidl '。
  2. 添加一个新的包名“ com.android.vending.billing ”到目录“ src / main / aidl
  3. find您的SDK位置,然后转到“sdk \ extras \ google \ play_billing”。 sdk的默认位置是“C:\ Program Files(x86)\ Android \ android-sdk”。 如果你习惯改变它,那么你将不得不通过sdkpipe理器来确定位置。
  4. 将“IInAppBillingService.aidl”复制到上面创build的包中。 最后,它应该看起来类似于下面的图像。

结果的屏幕截图

  1. 重build项目,应该是好的。

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

 import com.android.vending.billing.IInAppBillingService; 

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

  • src/main下创build一个名为aidl新目录
  • 右键点击目录aidl ,selectnew->add package
  • input包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 。 这将在App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing内生成IInAppBillingService.java文件。 这将解决这个问题。

这里的其他post没有为我工作,直到我创build一个新的文件夹 ,如图所示。

在这里输入图像描述

上面的答案集中在文件的位置,但看起来你已经有了正确的设置。 我在Android Studio中遇到了同样的问题,但是列出的答案都没有解决,我用了一个小时的时间来反驳它。 最终,我意识到我错过了一个明显的import:

  import com.android.vending.billing.IInAppBillingService; 

一旦我添加它解决了这个错误消息。

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

在build.gradle中添加此代码

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

重build和导入aidl类

我们需要补充

  1. 创build文件夹 – src / main / aidl /包名,并将aidl文件放在这个下面。

  2. 在aidl文件中 – 提及软件包名称。 软件包名称

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

我已经尝试了所有的解决scheme,但问题在于,Android Studio已经以任何明显的原因编译了包含AIDL包的模块的另一种构buildtypes,而不是由设置指定的。 从debugging到释放 ,所以其他模块不能看到AIDL pkg。 从debugging切换到释放并回头,解决了我的问题。

重新启动Android Studio为我工作

第二件愚蠢的事情花了我一段时间。 我放弃了Android Studio上的代码,以允许他创build文件,但他创build了一个.java(如预期的),而不是一个.aidl Jiji,我愚蠢