묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
nextInt가 import가 안됩니다.
alt+enter를 눌러도 임포트가 계속 안되는데 혹시 이유를 알수 있을까요? 혹시 몰라 MainActivity의 코드를 첨부하겠습니다!감사합니다! package com.example.dice_appimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport android.widget.Toastimport androidx.databinding.DataBindingUtilimport com.example.dice_app.databinding.ActivityMainBindingimport java.util.*import kotlin.random.Random.Default.nextIntclass MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) val diceImage1 = binding.dice1 val diceImage2 = binding.dice2 binding.diceStartBtn.setOnClickListener { Toast.makeText(this, "주사위 GO!", Toast.LENGTH_LONG).show() Log.d("MainActivity", Random.nextInt(1, 6).toString()) Log.d("MainActivity", Random.nextInt(1, 6).toString()) val number1 = Random.nextInt(1, 6) val number2 = Random.nextInt(1,6) if (number1 ==1 ){ diceImage1.setImageResource(R.drawable.dice_1) } else if(number1 == 2){ diceImage1.setImageResource(R.drawable.dice_2) } else if(number1 == 3){ diceImage1.setImageResource(R.drawable.dice_3) } else if(number1 == 4){ diceImage1.setImageResource(R.drawable.dice_4) } else if(number1 == 5){ diceImage1.setImageResource(R.drawable.dice_5) } else { diceImage1.setImageResource(R.drawable.dice_6) } if (number2 ==1 ){ diceImage2.setImageResource(R.drawable.dice_1) } else if(number2 == 2){ diceImage2.setImageResource(R.drawable.dice_2) } else if(number2 == 3){ diceImage2.setImageResource(R.drawable.dice_3) } else if(number2 == 4){ diceImage2.setImageResource(R.drawable.dice_4) } else if(number2 == 5){ diceImage2.setImageResource(R.drawable.dice_5) } else { diceImage2.setImageResource(R.drawable.dice_6) } } }}
-
미해결파이어베이스(Firebase)를 이용한 웹+안드로이드 메모 어플리케이션 만들기
firebase list err 해결
영상에서는 터미널에서 firebase login을 한 뒤, firebase list 를 입력하면 연결된 프로젝트를 확인할 수 있다고 나오는데 버전이 달라져서 firebase projects:list 라고 입력해야 확인이 가능합니다! firebase list 라고 입력하면 Error: list is not a Firebase command 이렇게 에러가 납니다. 참고하세요 :)
-
미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
MainActivity에서 id로 코드를 작성할 수 없는 문제
안녕하세요 선생님! 강의를 듣던 중에 막히는 부분이 있어서 질문드립니다. 보시는 바와 같이, textview를 삽입하고 id를 text1,text2로 한 후에 코드를 작성하는 부분을 실습하던 중이었는데, 강의에서 코틀린으로는 id를 통해 바로 view 객체를 다룰 수 있다고 하셨는데, 저는 그 부분이 되지 않습니다. 프로젝트를 생성할 때 language에서 Kotlin을 선택한 것도 확인을 했는데, 왜 이런 문제가 생길까요?
-
미해결현직 개발자가 알려주는 안드로이드 앱 쉽게 만드는 방법
preview라는 창이 안떠요
밑에 Text라는 칸과 preview가 안떠요
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
글 수정 단계에서 사진도 수정하려고 하다가 문제가 발생했습니다.
게시글 수정 단계에서 사진 또한 BoardWriteActivity에서와 마찬가지로 startActivityForResult으로 변경할 수 있게 만들어보려고 했습니다. 그러나 이번에는 또 어떤 값이 전달되지 않는 것인지 NullPointerException 오류가 뜨고 있습니다. 이 코드를 복사해온 BoardWriteActivity는 정상작동하는 것을 보니 리퀘스트코드가 겹치는게 문제인가 싶어 바꿔주어 보아도 안되고, setResult(RESULT_OK)등의 명령어를 통해 Result 값을 지정해보는 등의 시도는 해봤지만, 전혀 차도가 없습니다. 강의에서 하지 않은 것을 가고 만지작거리다가 질문드리는게 죄송하지만, 이 오류의 해결법에 대해 질문드려도 괜찮을까요? 우선 오류가 발생한 BoardEditActivity입니다. class BoardEditActivity : AppCompatActivity() { private lateinit var binding: ActivityBoardEditBinding private lateinit var key: String private lateinit var Wuid: String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_board_edit) binding = DataBindingUtil.setContentView(this, R.layout.activity_board_edit) key = intent.getStringExtra("key").toString() getBoardData(key) getImageData(key) binding.BEAPUSHbtn.setOnClickListener { editBoardText(key) } binding.BEAIMG1.setOnClickListener { val key = FBRef.boardRef.push().key.toString() val gallery = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI) startActivityForResult(gallery, 50) } } private fun getImageData(key: String) { Log.d("키값 검사", key.toString()) // Reference to an image file in Cloud Storage val storageReference = Firebase.storage.reference.child(key + ".png") // ImageView in your Activity val imageViewFromFB = binding.BEAIMG1 storageReference.downloadUrl.addOnCompleteListener(OnCompleteListener { task -> if (task.isSuccessful) { Glide.with(this) .load(task.result) .into(imageViewFromFB) } else { Toast.makeText(this, "이미지가 없습니다", Toast.LENGTH_LONG).show() } }) } private fun getBoardData(key: String) { val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { try { val dataModel = dataSnapshot.getValue(BoardModel::class.java) binding.BEAED1.setText(dataModel!!.title) binding.BEAED2Context.setText(dataModel!!.title) Wuid = dataModel!!.uid } catch (e: Exception) { Log.d("삭제완료","Delete") } } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FBRef.boardRef.child(key).addValueEventListener(postListener) } private fun editBoardText(key: String) { val time = firebaseauth.getTime() FBRef.boardRef .child(key)// .push() .setValue( BoardModel( binding.BEAED1.text.toString(), binding.BEAED2Context.text.toString(), Wuid, time ) ) Toast.makeText(this, "수정 완료", Toast.LENGTH_LONG).show() finish() } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == RESULT_OK && requestCode == 50) { Log.d("데이터 체커", data.toString()) val BEI1 = findViewById<ImageView>(R.id.BEI1) Glide.with(this).load(data?.data).into(BEI1) } }} 문제가 된다고 생각한 로그캣의 오류 페이지입니다. 4번째 줄의 로그가 잘렸는데, 혹시 잘린부분이 필요하실까 싶어 잘린부분의 로그도 올립니다. java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=50, result=-1, data=Intent { dat=content://com.google.android.apps.photos.contentprovider/-1/1/content://media/external/images/media/27/ORIGINAL/NONE/image/jpeg/1468372150 flg=0x1 clip={text/uri-list {...}} }} to activity {com.beyond.collect/com.beyond.collect.board.BoardEditActivity}: java.lang.NullPointerException: Argument must not be null
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
이미지 추가 버튼 누를 시 앱이 팅깁니다.
안녕하세요. 아래의 코드를 적용한 뒤 이미지 추가 버튼을 클릭하면 앱이 아예 꺼집니다. //ImagePicker final ImagePicker _picker = ImagePicker(); File? _imageFile; //갤러리 연동을 위해 사용 Future<void> _getImage() async { //ImagePiker var image = await _picker.pickImage(source: ImageSource.gallery); setState(() { _imageFile = File(image!.path); }); } } sdk 2.12, imagePicker 패키지는 0.8.4 버전이고 연결이 끊겼다는것 외에는 다른 오류는 출력되지 않습니다. create_page.dart의 전체 코드입니다. import 'dart:io'; import 'dart:async'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; //갤러리 또는 카메라 연동하는 패키지 class createPage extends StatefulWidget { const createPage({Key? key}) : super(key: key); @override _createPageState createState() => _createPageState(); } class _createPageState extends State<createPage> { //입력창을 위한 객체 생성 final TextEditingController createText = TextEditingController(); //ImagePicker final ImagePicker _picker = ImagePicker(); File? _imageFile; //갤러리 연동을 위해 사용 //dispose : 객체가 해제될 때 (더 이상 사용되지 않을때) 그 객체에 있던 메모리를 삭제, 자원 관리를 위해 사용 //_createPageState가 제거될 때 호출됨 @override void dispose() { // TODO: implement dispose createText.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: _buildAppbar(), body: _buildBody(), //메소드 생성해서 정의 floatingActionButton: FloatingActionButton( //갤러리에서 이미지 가져오기 (image_picker 패키지 사용) onPressed: _getImage, backgroundColor: Colors.blue, child: Icon(Icons.add_a_photo), ), ); } _buildAppbar() { return AppBar( //앱바 오른쪽에 아이콘 생성 actions: [ Icon(Icons.send), ], ); } _buildBody() { return SingleChildScrollView( //스크롤 추가 child: Column( children: [ //이미지 출력 부분 //이미지가 선택되지 않았을 때(null)는 텍스트 출력, 선택되었다면 선택된 이미지를 출력 _imageFile == null ? Text("No Image") : Image.file(_imageFile!), //입력창 생성 TextField( controller: createText, //텍스트필드의 스타일 설정 decoration: InputDecoration( hintText: "내용을 입력하세요", //기본값 ), ) ], ), ); } //갤러리 연동 //이미지를 File로 만들어 줘야하기 때문에 비동기 처리 방식 사용? Future<void> _getImage() async { //ImagePiker var image = await _picker.pickImage(source: ImageSource.gallery); setState(() { _imageFile = File(image!.path); }); } } _getImage 메소드의 문제일까요? 감사합니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
데이터 가져오기 참조 질문
수업중에 1:23 에서 레퍼런스 주소를 가져온다고 하시면서 복사 붙여 넣기 하셨는데 그냥 통째로 잘라넣기 하면 왜 안되는지 궁금합니다. 그리고, 복사 - 붙여 넣기 후 save 버튼 클릭 리스너 안에서는 myRef에 user마다 개인적인 데이터베이스를 만들기 위해서 child()를 추가해주셨는데(14:54) , 1:27 (복사 - 붙여넣기 한) 위치 의 myRef에는 child() 속성(?)을 넣어주지 않아도 되나요?
-
미해결쉽게 따라할 수 있는 안드로이드 앱 개발
Default activity not found 에러가 뜨네요
영상 내용 따라서 Run 실행했더니 Default activity not found 에러가 뜨네요. 찾아보니 Default activity를 선언해줘야 하는데, 영상에서는 그런 거 없이 그냥 하시던데... 제 환경이 문제인가요...?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
주사위 6이 안 나와요
강의대로 잘 따라했는데요. 1~5까지는 나오는데 6은 안나옵니다. 강의 영상에도 6은 안 나오는 것 같은데, 왜 그럴까요?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
이미지가 기본이미지 인지 아닌지
이미지가 기본이미지 인지 아닌지 03:50초에 어떻게 구현해줄수있나요.왜냐면 개복치님이 말씀하신 2번째 로직은 이미지뷰를 클릭하고 취소를 하는 경우에는 이미지가 들어가있지 않지만 isImageUpload가 ture상태로 머물기때문에 결국에는 업로드됩니다 그래서 개복치님이 말씀해주신 첫번째 로직으로 구현해주고싶은데,첫번째 로직으로 만드는법도 추가해주시면 좋을거같습니다!! 여기서 말하는 첫번째 로직은 이미지가 기본이미지 인지 아닌지 이고 두번째 로직은 imageView가 클릭됬는지 안됬는지 입니다.
-
미해결하울의 안드로이드 인스타그램 클론 만들기
UserFragment.kt 에서 activity 오류
첫번째 동그라미 activity는 저번강의에서 !! 넣었는데 오류뜨길래 지우니까 제대로 실행되어 했는데 밑에 activity 이번강의에서는 계속 오류 뜨고 프로필 사진이 안나옵니다 해결방법이 있을까요 .. ? 이렇게 오류 뜹니다.
-
미해결
Unity ANdroid 갤러리 폴더에 파일 읽기/쓰기 질문
유니티 안드로이드 질문입니다. 유니티에서 읽기/쓰기 가능한 경로에 대해 궁금합니다. sd카드에 파일을 읽기/쓰기 하려고 하는데 경로 설정을 잘 모르겠습니다. https://stackoverflow.com/questions/39983451/unity-android-save-files-disappears-after-updating-an-app/50280071#50280071 안드로이드 10 기준으로 어떤 게 sd카드 경로를 할 수 있는지 궁금합니다.
-
미해결프리다(Frida)를 이용한 안드로이드 앱 모의해킹
frida --codeshare를 통한 루팅 탐지 우회 문의
안녕하세요. 알려주신 https://codeshare.frida.re에서 코드를 확인하여 연습중입니다. 근데 rooting 우회와 ssl Pinning 탐지가 둘 다 적용되어있는 경우는 어떻게해야할지해서 여쭤봅니다. https://codeshare.frida.re/@dzonerzy/fridantiroot/ -> 루팅 우회 (정상 작동) https://codeshare.frida.re/@limyout/root-detection-and--ssl-pinning/ -> 루팅우회, SSL피닝우회 ( 루팅 우회 작동으로 예상, SSL 탐지에서 걸리는 듯 하나 어느정도는 작동하다가 실패하는 듯) 혹시 https://codeshare.frida.re/@dzonerzy/fridantiroot/ -> 루팅 우회 (정상 작동) 이것과 SSL 피닝 우회가 되는 코드 2개를 사용하려하는데 잘안되는것같습니다. 혹시 방법이 없을까요?
-
미해결하울의 안드로이드 인스타그램 클론 만들기
3강 SHA - 1키를 넣는 방법 sputnik7565님의 SHA1 보충 설명입니다
사용 설정을 한 후 빨간색으로 표시한 '프로젝트 설정'으로 갑니다. 이런 화면이 보이실 텐데 좀 더 내려 보시면 붉은색 부분이 비어져 있을 것입니다. 이쪽에 붙여 넣기를 하시면 됩니다.
-
해결됨안드로이드 앱 모의해킹/분석 시작하기 (With.IDA/JEB/Frida)
android_server 실행 오류 문의
안녕하세요. 강의 수강중에 arm 관련 환경 문제로 강사님 강의에서는 x86 이 아닌 arm 으로 so 파일 디버깅이 잘 되시는거같은데... 저는 android_server 실행이 잘 안되서 문의 드립니다. IDA 로 so 파일디버깅 하고자 하는데, 오류가 발생하여 실습 진행이 안되고 있습니다. 저의 실제 안드로이드 기기의 abi 는 armeabi-v7a 입니다. [ro.product.cpu.abi2]: [armeabi] [ro.product.cpu.abi]: [armeabi-v7a] 실제 기기에서 anroid_server 실행 시 아래와 같은 오류가 발생 합니다. shell@android:/ $ /data/local/tmp/android_server /data/local/tmp/android_server reloc_library[1307]: 14581 cannot locate '__open_2'... CANNOT LINK EXECUTABLE 255|shell@android:/ $ /data/local/tmp/android_server64 /data/local/tmp/android_server64 /system/bin/sh: /data/local/tmp/android_server64: not executable: magic 7F45 1|shell@android:/ $ /data/local/tmp/armlinux_server /data/local/tmp/armlinux_server /system/bin/sh: /data/local/tmp/armlinux_server: No such file or directory 에뮬레이터는 보통 x86 이기때문에 arm 으로 디버깅하기위한 방법을 찾고있습니다. 실제 기기에서 android_server 동작 방법 또는 에뮬레이터에서의 armeabi-v7a 설정 이 되면 될거같은데.... 제가 할 수 있는 조치사항 문의 드립니다.
-
해결됨프리다(Frida)를 이용한 안드로이드 앱 모의해킹
frida -U -f com.android.chrome 명령 실행시, Not allowed to start activity Intent 에러가 발생합니다!
안녕하세요? 프리다 실습을 하던 중, frida -U -f com.android.chrome 명령 실행시 Not allowed to start activity Intent 오류가 발생합니다. 버전은 12.6.11로 강사님이 말씀하신대로 다 맞췄어요. 문제가 뭘까요.?
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
jetifier 개념 및 실행여부에 대해서 질문 드립니다.
윈도우 환경에서 작업중입니다. 처음에 npx react-native run-android 실행하면 jetifier를 구동중이고 --no-jetifier 명령어를 통해 구동하지 않을 수 있다고 나옵니다. 그래서 저 명령어를 넣어서 npx react-native run-android --no-jetifier 를 입력해서 개발환경을 구동하면 reloading 오류도 적고 속도가 비약적으로 상승한다는 걸 알게 되었는데요, 인터넷에서 따로 찾아보니 jetifier는 실행을 꼭 해 줘야 하는 보조프로그램이라는 내용이 많더라구요. jetifier 를 사용하지 않고도 어플 개발에 문제가 없는건지 여부를 물어보고 싶습니다.
-
미해결스케치앱 디자인 기초다지기[Sketch]
스케치 iOS/android 사이즈 관련 문의
앱디자인을 공부하고 있습니다. 제가 아무리 영상을 찾고 찾아봐도 이해가 되지 않는 부분이 있어서 이렇게 질문을 남깁니다. 사람들마다 핸드폰 기종이 다 다른데 어떻게 작업을 해야할지 모르겠습니다. android 는 360*640 px / ios는 375*667px 사이즈를 기본으로 작업하고 2배 3배수로 exprot를 하면 되는건가요?
-
미해결하울의 안드로이드 인스타그램 클론 만들기
파이어베이스 -> Database가 아닌 Cloud Firebase입니다.
파이어베이스 -> Database가 아닌 Cloud Firebase입니다. 업데이트 되어 영상과 좀 다릅니다. rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if request.auth.uid != null; } } }
-
미해결하울의 안드로이드 인스타그램 클론 만들기
[개선코드]비밀번호 6자리일 땐 오류 납니다. 다음 코드 확인해주세요.
// 회원가입 or 로그인하는 코드fun signinAndSignup(){ auth?.createUserWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString()) ?.addOnCompleteListener{ task -> if(task.isSuccessful){ println("_________________________________________task succesful") // creating a user account moveMainPage(task.result?.user) } else if(task.exception?.message.isNullOrEmpty()){ println("_________________________________________FUCKING ERROR") //show the error message Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() } else { println("_________________________________________FUCKGING SIGNIN EMAIL") if(password_edittext.text.toString().length < 6){ println("_________________________________________FUCKGING SIGNIN EMAIL_PASSWORD LENGTH PROBLEM") println("_______________________________________${password_edittext.text.toString().length}") Toast.makeText(this, "패스워드는 최소 6자리 이상이여야 합니다. 다시 입력 바랍니다.", Toast.LENGTH_LONG).show() }else{ println("_________________________________________FUCKGING SIGNIN EMAIL_SIGNINEMAIL") println("_______________________________________${password_edittext.text.toString().length}") // login if you have account signinEmail() } } }} 프린트문은 지우고 하셔두 됩니다. // 회원가입 or 로그인하는 코드fun signinAndSignup(){ auth?.createUserWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString()) ?.addOnCompleteListener{ task -> if(task.isSuccessful){ // creating a user account moveMainPage(task.result?.user) } else if(task.exception?.message.isNullOrEmpty()){ //show the error message Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() } else { // 비밀번호가 6자리 미만일 때 Toast 띄우기! if(password_edittext.text.toString().length < 6){ Toast.makeText(this, "패스워드는 최소 6자리 이상이여야 합니다. 다시 입력 바랍니다.", Toast.LENGTH_LONG).show() }else{ // 비밀번호가 6자리 이상일 때, 회원가입하고 로그인하기 signinEmail() } } }}