묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
애드몹 일치율은 100%인데 노출율이 너무 낮아요
안녕하세요, 프로그래밍좀비님 강의 덕분에 시행착오를 줄이고아직 얼마되지는 않지만 앱 수익화에 도움을 많이 받고 있습니다.🙇♀ 애드몹 보고서를 보다가 의문이 생겨 질문드립니다.일치율은 모든 국가가 100%인데, 노출률이 평균 50%~ 심하게는 0%입니다.찾아보니 광고를 로드는 했지만 노출하지 못했을 때 이런 현상이 생길 수 있다고 하는데,현재 광고는 스플래시 화면에서 전면광고와, 홈배너를 로드하고 이후 전면광고를 보여주고 홈화면으로 넘어가도록 되어있습니다.스택은 expo, react-native를 사용하고, 안드로이드에만 배포되어있습니다!저는 경험이 짧아 원인 파악에 어려움을 겪고 있는데,혹시 이런 경험을 하셨거나 추측되는 원인이 있으실까요?
-
미해결하울의 안드로이드 인스타그램 클론 만들기
CloudFireStore에 데이터가 들어가지 않아요
//Promise method (권장) storageRef?.putFile(photoUri!!)?.continueWithTask { task: Task<UploadTask.TaskSnapshot> -> return@continueWithTask storageRef.downloadUrl }?.addOnSuccessListener { uri-> var contentDTO = ContentDTO() contentDTO.imageUrl = uri.toString() contentDTO.uid = auth?.currentUser?.uid contentDTO.userId = auth?.currentUser?.email contentDTO.explain = findViewById<EditText>(R.id.addphoto_edit_explain).text.toString() contentDTO.timestamp = System.currentTimeMillis() // :: firestore에 들어가지 않음!! firestore?.collection("images")?.document()?.set(contentDTO) setResult(Activity.RESULT_OK) finish() } 강의처럼 진행했고 오류도 안나고 하는데도 Cloud Firestore에 들어가지 않습니다..ㅠ 규칙도 다음과 같이 정의했습니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
앱 다작 관련해서 질문드립니다.
안녕하세요!다작 관련된 부분 수강 중에 추가로 노하우 궁금한 점이 있어 문의드립니다.회원 관리는 어떻게 하는지 아래 사항들이 궁금합니다. 회원들이 가입해서 사용하는 서비스들도 하시는것같은데, SNS 로그인 등 외부 api를 사용해서 하는지 궁금합니다.(하신다면 효율적으로 어떻게 관리하는지, 안하신다면 어떤 식으로 가입시키는지)회원들의 데이터들도 전부 한 DB를 사용해서 하는지 궁금합니다.(각 서비스별 디비 칼럼이 다 다를것같아요)DB를 하나로 300개 이상의 앱을 했을 때 회원 테이블은 어떻게 구분해서 사용하는지 궁금합니다.
-
미해결Flutter로 메신저앱 만들기
채팅목록 스크린에서 ref.listen ()말고 ref.watch().when()을 쓰는 이유는?
채팅목록화면을 만들때 final chatListProvider = StreamProvider.autoDispose<List<ChatModel>>((ref) { final currentUserModel = ref.watch(authProvider).userModel; return ref.watch(chatRepositoryProvider).getChatList( currentUserModel: currentUserModel, );});ref.watch(chatListProvider).when()을 사용하여 채팅목록화면을 만듭니다. when 문을 쓰게 되면 데이터 변화가 있을때마다 getChatList 함수가 실행됩니다. 매번 데이터에 변화가 있을때마다 getChatList함수가 실행이되면 너무 많은 데이터를 불러올 것으로 생각이 되어집니다. 여기서 궁금한 건, 채팅화면에서는 페이지네이션을 적용해서 초기화면을 조회할때는 limit를 설정해서 몇개의 데이터만 불러오고 화면을 올렸을때 lastid를 기준으로 데이터를 추가적으로 불러오는 형태로 화면을 구상하였는데, 채팅목록도 마찬가지고 처음에는 몇개의 데이터만 가져오고 사용자가 화면을 스크롤했을때 추가적으로 데이터를 불러오게 하면 안 되는건가요...?
-
미해결하울의 안드로이드 인스타그램 클론 만들기
firebase storage에서 putfile해도 이미지 업로드가 안되요..
var storageRef = storage?.reference?.child("images")?.child(imageFileName) // FileUpload storageRef?.putFile(photoUri!!)?.addOnSuccessListener { Toast.makeText(this, getString(R.string.upload_success), Toast.LENGTH_LONG).show() }이런식으로 강의랑 똑같이해도 에러는 안나지만Toast메시지가 안뜹니다. 제 버전과 storage 규칙은 아래와 같습니다.// 버전 firebaseAuth = "23.2.0" firebaseStorageKtx = "21.0.1" // 규칙 allow read, write: if false;
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문
sealed class 사용시 Radio위젯에 선택 표시가 안되는 이유는 Radio위젯에 value == groupValue 값이 같아도 객체 참고가 다르기 때문에 발생되는 것으로 확인했습니다. orderType비교시 == 값이 같은 경우 가능하도록 내용을 수정했는데 제대로 수정했는지 궁금해서 문의드립니다. *참조코드 2 내용 1.*참조코드 2 내용 수정이 잘되었는지 확인2.freezed 사용시 자동으로 만들어 주는 부분인데 seald 클래스 사용시 팁이 있는지 궁금합니다. 3.copyWith 부분도 추가하는 형태도 궁금합니다. 참조코드 1import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; class OrderSection extends StatelessWidget { final NoteOrder noteOrder; final Function(NoteOrder noteOrder) onOrderChanged; const OrderSection({ super.key, required this.noteOrder, required this.onOrderChanged, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('제목'), Radio<NoteOrder>( value: NoteOrder.date(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.date(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('날짜'), Radio<NoteOrder>( value: NoteOrder.color(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.color(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('색상'), ], ), ], ); } } 참조코드 2import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder { final OrderType orderType; const NoteOrder(this.orderType); factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; @override bool operator ==(Object other) { return runtimeType == other.runtimeType && other is NoteOrder && other.orderType == orderType; } @override int get hashCode => Object.hash(runtimeType, orderType); } class NoteOrderTitle extends NoteOrder { NoteOrderTitle(super.orderType); } class NoteOrderDate extends NoteOrder { NoteOrderDate(super.orderType); } class NoteOrderColor extends NoteOrder { NoteOrderColor(super.orderType); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[2023 코틀린 강의 무료제공] 기초에서 수익 창출까지, 안드로이드 프로그래밍 A-Z
Git에서 다운받은 폴더가 안열리는 분들
섹션 3에서 git 파일들을 다운받아서 열면 gradle 버전, JDK 버전이 안맞는다고 에러가 뜨네요.이거저거 찾아서 해봐도 도저히 안되던데, 그냥 구버전 안드로이드 스튜디오를 받아서 하니 되네요.비슷한 문제 있는 분들은 기존 버전 완전 삭제하고 (설정 파일 등까지 모두 삭제) 재설치 해보세요. https://developer.android.com/studio/archive여기서 Android Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023 버전 쓰시면 됩니다.(사이트가 안뜨면 언어를 영어로 바꾸시면 뜰 거에요)
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
질문에다 글을 적는 것이 맞는가싶지만..
안녕하세요, 좀비님의 강의를 듣고 욕심이 생겨서 첫 프로젝트를 세상에 공개해봤습니다. (좋은 강의 감사합니다 ㅜ_ㅜ 아직 덜봤지만 이렇게 의욕이 생기게 해주신 것만으로도..감사합니다)아쉽게도 앱은 아니고 웹인데 간단한 설명을 먼저 드릴까합니다 !광고는 애드센스로 현재 신청중에 있으며 이것저것 공부해보고 있습니다 !서비스명 : 부동산등기 Json 변환 및 갑을구 한눈에 보기 서비스를 소개합니다! ## 주요 특징1. 부동산등기 파일을 JSON으로 변환 : 복잡한 등기 파일을 손쉽게 데이터화!2. 갑을구 한눈에 보기 : 변환된 JSON 파일을 바탕으로 갑을구를 한눈에 확인하세요.3. 사용자 맞춤테이블 구성 : 보고 싶은 권리만 선택하여 원하는 테이블 형태로 볼 수 있습니다.4. 변환된 JSON 다운로드 : 변환된 파일을 간편하게 다운로드하여 저장하세요.## 타겟 고객1. 부동산등기 파일을 데이터화하고 싶은 분2. 등기 파일에서 갑구/을구만 빠르게 확인하고 싶은 분## 차별점무료로 부동산등기부등본 파일을 분석해주는 서비스가 없음분석된 Json 을 바탕으로 갑구, 을구를 한 눈에 보고 빠르게 [https://landscan.site](https://landscan.site)
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
>app>res>layout 이 존재하지 않습니다.
강의 내용의 안드로이드 스튜디오 버젼이 달라 따라 가는 것에 혼란이 있습니다.APP의 메뉴구조가 다릅니다.>app>res>layout 이 존재하지 않습니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
애드몹 match rate이 너무 낮아요
제 애드몹에는 세개의 앱이 있고 DAU는 하루 20명이 되지 않아요. 세 앱 모두 배너 광고만 달아둔 상태였습니다.4월 초에 광고게제제한이 걸리기전에 match rate은 8-90프로 이상이었어요. 일주일 정도 전에 광고 게제제한은 풀렸는데 match rate이 너무 낮아요. 2-3 프로 정도 밖에 되지 않아요.특정 앱만 그런게 아니라 세 게 앱 모두 match rate이 낮아요. 이런 계정에 앱을 추가하거나 광고 유닛을 다는 것이 소용이 있을까 이런 생각이 듭니다.혹시 match rate이 너무 낮아진 경험이 있으신가요? 어떻게 문제를 해결해야 할까요?
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류
The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류 관련으로 문의드립니다. sealed class에서 noteOrder.orderType를 접근할때 *참고사진1의 오류가 발생했습니다.해당 오류는 sealed class 내부에 noteOrder.orderType에 접근 할수 없다라는 내용으로 *참고코드 2에서 *참고코드 3와 같이 sealed class에서 getter를 선언하고 각 클래스에서 해당 값을 사용할수 있도록 @override로 수정했으나 의문점이 생겨 문의드립니다. 1.*참고코드3 sealed class 수정사항이 맞는지 궁금합니다.2.*참고코드3 사항이 맞는 경우 sealed class에서 getter로 OrderType get orderType; 사용했다면나머지 class부분에서 orderType를 강제로 구현을 해야하기 때문에 orderType를 사용하지 않는 class 작성시 문제가 될것 같습니다. 혹시 해당 사항에서는 어떻게 해야할찌 궁금합니다. *오류 내용*참고사진1 *order_section.dart*참고 수정코드1import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; class OrderSection extends StatelessWidget { final NoteOrder noteOrder; final Function(NoteOrder noteOrder) onOrderChanged; const OrderSection({ super.key, required this.noteOrder, required this.onOrderChanged, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, ), ], ), ], ); } } *note_order.dart*참고 코드2import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder<T> { factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { OrderType orderType; NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { OrderType orderType; NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { OrderType orderType; NoteOrderColor(this.orderType); } *참고 코드3(수정함)import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder<T> { OrderType get orderType; factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { @override OrderType orderType; NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { @override OrderType orderType; NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { @override OrderType orderType; NoteOrderColor(this.orderType); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Flutter 중급 1편 - 클린 아키텍처
유즈케이스 관련하여 질문 드립니다.
강의 정말 잘 듣고 있습니다! 혹시 유즈케이스 같은 경우는 레포지토리의 함수가 10개라고 가정하면 10개 다 만들어주는 편인가요??
-
미해결Flutter 중급 1편 - 클린 아키텍처
mockito사용시 오류 해결법
mockito 사용시 최신버전 mockito: ^5.4.6으로 사용했을때 freeze와 동일한 오류가 나는 경우analyzer문제 인것 같은데 mockito 상위버전 사용시 analyzer 높아서 빌드가 불가능한 현상이 있었습니다. clean후 아래 방법을 이용해서 빌드 진행하면 해결됩니다.! dependencies: analyzer: ^6.0.0dev_dependencies: mockito: ^5.0.6 사용 - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용 문의2
알려주신 sealed class으로 내용 작성 중에 선생님이 의도하신 부분으로 작성을 했는지 문의드립니다. 1.get_notes_use_case.dart 부분 switch case 이중 작성 부분2.switch case 이중 작성 부분 *참고코드4 처럼 final을 안쓰고 사용가능 여부 note_order.dart*NoteOrder sealed class 구현부*참고 코드1import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder<T> { factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { OrderType orderType; NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { OrderType orderType; NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { OrderType orderType; NoteOrderColor(this.orderType); } order_type.dart*OrderType 구현부 sealed class 구현부*참고 코드2sealed class OrderType<T> { factory OrderType.ascending() = Ascending; factory OrderType.descending() = Descending; } class Ascending<T> implements OrderType<T> { Ascending(); } class Descending<T> implements OrderType<T> { Descending(); } get_notes_use_case.dart*notes use case 구현부*참고 코드3import 'package:flutter_note_app/domain/model/note.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; import 'package:flutter_note_app/domain/model/util/order_type.dart'; import 'package:flutter_note_app/domain/repository/note_repository.dart'; class GetNotesUseCase { final NoteRepository repository; GetNotesUseCase(this.repository); Future<List<Note>> call(NoteOrder noteOrder) async { List<Note> notes = await repository.getNotes(); switch (noteOrder) { case NoteOrderTitle(orderType: final orderType): switch (orderType) { case Ascending(): notes.sort((a, b) => a.title.compareTo(b.title)); break; case Descending(): notes.sort((a, b) => -a.title.compareTo(b.title)); break; } break; case NoteOrderDate(orderType: final orderType): switch (orderType) { case Ascending(): notes.sort((a, b) => a.timestamp.compareTo(b.timestamp)); break; case Descending(): notes.sort((a, b) => -a.timestamp.compareTo(b.timestamp)); break; } break; case NoteOrderColor(orderType: final orderType): switch (orderType) { case Ascending(): notes.sort((a, b) => a.color.compareTo(b.color)); break; case Descending(): notes.sort((a, b) => -a.color.compareTo(b.color)); break; } break; } return notes; } } *저번 질문에서 선생님이 알려준 final 안쓰고 사용할수 있는 팁*참고 코드4switch (event) { case ChangeColor(): _changeColor(event.color); break; case SaveNote(): _saveNote(event.id, event.title, event.content); break; } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
출시 국가 확장
안녕하세요,"확장적 사고하기" 강의에서 "하나의 앱에 언어와 아이콘만 바꿔서 다양한 나라에 출시"하는 경우를 알려주셨는데요,반대의 생각이 떠올라 질문드립니다. 하나의 앱에서 언어선택을 할 수 있게 하고 그 앱을 여러 국가에 출시하는 것이 더 편하지 않나요? 그렇게 하지 않으시는 이유가 궁금합니다. 제가 이게 더 낫다고 생각한 이유는,다운로드/리뷰를 하나의 앱에 모아서 수치를 늘릴 수 있고관리 포인트도 줄어들기 때문입니다또 플레이스토어에서 앱을 출시할때 국가를 여러개 한번에 선택할 수 있고, 사용자 입장에서도 해당언어 리뷰만 걸러서 볼 수도 있기 때문에 그렇게 어렵지 않다고 생각했습니다. 다양한 시도를 해본 프로그래밍좀비님이라면 이미 생각/시도해보셨을 것 같은데, 제가 생각지못한 어려움이 있거나 혹은 장점이 생각보다 크지 않은지 궁금합니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
유틸리티 앱 수익화
안녕하세요, 첫 앱으로 유틸리티 앱을 만들어보고 있습니다.수익화를 어떻게 할지 마침 고민하던차에 딱 저와 같은 상황을 언급하셔서 질문 드려요. (섹션 7 "광고 기반 수익화 전략" 1분 25초 경)강의 초반에 언급하신 "산타 전화" 앱이나 "방귀 소리" 앱은 굉장히 단발성인 앱인데 어떻게 수익을 내셨는지 궁금합니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
앱 다작이 아직도 유효한걸까요?
최근 구글 비공개 테스트 정책으로 인해 12인이 2주동안 테스트가 들어가야하고 만약 허가가 나지않았을시에 다시 2주동안 테스트를 해야하는 문제들이 있는거같은데 저 또한 이러한 문제를 피하기 위해개인사업자로 duns를 발급하여 조직계정으로 만드는거까지 생각해봤는데 이것 또한 구글 정책으로인해 개인사업자는 개인으로 하지않으면 결제프로필에 문제가 생기는거같습니다..이러한 구글정책으로인해 신규진입하는저로써는 이렇게 좀비님처럼 다작으로하는 앱 개발에서 돈을 벌수 있을까라는 생각이들어 선뜻 손이가질않더라구요 좀비님은 이러한 상황에서 앱 개발 신규진입에서도 가능성이 있다고 생각 하시는지 궁금합니다
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
경쟁 앱이 아예 없는 경우
안녕하세요 생활에서 불편한 점을 기반으로 앱 아이디어를 떠올렸는데, 검색해보니 경쟁앱이 없는 것 같다면 어떻게 하면 좋을까요?제가 생각한 가능성은 이렇게 세가지인데요: 1. 사용자 수요가 없다 2. 검색 방식이 잘못됐을 뿐 존재한다 3. 진짜로 아무도 발견못한 보물이다3번이라면 너무 좋겠지만.. 1~2번인 경우를 방지하고 싶은데 어떻게 하면 좋을지 모르겠습니다. 강의에서 다루는 data.ai 등은 이미 존재하는 트렌드에서 아이디어를 얻긴 좋은데 이런 앱이 이미 있는지 더 잘 찾아주는 툴은 있을지, 이런 수요가 커지고 있는지 찾아보는 방법은 없을지 궁금합니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
애드몹 광고 게재 제한
안녕하세요 앱을 출시하고 애드몹 광고를 운영하고 있었는데 약 2주 전에 광고 게재가 제한돼서 수익 창출이 막힌 상황입니다. 사유는 "무효 트래픽 우려로 인해 현재 제품에 대한 광고 게재가 제한되고 있습니다." 라고 합니다.찾아보니 제가 해결할 수 있는 부분은 없고 무한정 대기를 해야 할 거 같은데 혹시 이런 상황을 겪고 해결해 본 적이 있으신가요?그리고 구글 애즈를 사용해서 광고를 하고 있었는데 수익이 언제 다시 발생할 지 모르는 상황에서 구글 애즈를 계속 사용하는 게 맞을까요? 아니면 일단은 멈추는 게 좋을까요?
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
안드로이드 스튜디오 미어캣 버전 사용 한글 깨짐
안녕하세요 강의를 듣고 있는 수강생 입니다. 다시 강의를 보면서 공부 중인데, 안드로이드 스튜디오가 버전이 업그레이드(미어캣 버전)가 되어서 설치 후 콘솔창에 간단하게 문구 출력을 하려고 해보니 한글이 깨지는 현상이 발생 합니다. 검색을 해서 위와 같은 현상을 해결해보려고 했으나, 안되서 질문 남깁니다. 방법을 알려 주시면 감사드리겠습니다.