我目前正在将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文件起作用并可以帮助我吗?
请注意,我遵循了一些链接:
答案 0 :(得分:218)
添加此作为答案,因为它似乎可以帮助很多人。
注意:如果您的参考不起作用,请确保包含必要的导入
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)
答案 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
can not resolve symbol IInAppBillingXXXXXX
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)
我们需要添加
创建文件夹 - src / main / aidl / packagename并在其下放置aidl文件。
在aidl文件中 - 提及包名称。 包packagename
现在清理项目,重建项目 - 我们可以在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设置,它也可以正常工作并构建项目。