Float 및 google_sign_in 플러그인:플랫폼예외(sign_in_failed, com.google.android.gms.common.api).ApiException: 10: , null)
자격 증명에 대한 대화 상자(Google 양식)가 성공적으로 열리지만 자격 증명을 입력한 후 이 오류가 발생합니다.저는 여기서부터의 지시를 따랐습니다.Firebase 프로젝트를 만들고 Google APIs Console에서 Google Drive API(현재 필요한 것)를 활성화했습니다.
예외를 발생시키는 코드:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
스택 추적입니다.
E/flutter ( 5068): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 5068): PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter ( 5068): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:551:7)
E/flutter ( 5068): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:292:18)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #2 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:226:58)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #3 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:268:20)
E/flutter ( 5068): #4 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:339:48)
E/flutter ( 5068): #5 ThatsMyComponentState.theSignInFuction.<anonymous closure> (package:my_app/widgets/my_file.dart:666:45)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #6 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
E/flutter ( 5068): #7 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
E/flutter ( 5068): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter ( 5068): #9 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
E/flutter ( 5068): #10 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
E/flutter ( 5068): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter ( 5068): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:184:20)
E/flutter ( 5068): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
E/flutter ( 5068): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
E/flutter ( 5068): #15 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
E/flutter ( 5068): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
E/flutter ( 5068): #17 _invoke1 (dart:ui/hooks.dart:168:13)
E/flutter ( 5068): #18 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
google_sign_in 플러그인의 버전은 4.0.0입니다.
이것은 float docot -v의 출력입니다.
[√] Flutter (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17763.253], locale en-US)
• Flutter version 1.0.0 at C:\src\flutter-0.7.3\flutter
• Framework revision 5391447fae (10 weeks ago), 2018-11-29 19:41:26 -0800
• Engine revision 7375a0f414
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)
[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at C:\Users\myuser\AppData\Local\Android\Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = C:\Users\myuser\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.3)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 32.0.1
• Dart plugin version 182.5124
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
[!] IntelliJ IDEA Community Edition (version 2018.1)
• IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1.6
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.io/intellij-setup/#installing-the-plugins
[!] VS Code, 64-bit edition (version 1.30.2)
• VS Code at C:\Program Files\Microsoft VS Code
• Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator)
! Doctor found issues in 2 categories.
어떤 도움이든 감사하겠습니다.감사합니다!
저는 방금 같은 문제에 부딪혔습니다.디버그에서 실행 중이고 등록하지 않은 경우 이 문제가 발생할 수 있습니다.SHA
화재 현장에 있는 지문나는 그것을 생성함으로써 해결했습니다.debug.keystore
실행:
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
파이어베이스의 앱 안에 등록하는 것입니다.잊지 말고 새 파일을 다운로드하십시오.google-services.json
그 후에
이 항목도 참조하십시오.
편집 릴리스 모드에서 인증을 사용할 수 없는 경우 다음을 시도합니다.
- 릴리스 키의 SHA 인증서 지문을 추가합니다.
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
자세한 하십시오."get release certificate"
https://developers.google.com/android/guides/://developers.google.com/android/guides/client-auth
인증이 여전히 작동하지 않는 경우에는 Playstore에서 앱을 다운로드하고 "App Signing by Google Play 기능"을 활성화했기 때문일 수 있습니다. 이 경우에는 스토어 게시 콘솔로 이동하고 릴리스 관리 중인 앱 서명으로 이동하십시오.여기서 Firebase 콘솔에 등록할 SHA 인증서 지문을 찾을 수 있습니다.
이 문제를 고치려고 오랜 시간을 보냈습니다.
Grade.properties 열기 이 파일은 {{YOUR PROJECT}}/android/gradle.properties 아래에 있습니다.
스크린샷에 표시된 것처럼 다음 인수를 'org.gradle.jvmargs'에 추가합니다.
-XX:MaxHeapSize=256m -Xmx256m
'gradlew'를 마우스 오른쪽 버튼으로 클릭하고 'Open in Terminal'(터미널에서 열기)로 이동합니다. 이 파일은 {{YOUR PROJECT}}/Android/gradlew 아래에 있습니다.
다음 명령을 입력합니다.
gradlew signingReport
작동하지 않는 경우 먼저 두 번째 명령을 시도합니다.
./gradlew signingReport
컴파일이 완료될 때까지 기다린 후 SHA 키를 인쇄해야 합니다.
이 키를 사용하여 https://console.firebase.google.com/ 에서 앱을 인증합니다.
다음 솔루션은 Float 프로젝트에서 작동합니다.
1단계: SHA1 및 SHA256 키를 생성합니다.
2단계: SHA1과 SHA256을 모두 화력 기지에 추가합니다.(앱 설정에서)
3단계: 프로젝트 폴더의 안드로이드/앱에 구글-services.json을 다운로드합니다.
4를 합니다.flutter clean
.
5단계: 플래터 앱을 실행합니다.
자세한 내용은 다음을 참조하십시오.
https://developers.google.com/android/guides/://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/://firebase.google.com/docs/flutter/setup
Firebase 콘솔을 열고 설정 아이콘을 클릭합니다.
Firebase 프로젝트에 연결된 앱 목록이 표시됩니다.
안드로이드용
- Floating 프로젝트 내부의 터미널 열기
cd android
./gradlew signingReport
또는gradlew signingReport
- SHA1 키 붙여넣기
- 다드및을 합니다.
google-services.json
flutter clean
IOS:
- Firebase 프로젝트 구성
- IOS 선택
- 번들 ID 입력
- 자격 증명 다운로드
- 및
GoogleService-info.plist
info.plist에 추가합니다.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>**INSERT HERE YOUR RESERVED_CLIENT_ID FROM GoogleService-Info.plist**</string>
</array>
</dict>
</array>
이 문제를 발견했을 때, 저는 이 게시물에 설명된 다른 모든 해결책을 시도했습니다.아무 것도 효과가 없었습니다.결국 저는 그것을 깨달았습니다.이 경우 "지원 이메일"을 설정해야 했습니다.
SHA를 추가할 필요가 없었기 때문에 Firebase 콘솔의 Authentication 탭에서 Google 로그인 방법을 사용하도록 설정하지 않았습니다.
Google_sign_in이 작동하려면 다음과 같은 추가 단계를 수행해야 합니다.
- 디버그 중에 Google Sign In을 실행할 수 있지만 릴리스에서는 실행할 수 없는 경우 릴리스 키의 SHA1 및 SHA256을 Firebase에 추가하지 않았을 가능성이 높습니다. 를스키의 SHA려면다음사다용니를 사용합니다.
keytool -list -v -keystore ~/key.jks -alias key
디버그 키에서 2개, Google Play 링크에서 2개, 릴리스 키에서 2개 등 총 6개 이상의 SHA 자격 증명이 생성되어야 합니다.릴리스 SHA 자격 증명을 Firebase에 추가한 후에는 Google-services.json 파일을 다시 다운로드할 필요가 없습니다.
- GooglePlay Proguard 규칙 추가(https://github.com/flutter/flutter/issues/19102)
# Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
# GooglePlay Services
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class com.google.common.** { *; }
-dontwarn com.google.common.**
릴리스된 앱이 제대로 작동하지 않고 Google Play Signing, Play Store 계정에서 SHA 복사를 사용하는 경우 로컬 키의 SHA가 작동하지 않습니다.
에 대한 을 찾았습니다.com.google.android.gms.common.api.ApiException: 10
저는소키더를추해결습다니했서해가방에대▁▁i다▁and,. 처음에는 어리석고 생각했지만 (처음에는 어리석고 쓸모없다고 생각했지만 결국 해결책이 되었습니다(최대 10개의 SHA를 추가했습니다, 양이 많더라도 걱정하지 마십시오).
- 제가 이 열쇠들을 어디서 찾았죠?
Android 폴더를 입력하고 명령을 입력하여 이 모든 키를 찾았습니다../gradlew signingReport
(저는 리눅스를 사용하며, Mac에서도 작동합니다.는 " 창대한명다같습다니과음"입니다.gradlew signingReport
)
- 그 다음에?
그 후, 그는 제 단말기에 아주 긴 열쇠 목록을 출력했고, 저는 목록의 맨 위에 있는 다른 열쇠들을 모두 가져갔습니다.
참고: 앱의 각 패키지의 모든 키(디버깅 및 릴리스 모두)를 얻을 수 있지만, 모든 패키지가 동일하고 디버깅용으로만 사용할 수 있으므로 안심하십시오(따라서 동일한 키를 한 번만 사용해야 합니다).
- 마침내.
앱 키가 모두 생성되면 프로젝트의 Firebase 설정으로 이동하여 아래로 스크롤하여 찾은 키를 추가합니다.에는 그후다해합니다야드운로에를 .google-services.json
다시 파일을 작성하고 실행flutter clean
컴퓨터의 프로젝트 로컬 폴더에 있습니다.
이제 앱을 만들고 작동하는지 확인할 수 있습니다!
이것이 누군가에게 도움이 되기를 바랍니다.
Firebase Console에 SHA1을 등록한 후 모두가 누락된 부분은 "플러터 클린"입니다!
일찍 대답한 것이 맞습니다.그들 중 어느 것도 거짓이 아닙니다.하지만 여전히 오류에 직면한다면,PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
해야 할 한 는 당신의 당신확할한당가의입니다.OAuth 2.0 Client IDs
- https://console.cloud.google.com/apis/credentials 으로 이동합니다.
- 왼쪽 상단 화면에서 프로젝트 선택
- 플랫폼(iOS 또는 Android)에 클라이언트 ID 기반 만들기
- 다음 단계를 수행합니다.
클라이언트 ID를 생성하면 응용 프로그램이 예상대로 작동합니다.
참고 ---
하지만 먼저, 당신이 당신의 것을 등록했는지 확인하세요.SHA-1
,package id
email support
되었습니다. 다되니다었습드그리로를 다운로드 .google service json
방화벽 콘솔 프로젝트에서 사용할 수 있습니다.
파이어베이스에서 Google 로그인을 활성화하는 구성 단계를 놓쳤습니다.
연결된 iOS 및 웹 앱에서 Google 로그인이 자동으로 구성됩니다.Android 앱에 대한 Google 로그인을 설정하려면 프로젝트 설정에서 각 앱에 대한 SHA1 지문을 추가해야 합니다.
✅ 아래의 충분한 단계를 완료하기만 하면 됩니다.
- Google 인증 방법 사용
- 다음 위치에서 현재 프로젝트의 인증서 지문 구성
project-level setting
인증서 생성 방법. - 프로젝트 지원 이메일 선택
- 를 다운로드합니다.
google-service.json
당신의 프로젝트에. - 려달을 합니다.
flutter clean
- 하다 작시
flutter run
이 오류가 발생할 수 있는 한 가지 이유는 Google의 OAuth 동의서를 작성하지 않은 경우입니다.파이어베이스의 새로운 변경 사항입니다.
앱에 대한 동의서를 작성하기 위해 따라야 하는 단계는 다음과 같습니다.
- Google api 콘솔(현재 https://console.developers.google.com )로 이동하여 Firebase 프로젝트가 생성된 계정에 로그인했는지 확인합니다.
- 개발자 콘솔의 왼쪽 상단에 있는 "프로젝트 선택" 드롭다운에서 프로젝트를 선택합니다.
- 왼쪽 창에서 "인증 정보"로 이동한 다음 "OAuth assemption 화면"으로 전환합니다.
- 응용프로그램 이름에 응용프로그램의 공용 이름을 입력합니다.
- "응용프로그램 로고"에서 응용프로그램의 로컬 이미지 파일을 업로드합니다.
- 지원 전자 메일 아래에 Firebase 응용 프로그램에 나열된 것과 동일한 지원 전자 메일을 입력합니다.
- 아래로 스크롤하여 "어플리케이션 홈페이지 링크", "어플리케이션 개인정보 보호정책 링크", "어플리케이션 서비스 약관 링크"를 파이어베이스 앱이 위치한 인증 도메인 앞에 http://를 추가하여 작성합니다.
- 저장 클릭
이 단계들은 나에게 효과가 있었습니다!링크가 아직 존재하지 않을 수도 있지만, 여기서 이 솔루션의 출처를 참조하고 싶습니다.
추가했는지 확인합니다.
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
안드로이드/빌드.그레이들로
apply plugin: 'com.google.gms.google-services'
Android/app/build.gradle로 표시됩니다.또한 app/build.grle의 applicationId가 AndroidManifest.xml의 패키지 이름과 동일한지 확인합니다(가끔 패키지 이름을 변경한 후 applicationId를 변경하는 것을 잊어버릴 수도 있습니다).매니페스트 파일의 이 applicationonId 또는 패키지 이름은 Firebase 앱의 안드로이드 패키지 이름이어야 합니다.
플랫폼 예외 10의 경우 다음을 시도하십시오.
- 컴퓨터에 새 SHA1 지문을 생성합니다.
- Firebase Console에서 Firebase Android 앱 설정으로 이동합니다.
- Android 앱 설정에서 새 지문 추가 클릭
- 필드에 새 SHA1 지문을 붙여넣습니다.
- 새 json 구성 파일 생성
- Android 디렉토리의 구성 파일 바꾸기
- 펄럭이며
- 프로젝트 실행
OS를 다시 설치했을 때도 이런 일이 발생했습니다.그냥 도망가./gradlew signingReport
SHA-1 및 SHA-256을 Firebase 구성 "지문 추가"에 복사합니다.
이것은 어리석게 보일 수도 있지만, (과거에 소방 기지에서 일한 경험이 있는) 지금 저에게 일어난 일입니다.Google 인증을 사용하도록 설정하지 않았습니다.로그인 프롬프트(사용하지 않고 전화기의 Google 사용자 표시)가 계속 표시될 수 있으므로 이 작업을 수행해야 합니다.
저는 위의 모든 답변을 시도했지만 아무 것도 작동하지 않았습니다.누군가가 내 것과 같은 위험한 상황에 처했을 때를 대비해 내 해결책을 여기에 두고 있습니다.
- 내 것은 Firebase App Tester(Firebase 배포)를 통해 앱을 설치하고 있으며 Android Studio에서 얻을 수 있는 일반 디버그 또는 릴리스 인증서가 아닌 완전히 새로운 테스트 인증서로 앱을 종료했기 때문에 위의 답변과 함께 작동하지 않았습니다.
- 이 문제를 해결하려면 Firebase Console에서 Firebase App Distribution으로 이동하여 테스트 인증서 SHA-1 및 SHA-256을 복사합니다.
- Firebase 프로젝트 설정에 새 인증서 입력
이 답변에는 이미 30개 이상의 답변이 있지만 이 버그를 해결하기 위한 보다 완벽한 단계별 접근 방식입니다.
- 대부분 디버그가 없습니다.C/User/.android 디렉토리에 있는 keystore.하나를 생성하려면 다음을 수행합니다.
keytool -genkey -v -keystore 디버그.keystore -storepass rodroid -alias rodroid debugkey -keypass rodroid -keyalg RSA -keysize 2048 - 유효성 10000
조직 이름 Android 국가 코드 미국 및 이름 Android 디버그 사용
- 그렇게 한 후에 Gradlew가 있는 Android Floating 디렉토리로 이동하여 다음을 수행합니다.
./gradew 서명 보고서
- SHA1 SHA256 키 목록이 표시됩니다.debug라는 이름의 두 키를 모두 복사합니다.flooter 프로젝트 파이어베이스 프로젝트 설정의 키스토어(Google-services.json을 다운로드할 수 있는 곳)
프로젝트를 깔끔하게 정리하고 다시 빌드합니다.
사용한 각 PC에 대해 SHA-1 및 SHA-256을 생성해야 합니다.그리고 이 모든 것들을 파이어베이스 프로젝트 설정에 추가합니다.
그리고 당신은 OAuth Concept 탭에서 양식을 작성해야 합니다.
저의 경우, 어떤 대답도 문제를 해결하지 못했습니다.생각해 본 결과, 얼마 전에 애플리케이션의 패키지 이름을 변경했습니다.만약 당신의 경우, 당신은 당신의 새로운 패키지 이름으로 파이어베이스 프로젝트 내에 다른 애플리케이션을 만들고 구글-services.json 파일을 다시 다운로드해야 합니다.
이전에는 작동했지만 지금은 다른 PC를 사용하고 있다면, 해당 PC에서 생성된 새 SHA-1/SHA-256 지문을 Firebase의 프로젝트에 추가해야 합니다.이를 위한 좋은 단계별 예: https://stackoverflow.com/a/56091158/5365164
Android에서 구현이 작동하지 않는 경우 올바른 WEB를 사용해야 합니다. clientId
에공된에 GoogleProvider(clientId: clientId)
를 할 때firebase_ui_auth
꾸러미
반복합니다.WEB 사용 clientId
Android에서 Google SignIn이 작동하도록 합니다.
이것은 완전히 직관에 반하는 것이며 어디에도 기록되어 있지 않습니다.결국 이 댓글을 찾을 때까지 3일간의 시행착오를 겪었습니다.
SHA-1이 시스템에서만 생성되는 디버그 키여야 합니다. 그런 다음 Google-services.json 파일을 다운로드하여 프로젝트에 추가합니다.
저는 그 문제를 해결하는 데 5시간이 걸렸습니다.API 예외 10은 지문에 문제가 있다는 것을 의미한다는 것을 어디선가 읽은 기억이 납니다.그래서, 그것은 키 저장소이거나 소방 기지의 잘못된 구성이어야 했습니다.결국, 그것은 열쇠 가게였습니다.이 기능이 작동한 이유는 아직 확실하지 않지만 Windows 10을 사용하고 있습니다.
1.) Android/build.gradle 파일에 다음이 있는지 확인합니다.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
2.) 이 두 줄을 Android/gradle.properties 파일에 추가했습니다.
android.useAndroidX=true
android.enableJetifier=true
3.) C로 이동:\Users\YOURUSER\.android가 다음을 삭제했습니다.
debug.keystore
debug.keystore.lock
4.) 터미널을 admin으로 열고 이 디렉터리에 디버그 키 저장소를 생성합니다.
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
지문 획득:
$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
5.) 화재 기지의 구성에 SHA1 지문 추가
내 쪽에선 그게 끝이었어요.누군가에게 도움이 되길 바랍니다.
다음을 수행해야 합니다.
파이어베이스 콘솔에서 Google 로그인 사용
Android Firebase 앱을 설정할 때 SHA-1을 배치합니다.
- Firebase 프로젝트를 생성한 것과 동일한 계정으로 로그인한 후.귀하는 이 동의서를 작성했습니다. https://console.developers.google.com/apis/credentials/consent
그러나 위의 답변은 정확하지만 문제가 있는 경우 app/build.gradle의 signingConfig {} 섹션을 확인하는 것을 잊지 마십시오.Google-services.json 및 keystore와 일치하지 않을 수 있는 원하지 않는 keystore 파일 참조가 없어야 합니다.
어리석은 실수인 경우에는 'com.example.appname'과 같은 Firebase에 있는 applicationId가 기본 Config{} 아래의 app/src/build.grle 파일에 있는 applicationId와 정확히 일치하는지 확인하십시오.철자 오류, 대문자, 소문자 충돌이 없습니다.저의 경우에는 한 글자가 대문자여서 모든 문제를 일으켰습니다.
를 실행하는 다른 ./gradlew clean
저를 위해 일했습니다.
전화기에서 날짜를 수동으로 변경하면 Google로 로그인할 때 플랫폼 예외가 발생합니다.적어도 덜컹거리는 구글 로그인 라이브러리와 함께.
언급URL : https://stackoverflow.com/questions/54557479/flutter-and-google-sign-in-plugin-platformexceptionsign-in-failed-com-google
'programing' 카테고리의 다른 글
스파크에서 정보 로깅을 해제하는 방법은 무엇입니까? (0) | 2023.06.06 |
---|---|
디버그 모드에서 새 Firebase Crashlytics 사용 안 함 (0) | 2023.06.06 |
WPF 창이 닫혔는지 어떻게 알 수 있습니까? (0) | 2023.06.06 |
한 줄의 코드로 파일 읽기 및 닫기 (0) | 2023.06.06 |
dplyr을 사용하여 각 그룹에서 최대값이 있는 행을 선택하는 방법은 무엇입니까? (0) | 2023.06.06 |