// 이곳에 쓴 내용은 앱 만들기라는 버킷리스트를 달성하기 위해 플러터를 공부하면서 정리하고 있는 내용입니다.
플러터에 대해 아는 것이 거의 없기 때문에 정리하면서 오류가 있을 수 있습니다.
오류를 발견하신 분은 댓글 남겨 주시면 감사하겠습니다.
오류 수정 도전~!
어제 오류를 수정 도전해 보도록 하자. 시작부터 안 될 것이라는 강한 예감이 든다.
책상에 앉는 것도 정말 미루고 미루다 앉았다.ㅜ.ㅜ
그래들~! 문제의 그래들을 하기 전에 일단 에뮬레이터로 돌려 본다.
G:\flutter project\firebasememo\android\app\src\debug\AndroidManifest.xml Error:
uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library [:google_mobile_ads] G:\flutter project\firebasememo\build\google_mobile_ads\intermediates\merged_manifest\debug\AndroidManifest.xml as the library might be using APIs not available in 19
Suggestion: use a compatible library with a minSdk of at most 19,
or increase this project's minSdk version to at least 21,
or use tools:overrideLibrary="io.flutter.plugins.googlemobileads" to force usage (may lead to runtime failures)
초반에 이런 메세지가 나온다. 영어를 잘 못해서 뭔 얘기인지 모르겠으나 API가 문제라는 뜻 같다. 에뮬 버전을 올리라는 건가? 내가 사용하는 건 Pixel 4 API 30인데.. 니들이 뭐라는지 모르겠으나 19나 21보다는 높다고..ㅜ.ㅜ
그게 아니라면 내 코드 버전이 낮다는 건가. 근데 이 코드는 1년 전 코드라서 최신 코드일텐데..
다시 그래들로..
검색 결과 flutter가 설치된 드라이브와 동일한 위치에 설치되어 있지 않은 문제 때문이란다.
해결 방법은
1. 동일한 드라이브로 프로젝트를 옮기기
2. flutter clean 명령어를 실행, Gradle Sync 수행, flutter pub get 실행
3. Gradle 버전을 다운 그레이드
가장 단순한 방법으로 가보자.
프로젝트를 c드라이브로 옮기고, 프로젝트를 열려고 했더니 나오는 경고 문구~
내 프로젝트는 trust~!
일단, 그래들 문제는 해결된 거 같다.
안드로이드 그래들 버전을 업그레이드하라는 메시지가 뜬다. 너는 다음에 만나자~
아무리 찾아봐도 Android 프로젝트 밑에
Android/app/src/main 폴더가 보이지 않는다.
app폴더 밑에 바로 manifestst.xml이 보이니 이걸 수정해 보자.
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="firebasememo"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-어쩌고 하는 애드몹 앱 ID를 넣어!"
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility?hl=en and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>
오류 코드가 떠서 봤더니 애드몹 앱 ID를 넣어!" 뒤에 /> 이 녀석을 넣어주자!
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library [:google_mobile_ads] C:\flutter project\firebasememo\build\google_mobile_ads\intermediates\merged_manifest\debug\AndroidManifest.xml as the library might be using APIs not available in 19
Suggestion: use a compatible library with a minSdk of at most 19,
or increase this project's minSdk version to at least 21,
or use tools:overrideLibrary="io.flutter.plugins.googlemobileads" to force usage (may lead to runtime failures)
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 20s
┌─ Flutter Fix ─────────────────────────────────────────────────────────────────────────────────┐
│ The plugin google_mobile_ads requires a higher Android SDK version. │
│ Fix this issue by adding the following to the file C:\flutter │
│ project\firebasememo\android\app\build.gradle: │
│ android { │
│ defaultConfig { │
│ minSdkVersion 21 │
│ } │
│ } │
│ │
│ Following this change, your app will not be available to users running Android SDKs below 21. │
│ Consider searching for a version of this plugin that supports these lower versions of the │
│ Android SDK instead. │
│ For more information, see: │
│ https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
Error: Gradle task assembleDebug failed with exit code 1
여기서 중요한 건
project\firebasememo\android\app\build.gradle:
android {
defaultConfig {
minSdkVersion 21
}
헛다리~!!
"C:\flutter project\firebasememo\build\google_mobile_ads\intermediates\merged_manifest\debug\AndroidManifest.xml as the library might be using APIs not available in 19"
이 경로로 들어가면 이미 21로 지정이 되어 있다.
여기저기서 또 검색 후 적용해 봤다. 일단. minSdkversion 이슈는 없어졌다. 아래는 오타를 냈지만 나중에 수정을 했다.
그리고 새로운 오류들
난 할 만큼 했다~
아참 애드몹 승인은 하루만에 났다. 헐~!!!
'버킷리스트 > 앱 만들기' 카테고리의 다른 글
오공완 (with Do it! 플러터 앱 프로그램밍) #14_2 (0) | 2024.05.18 |
---|---|
오공완 (with Do it! 플러터 앱 프로그램밍) #14_1 (0) | 2024.05.17 |
오공완 (with Do it! 플러터 앱 프로그램밍) #13_1 (0) | 2024.05.15 |
오공완 (with Do it! 플러터 앱 프로그램밍) #12_1 (0) | 2024.05.15 |
오공완 (with Do it! 플러터 앱 프로그램밍) #11 (0) | 2024.05.13 |