- no resource found that matches the given name android textappearance material inverse 와 같은 오류
[이곳]을 보면 앱의 build.gradle 내부에 있는 compileSdkVersion과 buildToolsVersion이 프로젝트에서 사용하는 리소스 버전과 달라서라고 한다. 에러를 일으키는 리소스가 v21이라면 버전을 21 계열로, v23이라면 23 계열로 바꿔주면 된다.
- This support library should not use a different version (19) than the compileSdkVersion (23) 와 같은 오류
만약 라이브러리의 버전이 ‘com.android.support:support-v4:19.1.0’와 같이 되어있었다면 19.1.0 부분을 23.0.0과 같이 바꿔보자. 그럼 코드 추천에서 23 계열의 최신 버전을 알려준다.
- illegal character: \65279
파일 인코딩이 UTF-8 with BOM으로 되어있는 경우에 나타나는데, 파일 맨 처음에 삽입된 BOM 캐릭터(\ufeff)를 인식하지 못해서 그렇다. 메모장이나 Sublime Text 등의 편집기로 파일을 연 다음 인코딩을 BOM이 없는 UTF-8로 저장해주거나 다른 인코딩(EUC-KR, CP949 or MS949 등)으로 지정해주면 된다.
- package org.apache.http does not exist
안드로이드 6.0 (Marshmallow)에서 지원을 중단한 패키지여서 사용을 못하는 것이다. 하지만 build.gradle에 아래와 같은 코드를 추가하면 이용할 수 있다.
1 2 3 |
android { useLibrary 'org.apache.http.legacy' } |
build.gradle 내부에 이미 android 블럭이 있다면 그냥 useLibrary 줄을 추가하면 된다.
- failed for task ‘:app:transformClassesWithDexForDebug’…
build.gradle 내부의 defaultConfig 블럭에 아래와 같이 multiDexEnabled true를 추가하자.
1 2 3 |
defaultConfig { multiDexEnabled true } |
아마 이 문제를 해결할 땐 빌드 시간이 엄청 길 것이다. 빌드 자체도 되지 않을거고 “multiple dex files define”라는 에러가 나올 수도 있다.
이 문제는 안드로이드 스튜디오가 자동 import를 할 때 Google Play 라이브러리를 “compile ‘com.google.android.gms:play-services:+'”와 같이 동적으로 받아와서 컴파일하게 만들었기 때문인데, 예전 Google Play 라이브러리는 크기가 작아서 괜찮았지만 지금은 저렇게 “play-services”까지만 적혀있으면 너무 많은 패키지가 컴파일되기 때문에 자기가 실제로 쓰는 서비스만 지정해줘야 한다. [참고하세요] 본인은 아래와 같이 바꾸었다.
1 2 3 |
dependencies { compile 'com.google.android.gms:play-services-base:8.4.0' } |
본인은 여기까지 하고 나니 빌드와 실행이 모두 이루어졌다. 하지만 가능하면 “Analyze->Inspect Code->OK”를 통해 우리가 정리할 코드를 확인해주자.