일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- soundpool
- 안드로이드
- chart.js
- javascript
- mysql
- 안드로이드 푸시
- html5
- xe
- 자동 생성
- UML
- php 시큐어코딩
- C# IO
- 설치
- php 취약점
- curl
- Mail Server
- roundcube
- not working
- WebView
- PHP
- FCM
- 폼메일
- 자바스크립트
- 안드로이드 gcm
- 우분투
- C#
- 안드로이드 푸쉬
- android 효과음
- Android
- dovecot
- Today
- Total
그러냐
flutter android.support.v4.content does not exist, cannot find symbol ActivityCompat, ContextCompat 본문
flutter android.support.v4.content does not exist, cannot find symbol ActivityCompat, ContextCompat
관절분리 2020. 6. 18. 17:29출처 : https://dalgonakit.tistory.com/124
괜히 골치가...
뭔가 검색을 해도 마땅한게 안나오고...
하란대로 해봐도 잘 안되고;;.
android 문제같긴한데...
Package
패키지가 만들어지는 시점에서 여러가지 빌드 환경이 주어지게 됩니다.
빌드 환경이 조금만 달라도 빌드가 안될 수 있기 때문에 신경써서 맞춰줘야 합니다.
왠만하면 gradle버전, compileSdkVersion, minSdkVersion까지 맞추는걸 추천합니다.
AndroidX (제트팩 라이브러리)
안드로이드 팀에서 여러가지를 지원하는 라이브러리(SupportLibrary)를 각각 제공하다가, 최근에 AndroidX 통합 라이브러리를 제공하기 시작했고, Android 9.0(API 28) 이상부터는 AndroidX를 사용이 필수가 되었습니다.
그래서 발빠른 flutter package 개발자는 androidX를 사용했고, 업데이트가 예전에 된 package는 SupportLibrary를 사용합니다.
결국 이런일로 인해 안드로이드 프로젝트의 메인이 되는 app 프로젝트에서는 androidX를 사용하면 supportLibrary를 사용하는 패키지에서는 symbol이 겹칠 수 있습니다. 그래서 위에 스크린샷 처럼 error가 발생하곤 합니다.
해결방법 정리
간단합니다.
1. Gradle버전
프로젝트와 모든 모듈의 버전을 3.3.0으로 맞춥니다.
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
}
}
2. AndroidX로 변경 (/project/app/build.gradle)
dependencies에 포함되는 support 관련 라이브러리를 없애고 androidx 라이브러리를 추가하는것.
dependencies {
implementation 'androidx.core:core:1.0.1'
}
3. SdkVersion 맞추기 (/project/app/build.gradle)
compile을 28, min을 16으로 맞춰줍니다.
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 16
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
..
}
3. import 변경 (sourceCode)
기존에 사용하던 import는 사용하지 않도록 변경합니다.
import android.support.v4.app.ActivityCompat
===> import androidx.core.app.ActivityCompat
import android.support.v4.content.ContextCompat
===> import androidx.core.content.ContextCompat
4.property적용 (/project/gradle.properties)
아래 문구를 추가해서 AndroidX를 사용하고
enableJetifier를 true로 적용해서 다른 라이브러리가 androidX용으로 작성된것처럼 자동변환한다는 옵션을 켜줍니다 (잘 안되는듯?)
android.useAndroidX=true
android.enableJetifier=true
5. 끝!
깔끔하게 gradle sync도 잘되고,
project build도 잘 됩니다
'android' 카테고리의 다른 글
Android Studio 에서 Gradle Sync 시 오류 대처 방법 (0) | 2020.08.06 |
---|---|
안드로이드 Button style 버튼 꾸미기 (0) | 2020.07.13 |
안드로이드 풀 스크린 모드 (0) | 2020.03.23 |
안드로이드 확장자별 파일 열기 (0) | 2019.08.22 |
안드로이드 이미지 뷰 여백 없애기 (0) | 2019.07.11 |