묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
30 강 소스 좀 올려 주십시요
선생님 명언리스트 페이지 제작 - ListView 소스 좀 올려 주십시요. 어떤 곳이 잘못되었는지 비교하고 싶습니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
onBackPressed 함수가 동영상 하고 다르게 동작합니다.
선생님 안녕하세요.아래 함수만 추가 하고 back버튼을 클릭 한번만 해도 오류 없이 자동으로 앱이 종료 됩니다.로그도 다르게 나옵니다.전체 소스 공유 드립니다. https://drive.google.com/file/d/1pywWeGHuAAZb0a0nC1IZZdje1wLZxlLv/view?usp=sharing override fun onBackPressed()
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
ListView 초기 실행 안됩니다.
강의대로 실행하면 검은 앱 화면만 나옵니다.몇번을 반복해서 타이핑해도 같은 증상이 나옵니다. 현재 저는 아래 버전 입니다.Android Studio Otter 2 Feature Drop | 2025.2.2 Patch 1Build #AI-252.27397.103.2522.14617522, built on December 19, 2025Runtime version: 21.0.8+-14196175-b1038.72 amd64VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.Toolkit: sun.awt.windows.WToolkitWindows 11.0GC: G1 Young Generation, G1 Concurrent GC, G1 Old GenerationMemory: 2048MCores: 8Registry: ide.experimental.ui=trueNon-Bundled Plugins: com.levinzonr.arch.jetpackcompose.plugin (1.6.0) Dart (500.0.0) io.flutter (88.2.0) 동영상이 너무 낮고, 등록된 소스하고도 차이가 나서 비교하면서 하기가 참 어렵네요 ㅜ..ㅜ미묘하게 다른게 있는것 같은데 기초를 따라하기가 어려워요. --activity_main.xml<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ListViewandroid:id="@+id/mainListview"android:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout>--ListViewAdapter.ktpackage com.chpang.listview_expimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.BaseAdapterclass ListViewAdapter(val List: MutableList<String>) : BaseAdapter(){override fun getCount(): Int {return List.size}override fun getItem(position: Int): Any {return List[position]}override fun getItemId(position: Int): Long {return position.toLong()}override fun getView(position: Int, convertView: View?, parent: ViewGroup? ): View {var converView =convertViewif (converView==null) {converView = LayoutInflater.from(parent?.context).inflate(R.layout.listview_item, parent, false)}return converView!!}}--listveiw_item.xml<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="80dp"><TextViewandroid:id="@+id/listviewItem"android:textSize="30sp"android:layout_margin="5dp"android:text="리스트뷰 아이템"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>--MainActivity.ktpackage com.chpang.listview_expimport android.os.Bundleimport android.widget.ListViewimport androidx.activity.enableEdgeToEdgeimport androidx.appcompat.app.AppCompatActivityimport androidx.core.view.ViewCompatimport androidx.core.view.WindowInsetsCompatclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val list_item = mutableListOf<String>()list_item.add("A")list_item.add("B")list_item.add("C")val listview =findViewById<ListView>(R.id.mainListview)val listAdapter = ListViewAdapter(list_item)listview.adapter = listAdapter}}
-
미해결Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ
{ "Information": "Thank you for using Alpha Vantage! This is a premium endpoint. You may subscribe to any of the premium plans at https://www.alphavantage.co/premium/ to instantly unlock all premium endpoints"}선생님, 그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 하는데 어떻게 하면 좋을까요? ㅜㅜ
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
앱 삭제 관련 문의드립니다.
안녕하세요!먼저 너무도 알찬 강의 제공해주신 것에 대해 감사의 말씀드립니다. 다름이 아니라 혹시 구글 플레이 콘솔에 등록되어 있는 앱을 삭제해도 문제 없는지 궁금합니다.예전에는 스토어에서 내리는 것만 가능했던 것으로 기억하는데최근에 확인해보니 삭제 기능이 추가되었더군요.그런데 앱삭제로 인한 계정에 대한 페널티 같은게 있을까봐삭제는 진행하지 못하고 있어 문의드립니다. 추가로 오래된 앱들의 경우 이미 스토어에서 내린 상황에서도갑자기 정책위반 알림이 뜨곤 하던데수많은 앱들을 관리하는 선생님께서는 어떻게 대응하시는지스토어에서 내렸으면 정책위반을 해결하지 않고 방치해도 되는지 궁금합니다. 답변주시면 정말 감사하겠습니다.
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
과거 ai없을때 듣고 다시 듣는 중인데
허허 돌겟.. 에이전트 붙여서강의 따라가니깐 금방금방이네요 게다가 주석으로 설명까지.. 크...
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
구글애즈 사용하실 때, 광고비용 측정을 다양하게 하시나요 ?
저는 지금, 비용이 어떻게 나올지 궁금하여 , 설치당으로 하다가, 이번에 인앱액션을 걸었는데, 선생님은 여러가지 다 사용해서 하시나요 ?혹시 꼭 사용하시거나 , 아니면 이런게 좋다 이런게 있을까요 ?
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
제가 오늘 첫 구글ads캠페인을 올려봤씁니다!
이렇게 나왔는데, 타겟 CPA를 너무 높게잡은걸까요 ?그리고, 지금 저의경우 앱실행시 스플래시-> 전면광고 이렇게 진행되는데 이렇게 진행해서 그런지 설치는 꽤 하셨는데 , 로그인한 유저분들이 별로 없더라고요 ,,, 이런경우 어떻게 하면 좋을지 조언해주실 수 있을까요 ? 어려운 부분이라면 괜찮습니다 , 감사합니다!!
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
앱개발 도중 문제에 대한 조언을 구합니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요.먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요올초에 블로그에서 글을 보고 이후 강의 완료후지금 까지 실천하고 있는 개발자 입니다. 중간중간 문제가 많이 있었는데관련 문제 및 조언 요청 드립니다.1. 현재 개발한 앱은 18개 정도 입니다. 광고 비용 최적화를 진행 하였으나광고 비용보다 수익이 넘어선거는 최근 1개월 정도 입니다. 앱의 갯수가더많아질경우 광고를 전체 앱에 진행하기 어려울텐데 광고를 계속 진행하는 여부는어떻게 판단하시는지 굼긍합니다.2. 계정을 여러개 사용하신 것으로 알고 있는데 저는 운좋게 이전에 만들어 놓은 계정이한개 있어서 이계정의 경우 사전 심사 없이 앱을 여러개 출시 할수 있습니다.하지만 앱이 많아지면서 관리 문제나 애드몹 제재 문제로 인하여 계정을 여러개 필요로 하는상황이 점점 많아지는데 현상황에서 이를 해결할 방법이 있을까요?3. 근원적인 문제인데 애드몹의 제재를 올해를 보내면서 광고 제재 6회이상광고중단 2회 정도 받으면서 사실 굉장히 힘들었습니다. 중간에 유니티나 기타 다른플랫폼으로 옮겼지만 광고 수익이 미미하였고 이문제 때문에 애드몹 계정을 앱별로 나누어사용해도 될지 궁금합니다. 애드몹 계정을 여러개 사용하면 계정 삭제 또는 큰 처벌을 받을수 있다는 이야기만 있어서 이에 대한 조언 부탁드립니다.4. 현재 20여개의 앱중에 3~4개만이 유의미한 수익이 나오고 있습니다. 현재 일평균앱4~5개누적 수익이 겨우 1.8 ~2달러 정도 입니다. 특정 기간에는 3~4달러 정도 나오지만아무래도 앱의 특성상 광고를 통한 신규 유저들을 통한 수익이어서 오가닉 유입은 약한것으로 보입니다. 혹시 이정도의 수익인 앱이지만 꾸준히 가져 가는게 맞는 것인지초반에는 앱을 유지 하는 기준을 수익의 어느 정도 또는 기간동안 어느 정도의유저 반응을 보고 판단하는지 궁금합니다. .. 중복질문이 되었네요주말 잘보내시고 조언 및 답변 부탁드립니다.감사합니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
섹션 10 바이브 코딩 강의 출시일
안녕하세요! 섹션 10 바이브 코딩 부분이 추후공개로 생겼는데 혹시 언제쯤 강의를 볼 수 있을지요?너무너무 기대됩니다!ㅎㅎ
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
코딩을 완료하고난후 앱 실행시 자동 종료
스마트폰에 앱까지 설치가 다 되었습니다.근데 앱을 켜면 자동으로 실행 종료가 됩니다. 뭐가 문제 일까요? ㅠㅠ
-
미해결모던 안드로이드 - Jetpack Compose 입문
ViewModel 사용 관련 질문
안녕하세요, 비만도 계산기 강의를 수강하면서 코드를 작성하고 말씀하신 내용들을 학습했는데요."bmi state를 통해 bmi값이 변경되면 설정한 콜백이 동작하며 결과화면이 recomposition되고, 네비게이션 컨트롤러로 해당 화면으로 이동한다" 라고 이해했는데요,navController.navigate("result")가 수행되면composable(route = Screen.Result.route) { ResultScreen( bmi = viewModel.bmi.value, onBackClick = { navController.popBackStack() } ) }부분이 실행되기 때문에 bmi가 State가 아니고 지역변수여도 원하는 화면이 나올것이라고 생각해서 코드를 변경했는데 실제로 기존과 동일하게 잘 동작하는것을 확인하였습니다. 본 강의에서는 지역변수를 활용해서도 동작이 되지만, UI와 로직을 분리하는 장점이 있으며 ViewModel이 많이 사용되니 사용하신것으로 이해하면 될까요?아래는 지역변수로 변경한 코드입니다package com.example.obesitymachine import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import kotlin.math.pow sealed class Screen(val route: String) { data object Home : Screen("home") data object Result: Screen("result") } class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { val navController = rememberNavController() var bmi = 0.0 NavHost(navController = navController, startDestination = Screen.Home.route) { composable(route = Screen.Home.route) { HomeScreen( onResultClick = {height, weight -> bmi = bmiCalculate(height, weight) navController.navigate(Screen.Result.route) } ) } composable(route = Screen.Result.route) { ResultScreen( bmi = bmi, onBackClick = { navController.popBackStack() } ) } } } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun HomeScreen( modifier: Modifier = Modifier, onResultClick: (height: Double, weight: Double) -> Unit ) { val (height, setHeight) = rememberSaveable { mutableStateOf("") } val (weight, setWeight) = rememberSaveable { mutableStateOf("") } Scaffold( topBar = { TopAppBar( title = { Text("비만도 측정기") } ) } ) { Box( modifier.padding(it) ) { Column( modifier .fillMaxSize() .padding(8.dp) ) { OutlinedTextField( value = height, onValueChange = setHeight, label = { Text("키") }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Number ), modifier = Modifier.fillMaxWidth() ) OutlinedTextField( value = weight, onValueChange = setWeight, label = { Text("몸무게") }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Number ), modifier = Modifier.fillMaxWidth() ) Button( modifier = Modifier.align(Alignment.End), onClick = { onResultClick(height.toDouble(), weight.toDouble()) } ) { Text("결과") } } } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun ResultScreen( bmi: Double, onBackClick: () -> Unit ) { val text = when { bmi > 25 -> "과체중" bmi > 18.5 -> "정상" else -> "저체중" } val icon = when { bmi > 25 -> R.drawable.baseline_sentiment_very_dissatisfied_24 bmi > 18.5 -> R.drawable.baseline_sentiment_satisfied_24 else -> R.drawable.baseline_sentiment_dissatisfied_24 } Scaffold( topBar = { TopAppBar( title = { Text("비만도 측정기") }, navigationIcon = { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = null, modifier = Modifier.clickable(onClick = onBackClick) ) } ) } ) { Box( modifier = Modifier.padding(it) ) { Column( modifier = Modifier .fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text(text, fontSize = 30.sp) Spacer(modifier = Modifier.height(50.dp)) Image( painter = painterResource(id = icon), contentDescription = null, modifier = Modifier.size(100.dp), colorFilter = ColorFilter.tint( color = Color.Black ) ) } } } } fun bmiCalculate( height: Double, weight: Double ): Double { return weight / (height / 100).pow(2.0) }감사합니다!
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
datavinding에서 오류가 납니다.
사진처럼 binding = 할때 빨간색이 사라지지 않습니다. 에러가 나는거 같은데 뭐가 문제가 될까요?2번 사진에서 혹시 뭐 클릭해야하는게 있을까요?
-
해결됨[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
dataBinding 시 오류
안녕하세요?dataBinding 강의를 듣고 실습 중 지금의 대목에서 계속 오류가 납니다.안드로이드 버전 문제인지 어떤지 잘 모르겠습니다.일단 구글 드라이브에 해당 파일을 올려 보았습니다.https://drive.google.com/file/d/1pVyzoFYj5apFNWuMUjtBqGEtG_p_wEaP/view?usp=sharing살펴보시고, 말씀 주시면 감사하겠습니다. 해당 오류 메시지의 첫 부분은 다음과 같습니다: Execution failed for task ':app:compileDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction > Internal compiler error. See log for more details Try: > 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. Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugKotlin'. at
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
안드로이드 스튜디오 버전 차이로 초기 empyt activity 선택하면 안됩니다.
안녕하세요.안드로이드 스튜디오 버전(Android Studio Otter 2 Feature Drop | 2025.2.2)에서는empty activity를 선택하면 layout 없어서 activity_main.xml 즉 UI를 설정 파일 없습니다.empty views activity를 선택해야 합니다.동영상을 수정하셔야 수강생들이 혼동이 없습니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
개발환경은 어떻게 구성하시나요?
안드로이드 개발시에 , adb또는 단말기연결을 해서 앱을 테스트해보아야 하는거로 알고있습니다.혹시 프좀님께서 개발시에 사용하는 환경을 알 수 있을까요 ?테스트용 단말기를 따로 보유하고계신가요 ?
-
미해결모던 안드로이드 - Jetpack Compose 입문
onTabFavorite 콜백 관련 질문
안녕하세요,강의에 구성하신 콜백 메서드 대신 아무 파라미터도 받지 않고 부모에서 정의한 isFavorite을 바꿔주는 형태로 콜백을 구성해도 되는것인지 궁금합니다. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MyApplicationTheme { Scaffold { innerPadding -> Box( modifier = Modifier .padding(innerPadding) .fillMaxSize() ) { var isFavorite by rememberSaveable { mutableStateOf(true) } ImageCard( modifier = Modifier .fillMaxWidth(0.5f) .padding(16.dp), isFavorite ) { isFavorite = !isFavorite } } } } } } } @Composable fun ImageCard( modifier: Modifier = Modifier, isFavorite: Boolean, onTabFavorite: () -> Unit, ) { Card( shape = RoundedCornerShape(8.dp), elevation = CardDefaults.cardElevation(5.dp), ) { Box( modifier = Modifier.height(200.dp) ) { Image( painter = painterResource(R.drawable.moon), contentDescription = "cute", contentScale = ContentScale.Crop, ) Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.TopEnd ) { IconButton( onClick = onTabFavorite, ) { Icon( imageVector = if (isFavorite) Icons.Default.Favorite else Icons.Default.FavoriteBorder, contentDescription = "favorite", tint = Color.White, ) } } } } }감사합니다!
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
context의 구별에 대하여
안녕하세요?코드 작성 중에 context가 상당히 많이 사용되고 있습니다. 그런데 어느 경우에는 this, 또 다른 경우에는 BaseContext, 또 다른 경우에는 context 등이 사용되고 있습니다.이것이 서로 어떻게 구별되는지요? 일정한 기준이 있는지, 있다면 어떤 방식으로 나뉠 수 있는 것인지 궁금합니다.
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
안드로이드 앱 검토에 시간이 얼마나 걸리나요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요.먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요 현재 앱을 다 만들고, 사업자 계정으로 버전 생성 및 게시 상태에서 멈춰있는 상태입니다.11월 14일에 제출을 한 것으로 기억하는데, 12월 8일인 오늘까지도 계속 검토중이라고 나오네요.아직 해당 계정으로 심사거절과 같은 이메일은 오지 않았고 메일로 문의를 해봤으나 평균적으로 7일까지 걸릴 수 있으나 제출 건수와 신청의 복잡성에 따라 더 오래 걸릴 수도 있습니다 라는 메일이 왔습니다. 좀 더 기다려야하는 것일까요? 아니면 제가 뭔가 빠뜨린 것이 있을까요?
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
앱 홍보비 전략적으로 어떻게 집행해야 할까요?
시즌성 타겟팅 앱을 런칭할 예정이에요.경쟁이 좀 있긴 하지만, 확장이 가능할 것 같아서 만들게 되었는데요. 처음 런칭하면서 앱 홍보비랑, 그 다음 홍보비 같은 것들은 추이를 보면서어떻게 하면 좋을지 감이 전혀 오지 않아서 문의드립니다.