添加应用内计费库时出错

Posted

技术标签:

【中文标题】添加应用内计费库时出错【英文标题】:Error in Adding the In-app Billing Library 【发布时间】:2012-12-05 08:26:19 【问题描述】:

我是按照link 中提到的这些步骤执行此操作的。

    IInAppBillingService.aidl 文件复制到您的android 项目中。 (1) 如果您使用的是 Eclipse:将IInAppBillingService.aidl 文件导入您的 /src 目录。 (2) 如果是在非Eclipse环境下开发:创建如下目录/src/com/android/vending/billing,将IInAppBillingService.aidl文件复制到该目录下。 构建您的应用程序。您应该会在项目的/gen 目录中看到一个名为IInAppBillingService.java 的生成文件。 将TrivialDrive 示例的/util 目录中的帮助程序类添加到您的项目中。请记住相应地更改这些文件中的包名称声明,以便您的项目正确编译。

但是当我完成之后,Eclipse 给了我一个错误:

interface IInAppBillingService should be declared in a file called com\android\vending\billing\IInAppBillingService.aidl.

aidl 文件位于正确的目录中,但未生成 IInAppBillingService.java 文件。

有人见过吗?

【问题讨论】:

最好清理你的项目一次......同时清理 /gen 中的 IInAppBillingService.java 文件重建 @joshwoodward -- 我很幸运,依次添加了每个连续的文件夹 com 然后是 android,然后是 vending,然后是计费。然后我可以将aidl文件放入帐单文件夹并生成。 我在 Eclipse 中遇到了同样的问题。我去了 Properties -> Java Build Path -> Source,删除了 /src 目录,然后再次添加它。我想我是通过在 /src 之后添加 /gen 来制造这个问题的。通过删除 /src 而将 /gen 保留在那里,然后将 /src 添加回来,它似乎可以解决问题。但这可能是盲目的运气;) 也许你把文件放到 src 根目录下。我也犯了同样的错误。 【参考方案1】:

我能给你的唯一建议是重新检查 src 文件夹中目录的拼写,如果你将文件放入 /src/com/android/vending/billing/IInAppBillingService.aidl 它应该可以工作

【讨论】:

【参考方案2】:

右键单击项目的头部并创建一个新的 PACKAGE ...调用包 com.android.vending.billing ....将aidl文件放入其中以消除错误。

一些思考:对于那些有兴趣的人 - 当使用某人的aidl文件时,两个应用程序的包名称必须相同。 google 使用 com.android.vending.billing 作为其计费辅助界面的包名称,因此您还必须在您的应用中使用相同的包名称。这是使用aidl时的规则。

【讨论】:

我不明白为什么 people@google(android) 会像这样传播信息,而不是将所有链接的内容集中在一个页面或一组页面上。这是他们对您的问题的所有详细解释@j2emanue Detailed google play billing explanations 我没有错字,但删除包并粘贴它确实有效。【参考方案3】:

其他建议都不错。有时 eclipse 可能只是很奇怪,在这种情况下,清理项目可以修复它。

【讨论】:

【参考方案4】:

我按照@j2emanue 的建议做了(单击新建/包,添加“com.android.vendor.billing”),我还将目录添加到我的文件系统(com/android/vendor/billing)然后复制文件在里面。然后,单击项目上的刷新。构建,它成功了。

【讨论】:

【参考方案5】:

在 /src 目录下,点击 File > New > Package,然后创建一个名为 com.android.vending.billing 的包

从 /extras/google/play_billing/ 复制 IInAppBillingService.aidl 文件并将其粘贴到工作区的 src/com.android.vending.billing/ 文件夹中。

构建您的应用程序。您应该会在项目的 /gen 目录中看到一个名为 IInAppBillingService.java 的生成文件。

【讨论】:

【参考方案6】:

对于android studio用户,应该是这样的结构:

Worked for me, according to this answer.

【讨论】:

这对我有用,但我发现通过 Windows Explorer / Mac Finder 比通过 Studio 更容易 如果不仅仅是清理项目并进行导入(alt + enter) 这个答案清洁项目帮了我。【参考方案7】:

@David 提到的结构在 Android Studio 1.2 中运行良好。

结算文件夹的路径应如下所示:

[YOUR_APP_FOLDER]/app/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

您可以在这里查看 IInAppBillingService.java 生成的文件:

[YOUR_APP_FOLDER]/app/build/generated/source/aidl/debug/com/android/vending/IInAppBillingService.java

祝你好运!

【讨论】:

【参考方案8】:

检查您是否在 build.gladle 的依赖项下添加了计费库

dependencies 
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

implementation 'com.android.billingclient:billing:1.1'

见上面代码的最后一行。实施 'com.android.billingclient:billing:1.1' 为我解决了同样的问题

【讨论】:

【参考方案9】:

2018

app/build.gradle:

sourceSets 
  main 
    aidl.srcDirs = ['src/main/aidl']
  

sourceSets 
  main 
    aidl.srcDirs = ['src']
  

IInAppBillingService.aidl

【讨论】:

以上是关于添加应用内计费库时出错的主要内容,如果未能解决你的问题,请参考以下文章

将组件从应用程序移动到库时出错

Xcode 在我添加库时出错:dyld: Library not loaded

为 create-react-app 添加 React 测试库时出错(版本 16.12.0)

在我的 React.js 应用程序中导入 D3.js 库时出错

Rails:运行 wkhtmltopdf 时出错——(加载共享库时出错)

码头:初始化密钥库时出错