web-dev-qa-db-ja.com

Android St​​udioインラインコンパイラーに赤いエラーが表示されますが、gradleでのコンパイルは正常に動作します

この質問 に従って、Android St​​udioで Square Wireライブラリ を使用するようにプロジェクトを設定しました。

Build-> Compile Projectは正常に動作します。

2:03:10 PM Compilation completed successfully in 31 sec

ただし、生成されたプロトコルバッファーファイルの1つを開くと、Squareパッケージが認識されません。

Android Studio inline compile errors

もう1つの症状は、Square Messageクラスから継承されたメソッドが、ビルドおよび実行に成功しても、エディターで「メソッドを解決できません」コンパイルエラーとして表示されることです。

Android Studio single line compile error

プロジェクトのモジュールのbuild.gradleに依存関係を追加するだけでなく、何かする必要がありますか?

123
Dan J

ここで正しい軌道に乗せてくれたfree3domに感謝します。

診断

Android St​​udioのSync Project with Gradle Filesオプションは、Project Structureライブラリを最新の状態に保つようです。

gradle sync

しかし、私の場合、いくつかのエラーがありました。

errors found

(あまり明白ではない)リンクを展開すると、詳細が表示されました。ワイヤーランタイムライブラリが間違った場所に表示されていました。

libraries

これは、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 明らかに他のバグを修正 これらは同じ症状を持っているため、古いバージョンを使用している場合はアップグレードすることをお勧めします。

105
Dan J

次の手順が役立ちます

  1. プロジェクトを閉じ、プロジェクトフォルダーでproject/.ideaを削除します
  2. ~/.gradleフォルダーを削除します。

プロジェクトを再度開きます。すべてを解決する必要があります。

117
Bioz Nguyen

1)gradleアイコンをクリックします(Androidスタジオの右側)

enter image description here

2)更新ボタンをクリックして、問題が解決するまで待ちます:D

enter image description here

43
DroidDev

私はまだAndroid St​​udio v3.2.1で常に同じ問題を抱えており、.ideaフォルダーのこれら2つのサブフォルダーを削除するだけで問題を解決しました(.ideaフォルダ)、gradle同期が機能しませんでした:

  • ./idea/caches
  • ./idea/libraries
12
GoRoS

プロジェクトの.gradleおよび.ideaフォルダーを削除すると、問題は解決しました。

12
kvadityaaz

これに対する私のハッキーな修正-

  1. build.gradleファイルを開きます
  2. dependencies{}内のすべてを切り取ります
  3. 非常に安全な一時保管のためにメモ帳に貼り付けます
  4. build.gradleファイルで[今すぐ同期]を選択します
  5. 同期が失敗するのを待ちます
  6. 依存関係を貼り付けます
  7. 「今すぐ同期」をもう一度

多くの解決策を試みましたが、これが私にとって唯一の修正でした。

8
jnutttzzz

.ideaのライブラリフォルダを削除すると、問題が解決しました。 プロジェクトのroot/.idea/libraries。にあります

Android St​​udio 3.1.4を使用しています

7
Kamen Stoykov

Android St​​udio 3.1へのアップグレード後にこの問題が発生しました。使用するすべてのコンポーネントをアップグレードすることで問題を解決しました。そこで、build.gradle(アプリ)の次のエントリを変更しました。

  1. SDKをアップグレードします(このノートを読むと、「compileSdkVersion 25」から「compileSdkVersion 26」またはそれ以上になります):

    // compileSdkVersion 25

    compileSdkVersion 26

    コメント:この変更により、プログラムは次の同期中に新しいSDKのダウンロード/インストールを強制されました。

  2. Appcompat-v7のアップグレード:

    //実装 'com.Android.support:appcompat-v7:25.4.0'

    実装 'com.Android.support:appcompat-v7:26.1.0'

  3. 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'

  4. プロジェクトbuild.gradleで、google-servicesをアップグレードします。

    // classpath 'com.google.gms:google-services:3.1.0'

    クラスパス 'com.google.gms:google-services:3.2.0'

  5. Gradleをアップグレードします(4.4から4.6)。 gradle-wrapper.propertiesから:distributionUrl = https://services.gradle.org/distributions/gradle-4.6-all.Zip

これらの変更後、プロジェクトをクリーンアップし、キャッシュ/再起動を無効にし、.idea/librariesのコンテンツを削除して再同期します(順序はわかりませんが、これらのすべてのアクティビティで問題が解決しました)。

7
Pablo Alfonso

以下の手順は、プロジェクトが正常にコンパイルされたが、未解決のクラスがある場合(すべてのクラスの使用法はすべてのファイルで赤色で表示されます)

手順1. .gradleファイルを削除する

ステップ2. .ideaファイルを削除する

ステップ3.システム上で新しいAndroid studioウィンドウと他のAndroidプロジェクトを開き、エラーでプロジェクトを閉じます

ステップ3。スタジオのツールバーからプロジェクトをもう一度開く/インポートするAndroid Studio->ファイル->開く

注:プロジェクトをインポートすると、新しい.gradleフォルダーと新しい.ideaフォルダーが、依存関係を解決して自動生成されますコンパイラ。

5
Sumith.Pattar

Androidスタジオでこれを行うだけです:

ファイル->キャッシュの無効化/再起動->無効化と再起動

これは私のために働いた。 ./gradleまたは./ideaフォルダーをクリアする必要はありません

4

誰もがこれらの問題を回避するために異なるアプローチを使用しているようです。私は、他のものよりも侵襲性が少し低いと思う別の方法を提案します。私が含めたaarライブラリからの変更を導入するとき、プロジェクトの「settings.gradle」ファイルを開きます。

次に、プロジェクトのリストからメインプロジェクトモジュールを切り取ります。

include ':mainproj',

その後、プロジェクトを同期します。それを貼り付けて、プロジェクトをもう一度同期します。これはいくつかの手動削除手順と同じだと思いますが、IDEからそうすることで少し速く、痛みも少なくなります。

2
Jay Snayder

簡単な方法を見つけた

  • オープンアプリレベルbuild.gradle
  • エラーと同期を示している依存関係を削除します。
  • 再び依存関係と同期を追加します。

エラーが消えました!

Before

After

2
Khemraj

上記のすべての答えがうまくいかない場合。依存関係を最新バージョンに更新してみてください。それは私のために働いた。

2
Cuong Nguyen

.idea/caches.idea/librariesを削除すると、すべてのエラーが整理されます。

私の場合、何らかの理由で、Android Plugin Versionが設定されていませんでした。キャッシュをクリアして.gradleと.ideaも削除しようとしましたが、うまくいかず、最終的に何時間もさまよいましたが、これを見つけました。

File > Project Structure

1
Jainam Jhaveri

上記のハエのほとんどを試しましたが、実際に機能したのは、すべての.Android Studio構成フォルダーを削除してからAndroid St​​udioを再起動することでした。

1
Diego Feder

これらのソリューションは、Android St​​udio 0.5.8で同じ問題を解決するのに役立ちませんでした。

同じ質問に対する答えを説明しました(推測): https://stackoverflow.com/a/23891829/534698 〜/ .AndroidStudioPreviewディレクトリ(Ubuntuで)を削除しました。 StudioのAndroid設定をすべて逃しましたが、動作します。

1
DmitryDzz

以前にも同様の問題があり、キャッシュを無効にして再起動しても解決しませんでした。 Gradle Syncを実行したところ、すべて正常に機能しました。

0
Mina Samy

私にとっては、モジュールライブラリのjarを参照します。 jar内のシンボルを解決できません。だから私は自分の状況の解決策を見つけます。 provided方法を使用します。

provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')
0
Victor Choy

上記のすべての答えは私にはうまくいきませんでした。私の問題は、3つのモジュールがあり、そのうち2つが同じパッケージ名であったことです。

Android studio <= 3.2.1では問題ありませんでした。

Android studio> 3.2.1の場合、リソースは赤でした。

私はここでこの言及のようにそれを解決しました(各モジュールの異なるパッケージ名を作成しました): Any Android St​​udio version> 3.2.1 show red resource but stillコンパイル

0
Z3nk

プロジェクトBuild->Clean Projectをクリーニングして問題を解決しました

0
Ganesh P