Android Studioは「シンボルを解決できません」と言いますが、プロジェクトはコンパイルされます


97

私はbuild.gradleで以下を使用して、AndroidStudioにtwitter4jをインポートしています。

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

プロジェクトは正常にコンパイルされ、問題なくTwitterオブジェクトを作成できます。ただし、Androidスタジオでは、そのライブラリを参照するものはすべて「シンボルを解決できません」と表示され、赤で表示されます。Android Studioにライブラリを認識させるには何が必要ですか?

私はすでにプロジェクトの再構築、。/ gradlew clean、およびプロジェクトのクローズと再オープンを試みました。



2018年、Android Studio 3以降:Android StudioとGradleが同意しない場合があります。ここでの解決策:stackoverflow.com/questions/50313885/...
user1506104

Android Studioにエクササイズプロジェクトをインポートした後も、同じ問題が発生しました。Android Studioをインポートすると、警告が表示され、SDKバージョンを更新するよう提案されたので、アドバイスに従いました。その後、互換性がなくなったため、Android Studioは別のバージョンの変更を提案しました。これらのアドバイスをすべて実行した後、同じ「シンボルが見つかりません」という問題が発生しました。変更を元に戻し、プロジェクトを再度インポートしましたが、今回はAndroid Studioのヒントには従いませんでした。その後、エラーはなくなりました。そのプログラムの提案に盲目的に従うことに注意してください。
デビッド

回答:


237

これが機能するかどうかはわかりませんが、これまでのところ私が考えただけです。AS内のファイルツリーでjarファイルを右クリックし、[ライブラリとして追加...]を選択します。

編集:「ファイル」->「キャッシュを無効化...」を実行し、「無効化して再起動」オプションを選択してこれを修正できます。

編集2:この修正はすべての同様のインシデントに対して機能するはずであり、twitter4j固有の解決策ではありません。


jarファイルを右クリックしても、オプションとして表示されません。0.2.13を実行しています。
TG-T

これはおそらく、すでにこれを実行したことを意味します。[ファイル]> [プロジェクト構造]を試して、モジュールノードに.jarファイルがあることを確認します。
doydoy 2013年

11
キャッシュを無効にして再起動してもうまくいきません。私はまた、android studioを再インストールしてプロジェクトを再インポートしようとしました。これは非常に迷惑です...
clocksmith '21

3
[ファイル]-> [キャッシュを無効にする...]で一日が節約できました。この問題に多くの時間を費やしました。この回答が上位の検索結果ではなかったのはなぜですか?どうもありがとうございます!
エリックコクラン2014年

1
感謝の気持ちで投げ
Yevgeny Simkin 2018

33

ファイル>プロジェクト構造>(プロジェクトを選択)>依存関係で依存関係の順序を変更してみてください。

キャッシュの無効化は機能しませんでしたが、ビルドをリストの一番下から一番上に移動しました。


依存関係の順序を変更することは私に役立ちます、私は答えで与えられたすべての解決策を試しました、あなただけが私を助けてくれてありがとう。
wqycsu 2015

依存関係を1つ上に移動するだけでうまくいきました。(Android Studio 3.0.1)。
セバスチャン2017年

ええ、どの依存関係を移動するかは重要ではありません。誰かの順序を変更するだけです。これはAndroid Studio 3.3でも機能します。
カリーク

12

これは私のために働いたものです。

プロジェクトパネルでプロジェクト名を右クリックしOpen Module Settings、ポップアップメニューから選択します。

次に、Compile SDK Versionを使用可能な最小バージョン(プロジェクトで設定したSDKの最小バージョン)に変更します。Android Studioがすべてをロードするのを待ちます。

エラーが発生しますが、無視してください。

次に、Javaファイルに移動します。AndroidStudioにより、インポートが提案されます。

import android.support.v4.app.FragmentActivity;

それをインポートしてからOpen Module Settings、コンパイルSDKのバージョンに戻って、以前のバージョンに戻します。

物事がロードされて出来上がるのを待ちます。


それは素晴らしい仕事です。私の場合、Android Studioは、SDKのすべてのクラス(文字列、整数、TextViewなど)を解決できないことを報告しました。その前に、aStudioは、プロジェクトのコンパイルに使用したandroid-14 SDKを見つけることができないことも教えてくれました。私はそれを無視したので、問題が発生しました。最後に、私はこの答えを見つけてフォローし、コンパイルSDKバージョンを変更してから機能しました。時間を節約してくれてありがとう。
VinceStyling 2015

Now go to your java file and android studio will suggest you import私の場合ではありません
NineCattoRules 2017

9

私がインポートしたライブラリプロジェクトが原因で発生した場合、build.gradleに何かを入力してもう一度削除し、今すぐsyncを押すと、エラーは発生しません。


6

私自身のAndroidライブラリ(Android Studio 3.0および3.1.1を使用)によっては、このAndroidアプリにもこの問題がありました。

ライブラリを更新してアプリに戻り、Gradle Syncをトリガーすると、Android Studioは、ライブラリに加えたコードの変更を検出できませんでした。コンパイルは正常に機能しましたが、Android Studioは、libを使用する一部のコードで赤いエラー行を示しました。

調査の結果、gradleが私のコンパイル済みの古いバージョンのライブラリを指し続けていることが原因であることがわかりました。yourProject / .idea / libraries /に移動すると、コンパイルされたバージョンのライブラリへのリンクを含むxmlファイルのリストが表示されます。これらのファイルはGradle__artifacts _ *。xmlで始まり​​ます(*はライブラリの名前です)。

したがって、Android Studioが最新バージョンのライブラリを取得するためには、これらのGradle__artifacts _ *。xmlファイルを削除する必要があります。そうすると、Android Studioはそれらを再生成し、最新のコンパイル済みバージョンのライブラリをポイントします。

「Gradle sync」をクリックするたびに手動でそれを実行したくない場合(だれがそうしたいのか...)、この小さなGradleタスクをアプリのbuild.gradleファイルに追加できます。

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

アプリがGradle同期を実行する前に常にこのタスクを実行するようにするには、Gradleウィンドウに移動し、yourApp / Tasks / other /で「deleteArtifacts」タスクを見つけて右クリックし、「実行」を選択するだけです。同期前」(下記参照)。

タスクの実行を構成するGradleウィンドウ

これで、Gradle同期を実行するたびに、Android Studioは最新バージョンのライブラリを使用するように強制されます。


5

私のプロジェクトでこの問題が発生したとき(赤い色のコードは正しく機能します)。

最初に、(ファイル->キャッシュの表示)->(無効化して再起動)にしました。

最後に、自分のbuild.gradleファイルをアプリで再同期します。問題が解決した後。


3

Invalidate Caches / Restart 今回はうまくいきませんでした。

このような解決策を見つけました:

  1. build.gradle のcompile ***or implementation ***行を削除します。

  2. クリーンして再構築します。ここでエラーが発生するはずです。

  3. 手順1の行をbuild.gradleに追加します。

  4. クリーンして再構築します。

奇妙な...


2

この問題は、GlassプロジェクトがAndroid Studioのデフォルトの場所にインストールされているSDKを使用していないときに発生しました。すべてを再ダウンロードしないようにしようとしていたため、以前はADTから取得していた別の場所を使用していました。Android Studioのインストール場所のSDKの場所にプロジェクトを戻すと、問題はなくなりました。


ええ、それもいいことだと思います。デフォルトでは、Android Studioによって、すべてのSDKがデフォルトのAndroid Studioインストールディレクトリにインストールされると判断されます。このパターンに従わないものがあれば、これを修正する必要があります。
doydoy 2015年

2

私は数日間この問題を抱えていて、ついにそれを理解しました!他のすべてのソリューションは私のためにうまくいきませんでした。

解決策:プロジェクトパスに特殊文字が含まれていました。

それらのどれもないことを確認してください、あなたは大丈夫であるか、少なくとも他のソリューションの1つがあなたのために働くべきです。

これが誰かを助けることを願っています!


のような特殊文字を含むプロジェクトパスがあるかどうかを確認してください。(エクスクラメーション・マーク)。stackoverflow.com/questions/32477067/…を経験した同様の問題で、これが根本的な原因でした。多くのJavaアプリケーションは、このような特殊文字を許容しないようです(たとえば、ターミナルから「gradlew clean」を実行すると失敗し、RunTimeExceptionがスローされます)。オンラインで投稿された他の解決策のどれも私を助けませんでした。しかし、私が削除したら!パスから、クリーンビルドを行ったAndroid Studioは、魔法のように機能しました。
ジムC

すごい!ありがとう:)
Josep Escobar 2017年

1

最近、Android Studio 1.3でも同じ問題が発生しました。唯一の有効な解決策は、.gradleおよび.ideaフォルダーを削除し、プロジェクトをAndroid Studioに再インポートすることでした。


1

受け入れられた答えを試みたが成功しなかった人々のために、

受け入れられた答えも試してみましたが、うまくいきませんでした。その後、リポジトリを使用してプロジェクトを更新し、プロジェクトを同期させましたが、警告を解決できませんでした。




0

私の場合、GUIを使用して新しいファイルを作成し、ファイル内にインターフェイスを定義しました。ファイルが「java」ファイルではなかったため、このシンボルエラーが発生し続けました。それにはまったく拡張がありませんでした。

ファイル拡張子を「.java」に変更すると、システムはシンボルを正しく検出します。


0

私の場合、jarファイルにはMETA-INF / MANIFEST.MFファイルがありませんでした。追加した後、うまくいきました!


0

AndroidStudio 2.2.3を使用する私の場合、解決策はGradleラッパー/ディストリビューションを変更して、Gradle設定でローカルのものを使用することでした(「推奨」されているにもかかわらず)。 ここに画像の説明を入力してください



0

キャッシュの無効化/再起動またはプロジェクトのクリーンアップを試みました->プロジェクトを再構築します。これらは私にはうまくいきませんでした。

最終的な解決策は、IDEの左側にあるプロジェクトウィンドウを開き、プロジェクトモードで.gradleと.ideaフォルダーを削除してから、キャッシュを無効にして再起動します。これはそれを修正しました。



0

言語インジェクション設定の変更は私のために働いた。

カーソルを赤い下線付きのコードのいずれかに置き、 Alt + Enter

ここに画像の説明を入力してください

選択するLanguage Injection Settingsと、下図のようなウィンドウが開きます。

ここに画像の説明を入力してください

選択したオプションのチェックを外し、[OK]をクリックします

ここに画像の説明を入力してください

これが誰かを助けることを願っています。


0

私がでファイル全体を削除したときに.gradle/caches、スタジオに依存関係がダウンロードされました。依存関係は表示されませんが、External Librariesアプリを正常に構築できます。rebuild clean Invalidate and Restart影響はありません。次の手順で問題を解決しました:

  • Android Studioを完全に閉じる
  • 削除する .ideaプロジェクトのパッケージを
  • Android Studioを再起動します

0

私はこれを試しましたが、何もうまくいきませんでした:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

私の場合は、次のようにしてください:

  • Delete all files in .idea/libraries folder
  • Rebuild Project

0

私にとって私はgradle-wrapper.propertiesを4.4に更新しました

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

0

最も簡単な方法を見つけました

Studioで構文エラーの原因となっているライブラリを特定します。

たとえば、AppCompatActivityエラーが表示されている場合、AppCompat Dependencyに対して以下の操作を実行します。

  • 構文エラーと同期を示している依存関係を削除します。
  • もう一度追加して同期します。

それはそれであり、エラーはなくなった!

前

後


0

上記の答えのどれも私にはうまくいきません。

何度も試してみましたが、Project / build.gradleのcom.android.tools.build:gradleを2.3.0から3.0.1にアップグレードしました。

私はcom.android.tools.build:gradleのバージョンがAndroidStudioのバージョンと一致する必要があると思います、そして私のASバージョンは3.2.1です



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.