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')
}

프로젝트가 잘 컴파일되고 문제없이 트위터 개체를 만들 수 있습니다. 그러나 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의 힌트를 따르지 않았습니다. 그 후 오류가 사라졌습니다. 그 프로그램의 제안을 맹목적으로 따르도록 조심하십시오.
David

답변:


237

이것이 작동할지 여부는 알 수 없지만 지금까지 생각한 유일한 생각 : AS 내의 파일 트리에서 jar 파일을 마우스 오른쪽 단추로 클릭하고 "라이브러리로 추가 ..."를 선택합니다.

편집 : "파일"-> "캐시 무효화 ..."를 수행하고 "무효화 및 다시 시작"옵션을 선택하여이 문제를 해결할 수 있습니다.

편집 2 : 이 수정은 모든 유사한 사건에 대해 작동해야하며 twitter4j 특정 해결 방법이 아닙니다.


항아리를 마우스 오른쪽 버튼으로 클릭 할 때 옵션으로 표시되지 않습니다. 0.2.13을 실행하고 있습니다.
TG-T

이것은 아마도 당신이 이미 이것을했다는 것을 의미합니다. 파일> 프로젝트 구조를 시도하고 모듈 노드에 .jar 파일이 있는지 확인하십시오.
doydoy

11
캐시를 무효화하고 다시 시작해도 작동하지 않습니다. 또한 android studio를 다시 설치하고 프로젝트를 다시 가져 왔습니다. 이것은 매우 성가신 일입니다 ...
clocksmith

3
"파일"-> "캐시 무효화 ..."가 방금 하루를 구했습니다. 이 문제에 너무 많은 시간을 낭비했습니다. 이 답변이 인기 검색 결과가 아닌 이유는 무엇입니까? 정말 고맙습니다!
Eric Cochran

1
내 감사에서 던지기
예브게니 Simkin

33

파일> 프로젝트 구조> (프로젝트 선택)> 종속성에서 종속성 순서를 변경해보십시오.

Invalidate Caches는 나를 위해 작동하지 않았지만 목록의 맨 아래에서 맨 위로 내 빌드를 이동했습니다.


종속성 순서를 변경하면 도움이되고 답변에 제공된 모든 솔루션을 시도했지만 귀하의 솔루션 만 도움이됩니다. 감사합니다.
wqycsu

하나의 의존성 만 위로 옮기는 것이 나를 위해 트릭을했습니다! (안드로이드 스튜디오 3.0.1).
Sébastien

예, 어떤 종속성을 이동하는지는 중요하지 않습니다. 순서 만 변경하면됩니다. 이것은 Android Studio 3.3에서도 작동합니다.
karique

12

이것이 나를 위해 일한 것입니다.

프로젝트 패널에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭 Open Module Settings하고 팝업 메뉴에서 선택 합니다.

그런 다음 Compile SDK Version사용 가능한 최소 버전 (프로젝트에서 설정 한 최소 SDK 버전)으로 변경합니다. Android 스튜디오가 모든 것을로드 할 때까지 기다립니다.

오류가 발생하면 무시합니다.

이제 Java 파일로 이동하면 Android Studio에서 가져 오기를 제안합니다.

import android.support.v4.app.FragmentActivity;

그것을 가져온 다음 돌아가서 Open Module Settings컴파일 sdk 버전을 이전 버전으로 변경하십시오.

로드되고 짜릿해질 때까지 기다리십시오.


훌륭한 작품입니다. 제 경우에는 Android Studio에서 모든 SDK 클래스를 해결할 수 없다고보고했습니다 (String, Integer, TextView 등 포함). 그 전에 aStudio는 또한 프로젝트를 컴파일하는 데 사용한 android-14 SDK를 찾을 수 없다고 말했습니다. 나는 그것을 무시했기 때문에 문제가 발생했습니다. 마지막으로, 나는이 대답을 찾아서 컴파일 sdk 버전을 변경 한 다음 작동했습니다. 시간을 절약 해주셔서 감사합니다.
VinceStyling

Now go to your java file and android studio will suggest you import제 경우에는 아닙니다
NineCattoRules

9

내 경우 가져온 라이브러리 프로젝트로 인해 build.gradle에 무언가를 입력하고 다시 삭제하고 지금 동기화를 누르면 오류가 사라졌습니다.


6

또한 내 Android 라이브러리 중 일부 (Android Studio 3.0 및 3.1.1 사용)에 따라 Android 앱에서이 문제가 발생했습니다.

lib를 업데이트하고 앱으로 돌아가서 Gradle Sync를 트리거 할 때마다 Android Studio는 lib에 대한 코드 변경 사항을 감지 할 수 없었습니다. 컴파일은 잘 작동했지만 Android Studio는 lib를 사용하는 일부 코드에서 빨간색 오류 줄을 표시했습니다.

조사한 후 gradle이 내 라이브러리의 이전 컴파일 버전을 계속 가리 키기 때문이라는 것을 알았습니다. yourProject / .idea / libraries /로 이동하면 컴파일 된 libs 버전에 대한 링크가 포함 된 xml 파일 목록이 표시됩니다. 이러한 파일은 Gradle__artifacts _ *. xml로 시작합니다 (여기서 *는 libs의 이름).

따라서 Android Studio가 최신 버전의 libs를 가져 오려면 이러한 Gradle__artifacts _ *. xml 파일을 삭제해야합니다. 그러면 Android Studio가 해당 파일을 다시 생성하여 최신 컴파일 된 libs 버전을 가리 킵니다.

"Gradle 동기화"를 클릭 할 때마다 수동으로 수행하고 싶지 않은 경우 (누가 원하는 작업 ...),이 작은 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는 최신 버전의 libs를 사용해야합니다.


5

내 프로젝트 에서이 문제 (빨간색 코드이지만 올바르게 작동 함)에 살았을 때;

먼저 (File-> Indicate Cashes)-> (Invalidate and Restart)로 만들었습니다.

마지막으로 내 앱에서 build.gradle 파일을 다시 동기화합니다. 문제가 해결 된 후.


3

Invalidate Caches / Restart 이번에는 나를 위해 일하지 않았습니다.

다음과 같은 해결책을 찾았습니다.

  1. build.gradle 에서 compile ***또는 implementation ***행을 제거하십시오 .

  2. 청소하고 재건하십시오. 여기에서 오류가 발생해야합니다.

  3. 1 단계의 줄을 다시 build.gradle에 추가합니다.

  4. 청소하고 재건하십시오.

기묘한...


2

이 문제는 Glass 프로젝트가 Android Studio의 기본 위치에 설치된 SDK를 사용하지 않을 때 발생했습니다. 모든 것을 다시 다운로드하지 않으려 고했기 때문에 이전에 ADT에서 사용했던 다른 위치를 사용하고있었습니다. 프로젝트를 Android Studio 설치 위치의 SDK 위치로 다시 가리키면 문제가 해결되었습니다.


예, 그것은 또한 좋은 외침이라고 생각합니다. 기본적으로 android studio는 모든 SDK가 기본 android studio 설치 디렉토리에 설치되어 있는지 결정합니다. 이 패턴을 따르지 않는 것이 있으면 수정해야합니다.
doydoy

2

나는 며칠 동안이 문제가 있었고 마침내 그것을 알아 냈습니다! 다른 모든 솔루션은 나를 위해 작동하지 않았습니다.

솔루션 : 프로젝트 경로에 특수 문자가 있습니다!

그것들 중 어느 것도 가지고 있지 않은지 확인하고 당신은 괜찮을 것입니다. 또는 적어도 다른 솔루션 중 하나가 당신을 위해 작동해야합니다.

이것이 누군가를 돕기를 바랍니다!


!와 같은 특수 문자가있는 프로젝트 경로가 있는지 확인하십시오. (느낌표). 내가 경험 한 유사한 문제에서 stackoverflow.com/questions/32477067/… , 이것이 근본 원인이었습니다. 많은 Java 애플리케이션은 이러한 특수 문자를 허용하지 않는 것 같습니다 (예 : 터미널에서 'gradlew clean'을 수행하면 실패하고 RunTimeException이 발생합니다.). 온라인에 게시 된 다른 솔루션 중 어느 것도 도움이되지 않았습니다. 그러나 일단 제거하면! 경로에서 깔끔하게 빌드 한 Android Studio는 마법처럼 작동했습니다.
Jim C

와우! 감사합니다 :)
Josep Escobar

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

이것은 나를 위해 일했습니다. (File-> Indicate Cashes)-> (Invalidate and Restart).


0

캐시 무효화 / 다시 시작 또는 프로젝트 정리-> 프로젝트 다시 작성을 시도했습니다. 이것들은 나를 위해 작동하지 않았습니다.

최종 해결책은 IDE의 왼쪽에 프로젝트 창을 열고 프로젝트 모드에서 .gradle 및 .idea 폴더를 삭제 한 다음 캐시를 무효화하고 다시 시작할 수 있습니다. 이것은 그것을 고쳤습니다.


0

build.gradle에서 컴파일을 구현으로 변경하십시오.


0

언어 주입 설정을 변경하는 것이 저에게 효과적이었습니다.

빨간색 밑줄이 표시된 코드에 커서를 놓고 Alt + Enter

여기에 이미지 설명 입력

이제 선택 Language Injection Settings하면 아래와 같은 창이 열립니다.

여기에 이미지 설명 입력

선택한 옵션을 선택 취소하고 확인을 클릭하십시오.

여기에 이미지 설명 입력

이것이 누군가를 돕기를 바랍니다.


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 종속성에 대해 아래 작업을 수행합니다.

  • 구문 오류 및 동기화를 보여주는 종속성을 제거하십시오.
  • 다시 추가 및 동기화.

그게 다야, 오류가 사라졌습니다!

전에

전에

후


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.