-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
에러가 나서 진행이 안됩니다 ㅠㅠ
19.03.02 22:17 작성 조회수 949
0
안녕하세요? Flutter 강의 잘 듣고 있습니다.
프로그래밍을 접한지 얼마 안된 사람인데요...
보고 따라하는 중에 한 곳에서 정체되어 더 이상 진행이 안 됩니다.
고민하다가 쪽지를 드립니다.
firebase google 로그인 연동하는 단계에서 오류가 났습니다.
일단 실행하면 LoginPage가 에뮬레이터에 뜨고 logcat에는
2019-03-02 22:04:54.161 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.164 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.199 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.200 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.209 5054-5082/com.blome.binstagramflutter E/FA: App is missing ACCESS_NETWORK_STATE permission
2019-03-02 22:04:54.210 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.214 5054-5082/com.blome.binstagramflutter E/FA: AppMeasurementReceiver not registered/enabled
2019-03-02 22:04:54.220 5054-5082/com.blome.binstagramflutter E/FA: AppMeasurementService not registered/enabled
2019-03-02 22:04:54.220 5054-5082/com.blome.binstagramflutter E/FA: Uploading is not possible. App measurement disabled
2019-03-02 22:04:54.226 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.230 5054-5082/com.blome.binstagramflutter E/FA: Failed to load metadata: Metadata bundle is null
2019-03-02 22:04:54.250 5054-5082/com.blome.binstagramflutter E/FA: Task exception on worker thread: java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />: com.google.android.gms.measurement.internal.zzfx.zzs(Unknown Source:593)
이런 에러 메시지가 뜨네요.
구글로그인 버튼을 누르면 앱이 종료되고
2019-03-02 22:09:24.125 5054-5054/com.blome.binstagramflutter E/MethodChannel#plugins.flutter.io/google_sign_in: Failed to handle method call
java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
at com.google.android.gms.common.GooglePlayServicesUtilLight.isGooglePlayServicesAvailable(Unknown Source:17)
at com.google.android.gms.common.GoogleApiAvailabilityLight.isGooglePlayServicesAvailable(Unknown Source:5)
at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source:94)
at com.google.android.gms.auth.api.signin.GoogleSignInClient.zze(Unknown Source:9)
at com.google.android.gms.auth.api.signin.GoogleSignInClient.getSignInIntent(Unknown Source:18)
at io.flutter.plugins.googlesignin.GoogleSignInPlugin$Delegate.signIn(GoogleSignInPlugin.java:291)
at io.flutter.plugins.googlesignin.GoogleSignInPlugin.onMethodCall(GoogleSignInPlugin.java:77)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:200)
at io.flutter.view.FlutterNativeView.handlePlatformMessage(FlutterNativeView.java:163)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:326)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2019-03-02 22:09:24.149 5054-5240/com.blome.binstagramflutter E/AndroidRuntime: FATAL EXCEPTION: GoogleApiHandler
Process: com.blome.binstagramflutter, PID: 5054
java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
at com.google.android.gms.common.GooglePlayServicesUtilLight.isGooglePlayServicesAvailable(Unknown Source:17)
at com.google.android.gms.common.GoogleApiAvailabilityLight.isGooglePlayServicesAvailable(Unknown Source:5)
at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source:94)
at com.google.android.gms.common.internal.GoogleApiAvailabilityCache.getClientAvailability(Unknown Source:23)
at com.google.android.gms.common.api.internal.GoogleApiManager$zaa.connect(Unknown Source:216)
at com.google.android.gms.common.api.internal.GoogleApiManager.zab(Unknown Source:47)
at com.google.android.gms.common.api.internal.GoogleApiManager.handleMessage(Unknown Source:173)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
--------- beginning of system
2019-03-02 22:09:24.160 5054-5072/com.blome.binstagramflutter E/flutter: [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
NoSuchMethodError: The getter 'authentication' was called on null.
Receiver: null
Tried calling: authentication
0 Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
#1 LoginPage._handleSignIn (package:binstagram_flutter/login_page.dart:52:62)<asynchronous suspension>
#2 LoginPage.build.<anonymous closure> (package:binstagram_flutter/login_page.dart:26:17)
#3 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
#4 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
#5 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
#6 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
#7 TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
#8 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
#9 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
#10 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
#11 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19)
#12 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
#13 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
#14 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
#15 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
#16 _invoke1 (dart:ui/hooks.dart:168:13)
#17 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
이렇게 뜹니다..
--------------------------------------------- -----------------------------------------------------
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 28
sourceSets { main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.blome.binstagramflutter"
minSdkVersion 21
targetSdkVersion 28
multiDexEnabled true
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
implementation 'com.google.firebase:firebase-core:16.0.7'
}
--------------------------------------------- --------------------------------------------------
buildscript {
ext.kotlin_version = '1.3.21'
repositories {
google()
jcenter()
}
dependencies { classpath 'com.android.tools.build:gradle:3.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.2.0'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
----------------------------------------- ----------------------------------------------
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
----------------------------------------------- < 매니페스트 > ---------------------------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blome.binstagramflutter">
<!-- The INTERNET permission is required for development. Specifically, flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="binstagram_flutter"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- This keeps the window background of the activity showing
until Flutter renders its first frame. It can be removed if
there is no splash screen (such as the default splash screen
defined in @style/LaunchTheme). -->
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
뭐가 잘못된걸까요?
Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
Firebase와 Google 로그인 기능 구현 (22.4.1 업데이트)
강의실 바로가기
답변을 작성해보세요.
1
오준석
지식공유자2019.03.03
로그를 보니 AndroidManifest.xml 에 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 를 추가하라고 나오네요.
이건 네이티브 개발할 때는 필요한데 플러터에서는 별도로 추가할 필요가 없는데 이상하네요.
라이브러리 설정이 제대로 반영이 안 되거나 꼬였거나 뭔가 이유가 있는 듯 합니다.
완전히 깨끗하게 안드로이드 스튜디오의 메뉴중 Tools > Flutter > Flutter Clean 을 실행해 보세요.
0
답변 2