この質問 に従って、Android Studioで Square Wireライブラリ を使用するようにプロジェクトを設定しました。
Build
-> Compile Project
は正常に動作します。
2:03:10 PM Compilation completed successfully in 31 sec
ただし、生成されたプロトコルバッファーファイルの1つを開くと、Squareパッケージが認識されません。
もう1つの症状は、Square Message
クラスから継承されたメソッドが、ビルドおよび実行に成功しても、エディターで「メソッドを解決できません」コンパイルエラーとして表示されることです。
プロジェクトのモジュールのbuild.gradle
に依存関係を追加するだけでなく、何かする必要がありますか?
ここで正しい軌道に乗せてくれたfree3domに感謝します。
診断
Android StudioのSync Project with Gradle Files
オプションは、Project Structure
ライブラリを最新の状態に保つようです。
しかし、私の場合、いくつかのエラーがありました。
(あまり明白ではない)リンクを展開すると、詳細が表示されました。ワイヤーランタイムライブラリが間違った場所に表示されていました。
これは、JARをlibsフォルダーにインポートした元の構成からの二日酔いのようです。
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
その後、Maven Centralから直接インポートするように変更しました( ここのとおり )。古い設定は新しい設定で上書きされなかったようです。
修正
修正は、Project Structure
画面からライブラリの依存関係を削除してから、Sync Project with Gradle Files
を再度削除することです。
詳細
.idea/libraries/wire_runtime_1_2_0.xml
を直接開くことで、リソースに使用されているパスを確認することもできます。
私の壊れたものは:
<component name="libraryTable">
<library name="wire-runtime-1.2.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/MY_MODULE/libs/wire-runtime-1.2.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
ライブラリを削除して再追加すると、root url
が次のように変更されました。
<root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.squareup.wire/wire-runtime/1.2.0/jar/44e7acbd5eb6f29698181dc3d67a60acf7efee80/wire-runtime-1.2.0.jar!/" />
更新
Android Studio v0.4.4 明らかに他のバグを修正 これらは同じ症状を持っているため、古いバージョンを使用している場合はアップグレードすることをお勧めします。
次の手順が役立ちます
project/.idea
を削除します~/.gradle
フォルダーを削除します。プロジェクトを再度開きます。すべてを解決する必要があります。
私はまだAndroid Studio v3.2.1で常に同じ問題を抱えており、.idea
フォルダーのこれら2つのサブフォルダーを削除するだけで問題を解決しました(.idea
フォルダ)、gradle同期が機能しませんでした:
./idea/caches
./idea/libraries
プロジェクトの.gradleおよび.ideaフォルダーを削除すると、問題は解決しました。
これに対する私のハッキーな修正-
build.gradle
ファイルを開きますdependencies{}
内のすべてを切り取りますbuild.gradle
ファイルで[今すぐ同期]を選択します多くの解決策を試みましたが、これが私にとって唯一の修正でした。
.ideaのライブラリフォルダを削除すると、問題が解決しました。 プロジェクトのroot/.idea/libraries。にあります
Android Studio 3.1.4を使用しています
Android Studio 3.1へのアップグレード後にこの問題が発生しました。使用するすべてのコンポーネントをアップグレードすることで問題を解決しました。そこで、build.gradle(アプリ)の次のエントリを変更しました。
SDKをアップグレードします(このノートを読むと、「compileSdkVersion 25」から「compileSdkVersion 26」またはそれ以上になります):
// compileSdkVersion 25
compileSdkVersion 26
コメント:この変更により、プログラムは次の同期中に新しいSDKのダウンロード/インストールを強制されました。
Appcompat-v7のアップグレード:
//実装 'com.Android.support:appcompat-v7:25.4.0'
実装 'com.Android.support:appcompat-v7:26.1.0'
Firebaseのアップグレード:
//実装 'com.google.firebase:firebase-ads:11.4.2'
実装 'com.google.firebase:firebase-core:12.0.1'
実装 'com.google.firebase:firebase-ads:12.0.1'
プロジェクトbuild.gradleで、google-servicesをアップグレードします。
// classpath 'com.google.gms:google-services:3.1.0'
クラスパス 'com.google.gms:google-services:3.2.0'
Gradleをアップグレードします(4.4から4.6)。 gradle-wrapper.propertiesから:distributionUrl = https://services.gradle.org/distributions/gradle-4.6-all.Zip
これらの変更後、プロジェクトをクリーンアップし、キャッシュ/再起動を無効にし、.idea/librariesのコンテンツを削除して再同期します(順序はわかりませんが、これらのすべてのアクティビティで問題が解決しました)。
以下の手順は、プロジェクトが正常にコンパイルされたが、未解決のクラスがある場合(すべてのクラスの使用法はすべてのファイルで赤色で表示されます)
手順1. .gradleファイルを削除する
ステップ2. .ideaファイルを削除する
ステップ3.システム上で新しいAndroid studioウィンドウと他のAndroidプロジェクトを開き、エラーでプロジェクトを閉じます
ステップ3。スタジオのツールバーからプロジェクトをもう一度開く/インポートするAndroid Studio->ファイル->開く
注:プロジェクトをインポートすると、新しい.gradleフォルダーと新しい.ideaフォルダーが、依存関係を解決して自動生成されますコンパイラ。
Androidスタジオでこれを行うだけです:
ファイル->キャッシュの無効化/再起動->無効化と再起動
これは私のために働いた。 ./gradleまたは./ideaフォルダーをクリアする必要はありません
誰もがこれらの問題を回避するために異なるアプローチを使用しているようです。私は、他のものよりも侵襲性が少し低いと思う別の方法を提案します。私が含めたaarライブラリからの変更を導入するとき、プロジェクトの「settings.gradle」ファイルを開きます。
次に、プロジェクトのリストからメインプロジェクトモジュールを切り取ります。
include ':mainproj',
その後、プロジェクトを同期します。それを貼り付けて、プロジェクトをもう一度同期します。これはいくつかの手動削除手順と同じだと思いますが、IDEからそうすることで少し速く、痛みも少なくなります。
上記のすべての答えがうまくいかない場合。依存関係を最新バージョンに更新してみてください。それは私のために働いた。
.idea/caches
と.idea/libraries
を削除すると、すべてのエラーが整理されます。
上記のハエのほとんどを試しましたが、実際に機能したのは、すべての.Android Studio構成フォルダーを削除してからAndroid Studioを再起動することでした。
これらのソリューションは、Android Studio 0.5.8で同じ問題を解決するのに役立ちませんでした。
同じ質問に対する答えを説明しました(推測): https://stackoverflow.com/a/23891829/534698 〜/ .AndroidStudioPreviewディレクトリ(Ubuntuで)を削除しました。 StudioのAndroid設定をすべて逃しましたが、動作します。
以前にも同様の問題があり、キャッシュを無効にして再起動しても解決しませんでした。 Gradle Syncを実行したところ、すべて正常に機能しました。
私にとっては、モジュールライブラリのjarを参照します。 jar内のシンボルを解決できません。だから私は自分の状況の解決策を見つけます。 provided
方法を使用します。
provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')
上記のすべての答えは私にはうまくいきませんでした。私の問題は、3つのモジュールがあり、そのうち2つが同じパッケージ名であったことです。
Android studio <= 3.2.1では問題ありませんでした。
Android studio> 3.2.1の場合、リソースは赤でした。
私はここでこの言及のようにそれを解決しました(各モジュールの異なるパッケージ名を作成しました): Any Android Studio version> 3.2.1 show red resource but stillコンパイル
プロジェクトBuild->Clean Project
をクリーニングして問題を解決しました