我目前正在将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 \ billing \ IInAppBillingService的文件中声明.aidl。
该消息显然与我上面链接的Google错误页面中的帖子相矛盾。
任何人都过分使这个aidl文件工作,可以帮助我吗?
请注意,我遵循的一些链接:
正如错误消息所示,您需要将IInAppBillingService.aidl
放在由其包(com.android.vending.billing)指定的正确目录中。
在你已经拥有的src/main/aidl/
文件夹中,将.aidl
文件放在com/android/vending/billing/
中。
重启Android Studio对我有用
第二个愚蠢的事情花了我一段时间。我在Android Studio上删除了代码以允许他创建文件,但他创建了一个.java(如预期的那样)而不是.aidl Jiji,我的傻瓜
添加这个作为答案,因为它似乎帮助了很多人。
注意:如果您的参考不起作用,请确保包含必要的导入
import com.android.vending.billing.IInAppBillingService;
https://issuetracker.google.com/issues/36973270
从评论编辑
执行此操作后,我的代码中对IInAppBillingService的引用仍然突出显示为错误,但在重建应用程序后,该类已被识别
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
文件。这将解决问题。在build.gradle中添加此代码
android {
sourceSets {
main {
aidl.srcDirs = ['src']
}
}
}
重建和导入aidl类
上面的答案集中在文件位置,但看起来你已经正确设置了。我在Android Studio中遇到过同样的问题,但是所列出的答案都没有解决,我在一小时内对抗它。最终,我意识到我错过了一个明显的重要性:
import com.android.vending.billing.IInAppBillingService;
一旦我添加它解决了此错误消息。
此导入未在任何Google结算文档中提及,也未包含在我找到的任何代码示例中。虽然对于经验丰富的Java开发人员来说可能是显而易见的,但初学者只是试图学习他们的第一个项目可能需要明确指出。
我们需要补充一下
现在清理项目,重建项目 - 我们可以在app \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java中生成相应的援助文件java文件
我知道这听起来很容易,但我从谷歌样本所有文件夹中复制粘贴
https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main
AIDL / COM /安卓/自动售货机/计费
复制到项目aidl(我在Android Studio中设置了项目视图)
接下来我清理并重建项目并找到了参考。
我已经尝试了所有解决方案,但问题是Android Studio已经编译,包含AIDL包的模块的不同构建类型,而不是设置指定的模块。从调试到发布,所以其他模块无法看到AIDL pkg。从调试切换到发布并返回,解决了我的问题。