首页 文章

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

提问于
浏览
131

我目前正在将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文件工作,可以帮助我吗?

enter image description here

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

10 回答

  • 5

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

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

  • 7

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

    • Create a new directory 在'src/main/'下命名为'aidl' . 它应该看起来像' src/main/aidl ' .

    • Add a new package name' com.android.vending.billing ' to the directory ' src/main/aidl '

    • 找到您的sdk位置并转到"sdk\extras\google\play_billing" . sdk的默认位置是"C:\Program Files (x86)\Android\android-sdk" . 如果您自定义更改它,那么您将必须通过sdk管理器找出位置 .

    • Copy 'IInAppBillingService.aidl' 进入上面创建的包 . 最后,它看起来应该与下图相似 .

    Screenshot of result

    • Rebuild 项目,它应该是好的去 .

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

    import com.android.vending.billing.IInAppBillingService;
    

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

    Edit From Comment

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

  • 0

    这里的其他帖子对我来说不起作用,直到我创建了这样的 new folder .

    enter image description here

  • 0
    • 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

    • 现在从android studio菜单转到 Build ,点击 Rebuild Project . 这将在 App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing 内生成 IInAppBillingService.java 文件 . 这将解决问题 .

  • 1

    在build.gradle中添加此代码

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

    重建并导入aidl类

  • 9

    上面的答案集中在文件位置,但看起来你已经正确设置了 . 我在Android Studio中遇到过同样的问题,但所列出的答案都没有解决,我在一小时内对抗它 . 最终,我意识到我错过了一个明显的重要性:

    import com.android.vending.billing.IInAppBillingService;
    

    一旦我添加它解决了此错误消息 .

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

  • 213

    我们需要补充一下

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

    • 在aidl文件中 - 提及包名称 . 包packagename

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

  • 1

    我知道这听起来很容易,但我从谷歌样本所有文件夹中复制粘贴

    https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main

    将aidl / com / android / vending / billing复制到项目aidl中(我在Android Studio中设置了项目视图)

    然后我清理并重建项目,它找到了一个参考 .

  • 2

    我已经尝试了所有解决方案,但问题是Android Studio已经编译,包含AIDL包的模块的不同构建类型,而不是设置指定的模块 . 从 debug to release 开始,其他模块无法看到AIDL pkg . 从调试切换到发布并返回,解决了我的问题 .

  • 157

    重启Android Studio对我有用

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

相关问题