我怎样才能将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/
。
加上这个作为答案,因为它似乎帮助了很多人。
- 在“src / main /”下创build一个名为“aidl” 的新目录 。 它应该看起来像' src / main / aidl '。
- 添加一个新的包名“ com.android.vending.billing ”到目录“ src / main / aidl ”
- find您的SDK位置,然后转到“sdk \ extras \ google \ play_billing”。 sdk的默认位置是“C:\ Program Files(x86)\ Android \ android-sdk”。 如果你习惯改变它,那么你将不得不通过sdkpipe理器来确定位置。
- 将“IInAppBillingService.aidl”复制到上面创build的包中。 最后,它应该看起来类似于下面的图像。
- 重build项目,应该是好的。
注意:如果参考不起作用,请确保包含必要的导入
import com.android.vending.billing.IInAppBillingService;
- 在
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类
我们需要补充
-
创build文件夹 – src / main / aidl /包名,并将aidl文件放在这个下面。
-
在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,我愚蠢
- 如何隐藏Android中的SD卡中的文件夹
- 获取用于Google云消息传递的API密钥
- 应该“android:onOptionsItemSelected”返回true或false
- 如何检测Android上的UI线程?
- Android Studio Gradle:错误:任务“:app:processDebugGoogleServices”的执行失败。 >找不到匹配的客户端软件包
- 以编程方式禁用ScrollView?
- Android:如何定期发送位置到服务器
- Android – 我的应用程序中使用的音量button
- Google Cloud Messaging – 在networking状态发生变化之前有时收不到消息