現在、EclipseアプリをAndroid Studioに移行しています。このアプリはアプリ内課金を使用していました。
私の主な問題は、プロジェクトとaidlファイルをコンパイルすることです(皆さんは このファイル を使用していると思います)
このエラーメッセージが表示されます。
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バグページの投稿と明らかに矛盾しています。
誰でもこの援助ファイルを機能させることに成功し、私を助けることができますか?
お知らせするために、私が従ったいくつかのリンク:
エラーメッセージが示すように、IInAppBillingService.aidl
をパッケージ(com.Android.vending.billing)で指定された正しいディレクトリに配置する必要があります。
既にお持ちのsrc/main/aidl/
フォルダー内で、.aidl
ファイルをcom/Android/vending/billing/
に配置します。
回答としてこれを追加すると、かなりの数の人々を助けるように思われました。
注:参照が機能しない場合は、必要なインポートを含めるようにしてください
import com.Android.vending.billing.IInAppBillingService;
https://issuetracker.google.com/issues/3697327
コメントから編集
これを行った後、コード内のIInAppBillingServiceへの参照はまだエラーとして強調表示されていましたが、アプリを再構築した後、クラスが認識されました
aidl
というsrc/main
の下に新しいディレクトリを作成します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でこの同じ問題が発生しましたが、リストされた回答のどれもそれを解決せず、1時間頭を打ちました。最終的に、明らかなインポートが欠落していることに気付きました。
import com.Android.vending.billing.IInAppBillingService;
追加すると、このエラーメッセージは解決されました。
このインポートは、Google Billingのドキュメントには記載されておらず、私が見つけたコード例にも含まれていません。経験豊富なJava開発者には明らかかもしれませんが、最初のプロジェクトを学習しようとする初心者は、明示的に指摘する必要があるかもしれません。
追加する必要があります
フォルダーの作成-src/main/aidl/packagenameを作成し、この下にaidlファイルを配置します。
Aidlファイルで-パッケージ名を記載します。パッケージpackagename
ここでプロジェクトをクリーンにし、プロジェクトを再構築します-app\build\generated\source\aidl\debug\packagename\youraidl.Javaで生成されたエイドルに対応するJavaファイルを作成できます
簡単そうに聞こえますが、Googleサンプルのすべてのフォルダーから貼り付けをコピーします
https://github.com/googlesamples/Android-play-billing/tree/master/TrivialDrive/app/src/main
aidl/com/Android/vending/billing
プロジェクト援助機能にコピーしました(Android Studioでプロジェクトビューを設定していました)
次に、プロジェクトをクリーンアップして再構築すると、参照が見つかりました。
Android Studioを再起動するとうまくいきました
少し時間がかかった2番目の愚かなこと。ファイルを作成できるようにAndroid Studioにコードを落としましたが、彼は.aidl Jijiの代わりに.Java(予想どおり)を作成しました。
私はすべてのソリューションを試しましたが、問題はAndroid Studioが、明らかな理由で、設定によって指定されたものとは異なるAIDLパッケージを含むモジュールのビルドタイプでコンパイルされたことでした。 debug to releaseなので、他のモジュールはAIDL pkgを見ることができませんでした。デバッグからリリースに切り替えて元に戻すと、問題が解決しました。