web-dev-qa-db-ja.com

aidlファイルをAndroid studioに追加するには(アプリ内課金の例から)

現在、EclipseアプリをAndroid St​​udioに移行しています。このアプリはアプリ内課金を使用していました。

私の主な問題は、プロジェクトと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バグページの投稿と明らかに矛盾しています。

誰でもこの援助ファイルを機能させることに成功し、私を助けることができますか?

enter image description here

お知らせするために、私が従ったいくつかのリンク:

133
Waza_Be

エラーメッセージが示すように、IInAppBillingService.aidlをパッケージ(com.Android.vending.billing)で指定された正しいディレクトリに配置する必要があります。

既にお持ちのsrc/main/aidl/フォルダー内で、.aidlファイルをcom/Android/vending/billing/に配置します。

159
Sam Dozor

回答としてこれを追加すると、かなりの数の人々を助けるように思われました。

  1. 「src/main /」の下に「aidl」という名前の新しいディレクトリを作成します。 「src/main/aidl」のようになります。
  2. 新しいパッケージを追加name 'com.Android.vending.billing'ディレクトリ 'src/main/aidl'へ
  3. SDKの場所を見つけて、「sdk\extras\google\play_billing」に移動します。 SDKのデフォルトの場所は「C:\ Program Files(x86)\ Android\android-sdk」です。カスタムに変更した場合は、SDKマネージャーを使用して場所を把握する必要があります。
  4. 「IInAppBillingService.aidl」を上記で作成したパッケージにコピーします。最終的には、下の画像のようになります。

Screenshot of result

  1. Rebuildプロジェクトで、うまくいくはずです。

注:参照が機能しない場合は、必要なインポートを含めるようにしてください

import com.Android.vending.billing.IInAppBillingService;

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

コメントから編集

これを行った後、コード内のIInAppBillingServiceへの参照はまだエラーとして強調表示されていましたが、アプリを再構築した後、クラスが認識されました

218
Kalel Wade

ここにある残りの投稿は、ここに示すように新しいフォルダを作成するまでは機能しませんでした。

enter image description here

9
zeeawan
  • 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にコピーします

  • InApp請求コーディングを進めます。InApp関連サービスを定義しているときに、エラーcan not resolve symbol IInAppBillingXXXXXXが表示されます
  • AndroidスタジオメニューからBuildに移動し、Rebuild Projectをクリックします。これにより、IInAppBillingService.Java内にApp_Name/app/build/generated/source/aidl/debug/com/Android/vending/billingファイルが生成されます。これで問題が解決します。
8
Praveena

このコードをbuild.gradleに追加します

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

Aidlクラスを再構築してインポートする

7
Ahmad Aghazadeh

上記の回答はファイルの場所に集中していますが、すでに正しく設定されているようです。 Android St​​udioでこの同じ問題が発生しましたが、リストされた回答のどれもそれを解決せず、1時間頭を打ちました。最終的に、明らかなインポートが欠落していることに気付きました。

 import com.Android.vending.billing.IInAppBillingService;

追加すると、このエラーメッセージは解決されました。

このインポートは、Google Billingのドキュメントには記載されておらず、私が見つけたコード例にも含まれていません。経験豊富なJava開発者には明らかかもしれませんが、最初のプロジェクトを学習しようとする初心者は、明示的に指摘する必要があるかもしれません。

2
Nicholas

追加する必要があります

  1. フォルダーの作成-src/main/aidl/packagenameを作成し、この下にaidlファイルを配置します。

  2. Aidlファイルで-パッケージ名を記載します。パッケージpackagename

ここでプロジェクトをクリーンにし、プロジェクトを再構築します-app\build\generated\source\aidl\debug\packagename\youraidl.Javaで生成されたエイドルに対応するJavaファイルを作成できます

1
Aag1189

簡単そうに聞こえますが、Googleサンプルのすべてのフォルダーから貼り付けをコピーします

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

aidl/com/Android/vending/billing

プロジェクト援助機能にコピーしました(Android St​​udioでプロジェクトビューを設定していました)

次に、プロジェクトをクリーンアップして再構築すると、参照が見つかりました。

1

Android St​​udioを再起動するとうまくいきました

少し時間がかかった2番目の愚かなこと。ファイルを作成できるようにAndroid St​​udioにコードを落としましたが、彼は.aidl Jijiの代わりに.Java(予想どおり)を作成しました。

0
pellyadolfo

私はすべてのソリューションを試しましたが、問題はAndroid St​​udioが、明らかな理由で、設定によって指定されたものとは異なるAIDLパッケージを含むモジュールのビルドタイプでコンパイルされたことでした。 debug to releaseなので、他のモジュールはAIDL pkgを見ることができませんでした。デバッグからリリースに切り替えて元に戻すと、問題が解決しました。

0