묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
firebase SDK를 추가를 위한 Classpath 코드구문
파이어베이스를 안드로이드와 연동하는 과정중에 firebase SDK를 추가 하고자합니다. 하지만 강의에서 나온 firebase SDK를 추가를 위한 Classpath 코드구문이 없습니다..이럴땐 어떻게 해야 하나요??
-
미해결프리다(Frida)를 이용한 안드로이드 앱 모의해킹
프리다를 녹스로 옮기는 과정에서 문제가 생깁니다ㅜㅜ
안녕하세요이전 답변을 보고 프리다 버전을 강의와 동일하게 설치했습니다그런데 강의와 같이 /data/local/tmp로 옮기는과정에서 아래와 같이 오류가 발생합니다. 루트 권한이 맞으며 /data/local/tmp 경로 또한 존재합니다. 녹스 또한 루트 켜기가 활성화 되어있는 상태이며 파이썬과 프리다 버전정보는 위와 같습니다. 프리다의 경로는 일치하는데 왜 해당 파일이 디렉토리라고 실패하는지 원인을 모르겠습니다 ..ㅠㅠ
-
미해결프리다(Frida)를 이용한 안드로이드 앱 모의해킹
pip install frida-tools 버전 문제
강의에서와 같이 pip install frida-tools 명령어를 통해프리다를 설치했는데 저는 버전이 자동으로 12 버전대가 아닌16.2.1이 다운로드 되었는데 이 버전은 어떻게 바꿔야하나요??추가적으로 강의에서 나오는 frida.re로 접속해도프리다 16.2.1밖에 안 나옵니다 ㅠㅠ
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
firebase auth
auth객체 생성하고 createUserWithEmailAndPassword 메소드 실행할때 에러가 발생했습니다에러현상은 intro layout에서 회원가입 클릭시 앱이 팅기면서 꺼지고로그를 살펴보면 FATAL EXCEPTION: main Process: com.example.datingapp, PID: 18621 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.datingapp/com.example.datingapp.auth.SignUpActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.datingapp. Make sure to call FirebaseApp.initializeApp(Context) first.at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4111) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4277) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loopOnce(Looper.java:226)at android.os.Looper.loop(Looper.java:313)at android.app.ActivityThread.main(ActivityThread.java:8751)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this processcom.example.datingapp. Make sure to call FirebaseApp.initializeApp(Context) first.at com.google.firebase.FirebaseApp.getInstance(FirebaseApp.java:179)at com.google.firebase.auth.FirebaseAuth.getInstance(com.google.firebase:firebase-auth@@22.1.2:1)at com.google.firebase.auth.ktx.AuthKt.getAuth(com.google.firebase:firebase-auth-ktx@@22.1.2:8)at com.example.datingapp.auth.SignUpActivity.onCreate(SignUpActivity.kt:23)at android.app.Activity.performCreate(Activity.java:8290)at android.app.Activity.performCreate(Activity.java:8270)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4085)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4277) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8751) at java.lang.reflect.Method.invoke(NativeMethod) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 이렇게 발생하고 있습니다 전체코드는 https://github.com/jsistop16/dating-app여기에 push해놓았습니다
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
splash manifest 설정시 에러
안녕하세요 e: This version (1.4.4) of the Compose Compiler requires Kotlin version 1.8.10 but you appear to be using Kotlin version 1.9.0 which is not known to be compatible. Please consult the Compose-Kotlin compatibility map located at https://developer.android.com/jetpack/androidx/releases/compose-kotlin to choose a compatible version pair (or suppressKotlinVersionCompatibilityCheck but don't say I didn't warn you!). 스플래시 화면 만들고 컴파일 돌리면 이런 에러가 발생하는데구글링해서 build.gradle에서 버전을 수정해봐도 계속 같은 에러가 발생합니다...
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
디바이스 에뮬레이터 질문
안녕하세요 bts 앱 듣고있는데 디바이스 에뮬레이터 실행하여 run app을 누르면 Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.res.ParseLibraryResourcesTask$ParseResourcesRunnable 가 나오면서 진행이 되지 않아 질문드립니다.
-
해결됨윤재성의 자바 기반 안드로이드 앱개발 Part 4 - 실전프로젝트
25강 영상 소리가 24강과 똑같아요.
수정 부탁드립니다.
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
에뮬레이터 홈화면
에뮬레이터를 실행하면 강사님같은 위젯화면이 아닌 홈화면이 나옵니다. 어떻게 해결해야할까요?모든 과정 다 제대로 수행했는데 이러네요...참고로 저 번개모양도 불이 들어오지 않습니다..
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 적용 시...
마지막에 올려주신 강의를 보고 freezed를 sealed class로 변경하여 적용하는 부분을 복습 중 입니다. 영상에서 event부분을 sealed class로 변경하셨는데,state 부분은 어떻게 변경이 되야되는건지 잘 모르겠는데 간단히 설명 해주실수 있을까요? ^^;
-
미해결Flutter 중급 1편 - 클린 아키텍처
클린 아키텍처 질문
안녕하세요. 이미지 검색 앱만들기 파트를 다 보고 몇가지 의문점이 생겨 질문 올립니다.클린아키텍처의 레이어를 보면 RepositoryImpl는 Data 레이어, Repository(추상클래스)는 Domain 레이어로 정의 되어있는데, RepositoryImpl와 Repository의 레이어 단계나 폴더구조를 다르게 가져가는 이유가 있을까요?DI 를 Spring 처럼 어노테이션 같은 것을 이용해 별도의 코드를 작성하지 않고 하는 방법은 없나요?
-
미해결급하게 준비하는 모바일 앱 점검
디컴파일을 통해 루팅 우회하기에서 질문있습니다.
안녕하세요.디컴파일을 통해 루팅 우회하기 수업에서 질문이 있습니다. 영상에 나와있는 그대로 c.smali 파일에서 super를 su로 변경, MainActivity.smali에서 라인87의 if-eqz를 if-nez로 변경 후 서명하여 nox에서 설치를 했습니다. 하니, 아래와 같이 텍스트만 변경이 되고 앱이 꺼지는 현상이 여전히 있었습니다.(MainActivity.smali 라인 71의 if-eqz를 if-nez로 변경도 해보았으나 동일 현상)혹시 몰라서 c.smali에서 수정하고 MainActivity.smali에서는 수정을 안하고 혹은 그 반대로도 해보는 등 여러가지로 진행을 해보았는데요.동일한 현상이 확인되어 영상과 같이 되지 않아 질문드립니다.감사합니다.
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 데이터 접근
38 강의 내용 관련입니다. import 'package:json_annotation/json_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:note_app/domain/util/order_type.dart'; part 'note_order.freezed.dart'; @freezed abstract class NoteOrder with _$NoteOrder { const factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; const factory NoteOrder.date(OrderType orderType) = NoteOrderDate; const factory NoteOrder.color(OrderType orderType) = NoteOrderColor; }위의 코드는 타입 매칭을 위한 거기 때문에 아래와 같이 dart 에서 지원하는 sealed 클래스를 사용하는 방법으로 고쳤습니다. import 'package:note_app/domain/util/order_type.dart'; sealed class NoteOrder<T> { const factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; const factory NoteOrder.date(OrderType orderType) = NoteOrderDate; const factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { final OrderType orderType; const NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { final OrderType orderType; const NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { final OrderType orderType; const NoteOrderColor(this.orderType); } order_section.dart 에서 Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, activeColor: Colors.white, ),dart 지원 sealed 클래스를 사용하면 noteOrder.orderType에 접근이 안 되는데 어떻게 수정해야 할까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
디데이어플에서 날짜계산이 안됩니다..
실행을 했는데 앱 꺼짐없이 실행은 잘되나 마지막 강의까지 듣고 코드를 수정했는데갑자기 날짜 계산값이 다 0으로 출력됩니다.어딘가 오류가 있는 듯 한데.. 못 찾겠네요. ㅠㅠ package com.sunny.dday import android.app.DatePickerDialog import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.Button import android.widget.DatePicker import android.widget.TextClock import android.widget.TextView import androidx.annotation.RequiresApi import java.time.Month import java.util.Calendar import java.util.GregorianCalendar import java.util.concurrent.TimeUnit class MainActivity : AppCompatActivity() { @RequiresApi(Build.VERSION_CODES.N) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val startButton = findViewById<Button>(R.id.startBtn) val endButton = findViewById<Button>(R.id.endBtn) var startDate = "" var endDate = "" val calendar_start = Calendar.getInstance() val calendar_end = Calendar.getInstance() startButton.setOnClickListener { val today = GregorianCalendar() val year = today.get(Calendar.YEAR) val month = today.get(Calendar.MONTH) val day = today.get(Calendar.DATE) val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener { override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) { // startDate = "${year} + ${month+1} + ${dayofMonth}" startDate = year.toString() + (month + 1).toString() + dayOfMonth.toString() calendar_start.set(year, month + 1, dayOfMonth) Log.d("day : ", startDate) } }, year, month, day) dlg.show() } endButton.setOnClickListener { val today = GregorianCalendar() val year = today.get(Calendar.YEAR) val month = today.get(Calendar.MONTH) val day = today.get(Calendar.DATE) val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener { override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) { // endDate = "${year} + ${month+1} + ${dayofMonth}" endDate = year.toString() + (month + 1).toString() + dayOfMonth.toString() calendar_end.set(year, month + 1, dayOfMonth) val finalDate = TimeUnit.MICROSECONDS.toDays(calendar_end.timeInMillis - calendar_start.timeInMillis) Log.d("day : ", endDate) val textArea = findViewById<TextView>(R.id.finalDate) textArea.setText(finalDate.toString()) Log.d("finalday : ", finalDate.toString()) } }, year, month, day) dlg.show() } } }
-
미해결누구나 할 수 있는 안드로이드 앱 개발 - 1 (Kotlin)
에뮬레이터 실행이 안됩니다.
계속 이 상태로 돌기만하고 실행은 안됩니다 ㅠ..안드로이드 스튜디오 에뮬레이터가 connecting on~ 하다가 갑자기 사라져버립니다 ㅠㅠ.. 어떻게 해결하면 좋을까요?
-
해결됨Flutter로 SNS 앱 만들기
삼항연산자에 대한 질문
안녕하세요 . 프로필 사진에서 삼항연산자를 아래처럼 사용하면 코드가 더 효율적일꺼라 생각했는데 에러가 발생합니다.아래처럼 사용하는 건 틀린건가요? CircleAvatar( radius: 64, backgroundImage: _image == null ? AssetImage('assets/images/profile.png') : MemoryImage(_image!),)
-
해결됨쉬운 모바일 테스트 자동화 시작하기 : Appium Studio
프롬포트에 emulator 커맨드가 배치파일이 아니라며 동작하지 않아요
제목 그대로입니다. 기본적으로 뭘 어디서 어떻게 설치하는지 등의 기본적인 설명은 없나요?
-
해결됨[LV1] Jetpack Compose - UI 연습하기
강의자료 링크에 접근이 되지 않습니다.
강사님 해당 강의자료 링크에 접근이 되지 않습니다.일정이 급해 빠른 확인 부탁 드립니다!https://gainful-topaz-82f.notion.site/LV1-JETPACK-COMPOSE-UI-5ee7e194eb8c487780c4fa586b37c3fe?pvs=4 Error : Bad gateway Error reference number: 502
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
Retrofit + ViewModelScope + RecyclerView + Glide 강의중에서
CustomAdapter.kt 파일내 Glide.with(context)이부분에서 빨간줄이 생기고 Unresolved reference: Glide라는 에러메세지가 생기네요build.gradle.ktsimplementation("com.github.bumptech.glide:glide:4.13.0'") annotationProcessor("com.github.bumptech.glide:compiler:4.14.2")
-
해결됨Flutter로 SNS 앱 만들기
섹션8번 signOut
강의에서 signOut을 추가하여서 추가를 해보니 오류가 뜹니다. await FirebaseAuth.instance.signOut();으로 바꿨을때는 문제가 없습니다.
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
Notification 구현시 컴파일에러
class MainActivity : AppCompatActivity() { lateinit var cardStackAdapter: CardStackAdapter lateinit var manager : CardStackLayoutManager private val TAG = "MainActivity" private val usersDataList = mutableListOf<UserDataModel>() private var userCount = 0 private val uid =FireBaseAuthUtils.getUid() private lateinit var currentUserGender : String private val REQUEST_CODE = 123 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val isTiramisuOrHigher = Build.VERSION.SDK_INT>= Build.VERSION_CODES.TIRAMISU val notificationPermission = Manifest.permission.POST_NOTIFICATIONS var hasNotificationPermission = if (isTiramisuOrHigher) ContextCompat.checkSelfPermission(this,notificationPermission) == PackageManager.PERMISSION_GRANTED else true val launcher = registerForActivityResult(ActivityResultContracts.RequestPermission()){ hasNotificationPermission = it } if(!hasNotificationPermission) { launcher.launch(notificationPermission) } val setting = findViewById<ImageView>(R.id.settingIcon) setting.setOnClickListener{ // val auth = Firebase.auth // auth.signOut() // val intent = Intent(this,SettingActivity::class.java) startActivity(intent) } val cardStackView = findViewById<CardStackView>(R.id.cardStackView) manager = CardStackLayoutManager(baseContext,object : CardStackListener{ override fun onCardDragging(direction: Direction?, ratio: Float) { } override fun onCardSwiped(direction: Direction?) { if(direction == Direction.Right){ userLikeOtherUser(uid,usersDataList[userCount].uid.toString()) } if(direction == Direction.Left){ } userCount = userCount + 1 if(userCount == usersDataList.count()){ getUserDataList(currentUserGender) Toast.makeText(this@MainActivity,"유저 리스트를 새롭게 받아옵니다.",Toast.LENGTH_SHORT).show() } } override fun onCardRewound() { } override fun onCardCanceled() { } override fun onCardAppeared(view: View?, position: Int) { } override fun onCardDisappeared(view: View?, position: Int) { } }) cardStackAdapter = CardStackAdapter(baseContext,usersDataList) cardStackView.layoutManager = manager cardStackView.adapter = cardStackAdapter // getUserDataList() getMyUserData() } private fun getMyUserData(){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { val data = dataSnapshot.getValue(UserDataModel::class.java) Log.d(TAG,data.toString()) currentUserGender = data?.gender.toString() getUserDataList(currentUserGender) } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FireBaseRef.userInfoRef.child(uid).addValueEventListener(postListener) } private fun getUserDataList(currentUserGender : String){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // val post = dataSnapshot.getValue<Post>() for(dataModel in dataSnapshot.children){ val user = dataModel.getValue(UserDataModel::class.java) if(!user!!.gender.toString().equals(currentUserGender)){ usersDataList.add(user!!) } } cardStackAdapter.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FireBaseRef.userInfoRef.addValueEventListener(postListener) } private fun userLikeOtherUser(myUid : String, otherUid : String) { FireBaseRef.userLikeRef.child(myUid).child(otherUid).setValue("true") getOtherUserLikeList(otherUid) } private fun getOtherUserLikeList(otherUid : String){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // 여기 리스트에서 나의 UID가 있나 확인 필요 for(dataModel in dataSnapshot.children){ val likeUserKey = dataModel.key.toString() if(likeUserKey.equals(uid)){ Toast.makeText(this@MainActivity,"매칭완료",Toast.LENGTH_SHORT).show() createNotificationChannel() sendNotification() } } } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FireBaseRef.userLikeRef.child(otherUid).addValueEventListener(postListener) } // 알림 private fun createNotificationChannel() { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 채널 이름 val name = "name" val descriptionText = "description" val importance = NotificationManager.IMPORTANCE_DEFAULT val channel = NotificationChannel("TestChannel", name, importance).apply { description = descriptionText } // Register the channel with the system. val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } } private fun sendNotification(){ var builder = NotificationCompat.Builder(this, "TestChannel") .setSmallIcon(R.drawable.ic_launcher_background) .setContentTitle("My notification") .setContentText("Hello World!") .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setCategory(NotificationCompat.CATEGORY_MESSAGE) with(NotificationManagerCompat.from(this)){ notify(123,builder.build()) } } }안녕하세요. 알림기능 구현하는데notify(123,builder.build()) 위 부분에서 Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException 이런 에러가 아직도 발생하고있는데 어떻게 해결할수 있을지 자세한 답변을 부탁드려도될까요? 구글링 해봤는데 명확히 어떤코드 입력해서 컴파일에러를 지울 수 있을지 모르겠습니다. 빠른답변 부탁드리겠습니다.