강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

wlsdud338님의 프로필 이미지
wlsdud338

작성한 질문수

안드로이드 스튜디오 카카오로그인 구현 에뮬레이터 오류

작성

·

2.5K

0

안드로이드 스튜디오 에뮬레이터 실행 시,

E/OpenGLRenderer( 4274): Unable to match the desired swap behavior. 라는 에러가 뜹니다.
코드는 카카오 로그인 구현한 코드구요..
대체 왜 오류가 뜨는지 궁금합니다


import 'package:flutter/material.dart';
import 'package:kakao_flutter_sdk/kakao_flutter_sdk.dart';
import 'package:kakao_login/myhompage.dart';

void main() {
  KakaoSdk.init(nativeAppKey: 'e7a7bba0f8d93f336d1343d3f47222ae',
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      routes: <String,WidgetBuilder>{
        '/' : (BuildContext ctx) => const MyHomePage(),
      }
    );
  }
}

import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart';
import 'login.dart';

class MainViewModel {
  final SocialLogin _socialLogin;
  bool isLogined = false;
  User? user;

  MainViewModel(this._socialLogin);

  Future login() async {
    isLogined = await _socialLogin.login();
    if(isLogined) {
      user = await UserApi.instance.me();
    }
  }

  Future logout() async {
    await _socialLogin.logout();
    isLogined = false;
    user = null;
  }
}

import 'package:flutter/material.dart';
import 'login.dart';
import 'mainview.dart';

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final viewModel = MainViewModel(KakaoLogin());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('카카오 로그인'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Image.asset("assets/images/kakao_login_pic.png"),
            Text('${viewModel.isLogined}'),
            ElevatedButton(
                onPressed: () async {
                  await viewModel.login();
                  setState((){});
                },
                child: const Text('Login')
            ),
            ElevatedButton(
                onPressed: () async {
                  await viewModel.logout();
                  setState((){});
                },
                child: const Text('Logout')
            )
          ],
        ),
      ),
    );
  }
}

import 'package:kakao_flutter_sdk/kakao_flutter_sdk.dart';

abstract class SocialLogin {
  Future<bool> login();
  Future<bool> logout();
}

class KakaoLogin implements SocialLogin {
  @override
  Future<bool> login() async {
    try {
      //카카오톡이 설치되어있는지 확인
      bool isInstalled = await isKakaoTalkInstalled();
      if(isInstalled){
        try{
          //카카오톡으로 로그인
          await UserApi.instance.loginWithKakaoTalk();
          return true;
        } catch(error) {
          return false;
        }
      } else {
        try{
          //카카오톡 계정으로 로그인
          await UserApi.instance.loginWithKakaoAccount();
          return true;
        } catch(error) {
          return false;
        }
      }
    } catch(error) {
      return false;
    }
  }

  @override
  Future<bool> logout() async {
    try {
      //카카오톡과의 연결을 끊는다.
      await UserApi.instance.unlink();
      return true;
    } catch(error) {
      return false;
    }
  }
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

E/OpenGLRenderer( 4274): Unable to match the desired swap behavior. 이 오류는 안드로이드 에뮬레이터의 OpenGL 렌더링 과정에서 발생하는 것으로 보입니다. 이러한 오류는 일반적으로 애플리케이션의 실행을 방해하지는 않지만, 에뮬레이터의 그래픽 설정이나 하드웨어 가속 설정에 문제가 있을 수 있음을 나타냅니다.

다음의 방법을 시도해 볼 수 있습니다:

  1. 에뮬레이터의 그래픽 설정 변경: 에뮬레이터 설정에서 ‘Graphics’ 옵션을 ‘Hardware - GLES 2.0’에서 ‘Software - GLES 1.1’로 변경해 보세요.
  2. 최신 버전으로 업데이트: 안드로이드 스튜디오 및 에뮬레이터를 최신 버전으로 업데이트하세요.
  3. 하드웨어 가속 설정 확인: 컴퓨터의 BIOS에서 가상화 지원이 활성화되어 있는지 확인하세요.
  4. 에뮬레이터의 Cold Boot: 에뮬레이터를 완전히 종료한 다음 새로 시작해 보세요.

또한, 오류 메시지가 show stopping이 아닌 경우, 애플리케이션의 다른 부분에서 문제가 발생했는지 살펴보세요. 오류가 앱의 실행에 큰 영향을 주지 않는다면 테스트를 계속 진행하시면 됩니다. 그럼에도 문제가 지속된다면, 에뮬레이터의 로그를 자세히 확인하거나 실제 디바이스에서 테스트를 진행해 보시기 바랍니다.

만약 문제가 해결되지 않는다면, 에뮬레이터의 로그나 시스템의 그래픽 드라이버, 그래픽 카드와 관련된 설정을 좀 더 깊게 확인하시거나 개발자 커뮤니티에 도움을 요청하시는 것도 좋은 방법입니다.

wlsdud338님의 프로필 이미지
wlsdud338

작성한 질문수

질문하기