이 글은 Flutter를 기준으로 작성되었습니다.
2022-03-23 기준으로 플러터 공식 문서에 맞춰 글을 리뉴얼하였습니다.
1. Mapping new ns to old ns
2. This app is using a deprecated version of the Android embedding.
이렇게 생긴 두가지 warning을 본 사람들이 많을 것이다.
위에 접어놓은 글은 gradle 버전을 올림으로써 일시적으로 warning을 막아주지만 근본적인 해결책이 되지는 못한다.
그래서 flutter 공식문서를 참고하여 글을 리뉴얼한다.
문서를 살펴보니 가장 좋은 방법은 deprecated된 라이브러리들을 걷어내면 된다.
지금부터 살펴보자.
1. android/app/src/main/java/패키지명/MainActivity.java
package 호출을 제외한 나머지 코드를 위와 같이 바꿔준다.
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}
Kotlin의 경우에는 아래와 같이 하면 된다.
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}
만약 onCreate 내부에 추가한 코드가 있다면 아래와 같이 작성해준다.
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.dev/battery";
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
// 기존의 코드를 넣어준다.
}
);
}
}
2. android/app/src/main/AndroidManifest.xml
<!-- before -->
<application
android:name="io.flutter.app.FlutterApplication"
>
<!-- ...생략... -->
</application>
위 코드의 android:name을 ${applicationName}으로 바꿔준다.
혹시나 헷갈릴수가 있어서 강조한다. application 태그를 바꾸는 것이다. activity 태그가 아니다!
<!-- after -->
<application
android:name="${applicationName}"
>
<!-- ...생략... -->
</application>
이번엔 meta-data 태그 차례다.
태그명이 meta-data인 태그들을 모조리 지우고 아래의 태그만 activity 태그 안쪽 하단에 추가한다.
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
3. android/app/src/mian/res/value/styles.xml
style 태그의 name 프로퍼티가 NormalTheme 하나만 있을텐데
해당 태그 아래에 새로운 style 태그를 추가해주자.
@drawable 옆에 launch_background라고 써놨는데, res/drawable에 있는 launch_background 파일을 지정해놓았다.
이게 무슨 효과인지는 잘 모르겠다.
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
여기까지 했으면 워닝 없이 너무나도 잘 돌아가는 것을 볼 수 있을것이다.
만약 gradle 관련 warning이 또 발생한다면 아래의 접은글을 펼쳐서 버전업을 해보자.
그래도 안되면...모르겠다 ㅎㅎ;
더보기 버튼을 클릭하면 리뉴얼 이전 글을 보실 수 있습니다.
위와 같은 워닝이 뜨는 사람이 많을 것이다.
스택오버플로우를 찾아봐도 gradle 업그레이드 하라고만 알려주거나 SDK를 재설치하라고 한다.
(그래서 업그레이드 어떻게 하는데… 그걸 알려달라구…)
재설치는 사실 해답은 아니다. 프로젝트 설정 문제이다.
해결 방법은 간단하다.
2021년 12월 기준으로는gradle 버전을 최소 7.0.1 이상으로 올려주면 된다.
android의 gradle 버전 관련 설정을 바꿔주면 된다.
- android >build.gradle
- android > gradle > wrapper >gradle-wrapper.properties
두 파일에서 gradle의 버전을 올려주면 된다.
build.gradle
gradle-wrapper.properties
만약 위의 방법대로 해도 안된다면
1. 7.0.2로 버전을 올려본다.
2. 워닝 메시지에서 7.0.1보다 높은 버전을 명시해주는 경우가 있는데 그 버전으로 작성해보자.
'프로그래밍 > 발생한 에러들' 카테고리의 다른 글
[NestJS] SELECT시 DTO에 OmitType 적용 안되는 이슈 (0) | 2022.10.31 |
---|---|
[jest] ReferenceError: React is not defined (0) | 2022.04.16 |
[Javascript] getElementById is not a function (0) | 2021.10.02 |
[Android] E/net.daum.mf.map.n.api.NativeBaseNetConnection: Cleartext HTTP traffi (0) | 2021.09.27 |
[Android] 카카오지도 API 호출 시 앱이 꺼짐 (0) | 2021.09.10 |