무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
인스타그램 자바언어로 하는 클론코딩은 없을까요?
다른 커뮤니티에 찾아봐도 거의 요즘 대세가 코틀린이라 그런지 거의 다 다른 분들도 코틀린으로 안드로이드 앱을 만드시더라구요 그래서 자바언어로 만드는 강의는 많이 없는 것같아요 아무리 찾으려고 해도 없어서요 근데 제가 지금 배우기를 자바언어로 배우고 있어서 코틀린 쓰는 법을 모르는데ㅜㅜ 혹시나 자바언어로 하신 클론코딩 강의는 없는지 궁금합니다
- 미해결하울의 안드로이드 인스타그램 클론 만들기
mainfest 오류
Manifest merger failed with multiple errors, see logs 이러한 오류가 떠서 실행이 안됩니다 ㅜㅜ
- 미해결하울의 안드로이드 인스타그램 클론 만들기
사진업로드 안됨
사진을 업로드 하려고 아래 bottomnavigationview의 카메라 버튼을 누른 화면입니다. 누르면 activity_add_photo.xml 화면이 나와야 정상인거같은데 저게 끝입니다ㅜㅜ 뭐가 문제일까요 / bottomnavigationview의 다른 버튼을 누르면 색도 변하고 작동 되는 것 같은데 이미지 업로드 하는 버튼만 안됩니다. / 코드도 영상이랑 동일하게 하고 manifest 파일에 AddphotoActivity도 추가했습니다.
- 미해결하울의 안드로이드 인스타그램 클론 만들기
구글 로그인후 중앙에 무한로딩
어떻게 해야 제거가 가능한가요
- 미해결하울의 안드로이드 인스타그램 클론 만들기
이 오류는 왜 나오는건가요?
이 오류는 왜 나오는건가요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
buttonstyle 이거 계속 오류나는데 어떻게 해야하나요?
buttonstyle 이거 계속 오류나는데 어떻게 해야하나요? buttonstyle을 따로 만들어줘야 하는건가요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
로그인 화면에서 계속 오류나는데 원인이 뭔가요..?
코틀린은 처음 해보는데 원인을 모르겠어용.. 도움 부탁드립니다. ------------------------ design 라이브러리 추가했을때 뭔가 버전이 안맞는지 build gradle에 오류가 나있었어요. 지우니까 실행 됩니다. 근데 무슨 의미인지는 잘 모르겠네요.. ㅎ;
- 미해결하울의 안드로이드 인스타그램 클론 만들기
UserFragment.kt 에서 activity 오류
첫번째 동그라미 activity는 저번강의에서 !! 넣었는데 오류뜨길래 지우니까 제대로 실행되어 했는데 밑에 activity 이번강의에서는 계속 오류 뜨고 프로필 사진이 안나옵니다 해결방법이 있을까요 .. ? 이렇게 오류 뜹니다.
- 미해결하울의 안드로이드 인스타그램 클론 만들기
4분 29초경
FirebaseStorage 부분에서 오류뜨는데 버전문제인가요
- 미해결하울의 안드로이드 인스타그램 클론 만들기
4강) 페이스북 로그인 - 앱내에서 에러
The supplied auth credential is malformed or has expired. [Unsuccessful debug_token response from Facebook: {"error":{"message":"invalid OAuth access token signature.","type":"OAuthException","code":190,"fbtrace_id":Acu8tEB3YQPe3TjpMjaMXVn"}}] 앱 실행시 이메일 로그인과 구글로그인은 잘 작동하는데, 페이스북로그인 버튼을 클릭하면 위의 에러 메시지가 뜹니다. 어떤 문제가 있는건지 잘 모르겠습니다ㅜㅜ
- 미해결하울의 안드로이드 인스타그램 클론 만들기
3강 SHA - 1키를 넣는 방법 sputnik7565님의 SHA1 보충 설명입니다
사용 설정을 한 후 빨간색으로 표시한 '프로젝트 설정'으로 갑니다. 이런 화면이 보이실 텐데 좀 더 내려 보시면 붉은색 부분이 비어져 있을 것입니다. 이쪽에 붙여 넣기를 하시면 됩니다.
- 미해결하울의 안드로이드 인스타그램 클론 만들기
DetailViewFragment 화면 오류
이런식으로 DetailViewFragment에서 이런식으로 코드를 짜주었는데 앱을 실행시키면 반영이 안되고 전에 설정해주었던 색만 뜹니다.. 무슨 오류일까요 ackage com.example.instargram_cloncoding.navigationimport android.os.Bundleimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.TextViewimport androidx.fragment.app.Fragmentimport androidx.recyclerview.widget.LinearLayoutManagerimport androidx.recyclerview.widget.RecyclerViewimport com.bumptech.glide.Glideimport com.example.instargram_cloncoding.Rimport com.example.instargram_cloncoding.navigation.DataModle.ContentDTOimport com.google.firebase.firestore.FirebaseFirestoreimport com.google.firebase.firestore.QuerySnapshotclass DetailViewFragment : Fragment(){ //데이터베이스에 저장하기 위해 var firestore : FirebaseFirestore? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { var view = LayoutInflater.from(activity).inflate(R.layout.fragment_detail,container,false)//프레그먼트 레이아웃 받아오는 부분 firestore = FirebaseFirestore.getInstance() view.findViewById<RecyclerView>(R.id.DetailViewfFagment_Recyclerview).adapter = DetailViewRecyclerViewAdapter() view.findViewById<RecyclerView>(R.id.DetailViewfFagment_Recyclerview).layoutManager = LinearLayoutManager(activity) return view } //디테일뷰의 아이템과 디테일뷰 layout을 합치는 어뎁터 inner class DetailViewRecyclerViewAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>(){ var contentDTOs : ArrayList<ContentDTO> = arrayListOf() var contentUIDList : ArrayList<String> = arrayListOf() var querySnapshot : QuerySnapshot? = null init { //시간순으로 이미지들을 받아오고 만약 연결된 주소의 데이터가 바뀌면 바때마다 자동으로 업데이트해줌 firestore?.collection("images")?.orderBy("timestamp") ?.addSnapshotListener{ querySnapshot, firebaseFirestoreExcepthion -> contentDTOs.clear() contentUIDList.clear() for (snapshot in querySnapshot!!.documents) { var item = snapshot.toObject(ContentDTO::class.java) contentDTOs.add(item!!) contentUIDList.add(snapshot.id) } notifyDataSetChanged()//값 새로고침 자동으로! } } //화면을 최초 로딩하여 만들어진 View가 없는 경우, xml파일을 inflate하여 ViewHolder를 생성한다. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { var view = LayoutInflater.from(parent.context).inflate(R.layout.item_detail,parent,false) return CustomViewHolder(view) } //굳이 클래스를 만들어서 리턴해주는이유는 메모리사용량때문에 그렇다. 딱히 사용하지 않아도 문제는 되지 않는다. inner class CustomViewHolder(view: View): RecyclerView.ViewHolder(view) //위의 onCreateViewHolder에서 만든 view와 실제 입력되는 각각의 데이터를 연결한다. //서버에서 넘어온 데이터들을 연결! override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val viewholder = (holder as CustomViewHolder).itemView viewholder.findViewById<TextView>(R.id.detailviewitem_profile_nameTextview).text = contentDTOs[position].userId //Image Glide.with(holder.itemView.context).load(contentDTOs[position].imageUrl).into(viewholder.findViewById(R.id.detailviewitem_imageview_content)) //Explain of content viewholder.findViewById<TextView>(R.id.detailviewitem_explan_textview).text = contentDTOs[position].explain //likes viewholder.findViewById<TextView>(R.id.detailviewitem_favoriteconter_textview).text = "Likes" + contentDTOs!![position].favoriteCount //Profile Image Glide.with(holder.itemView.context).load(contentDTOs[position].imageUrl).into(viewholder.findViewById(R.id.detailviewitem_profile_image))//// //User Id// var profile = binding.detailviewitemProfileNameTextview//// //User Id 유저 이름// profile.text = contentDTOs!![position].userId//// //Image 사진// Glide.with(holder.itemView.context).load(contentDTOs!![position].imageUrl).into(binding.detailviewitemImageviewContent)//// //Explan 유저글// binding.detailviewitemExplanTextview.text = contentDTOs!![position].explain//// //Likes 좋아요 개수 카운트// binding.detailviewitemFavoriteconterTextview.text = "Liks" + contentDTOs!![position].favoriteCount//// //ProfileImage 유저 프로파일 이미지 즉, 프로필사진// Glide.with(holder.itemView.context).load(contentDTOs!![position].imageUrl).into(binding.detailviewitemProfileImage) } //RecyclerView로 만들어지는 item의 총 개수를 반환한다. override fun getItemCount(): Int { return contentDTOs.size } }}
- 미해결하울의 안드로이드 인스타그램 클론 만들기
bottom 네비게이션
왜 이런가요?ㅠㅠ bottom_navigation_main.xml: <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_home" android:icon="@drawable/ic_home" android:enabled="true" android:title="@string/home"/> <item android:id="@+id/action_search" android:icon="@drawable/ic_search" android:enabled="true" android:title="@string/home"/> <item android:id="@+id/action_add_photo" android:icon="@drawable/ic_add_a_photo" android:enabled="true" android:title="@string/home"/> <item android:id="@+id/action_favorite_alarm" android:icon="@drawable/ic_favorite_border" android:enabled="true" android:title="@string/home"/> <item android:id="@+id/action_account" android:icon="@drawable/ic_account" android:enabled="true" android:title="@string/home"/></menu> activity_main.xml: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns: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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.appcompat.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="35dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@drawable/logo_title" /> </RelativeLayout> </androidx.appcompat.widget.Toolbar> <LinearLayout android:id="@+id/toolbar_division" android:background="@color/colorDivision" android:orientation="horizontal" android:layout_below="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="1dp"></LinearLayout> <FrameLayout android:id="@+id/main_content" android:layout_below="@+id/toolbar_division" android:layout_above="@id/nav_division" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout> <LinearLayout android:id="@+id/nav_division" android:background="@color/colorDivision" android:orientation="horizontal" android:layout_above="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="1dp"></LinearLayout> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/bottom_navigation_main"> </com.google.android.material.bottomnavigation.BottomNavigationView></RelativeLayout>
- 미해결하울의 안드로이드 인스타그램 클론 만들기
AAPT: error: unexpected element <intent-filter> found in <manifest><application>.오류
코드 말씀하신대로 그대로 따라가는데도 이런 에러가 나네요 혹시 방법 없을까요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
이미지 업로드 시
강사님께서 말한 2가지 방법 1. callback method 2. promise method 위 두 가지 방법으로 진행을 해봤는데 promise method로 이미지를 업로드하면 imageUrl이 이상하게 저장되서 이미지를 불러올 수가 없습니다. file not found 에러가 발생합니다.. 하지만 callback method 방법으로 이미지를 업로드하면 올바른 imageUrl이 저장되고 DetailViewFragment에서 사진들이 잘 표시가 됩니다.. 무슨 문제가 있을까요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
[개선코드]signinAndSignup()의 else문 보완
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 { //Login if you have account if (task.exception?.message.equals("The email address is already in use by another account.")) signinEmail() //Show the error message else Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show() } } } 동일 계정 존재로 인한 exception일 경우 signinEmail() 함수를 호출하도록 했습니다. (그 외 이메일 형식 오류 또는 비밀번호 형식 오류일 경우 Toast로 에러 메시지를 보여줍니다.)
- 미해결하울의 안드로이드 인스타그램 클론 만들기
정보 공유 차원에서 남깁니다.
푸시 라이브러리 관련해서 ServerKey 발급 받는 곳이 변경 되었습니다. 기존 구글 개발자 콘솔 -> Creditional -> API 키 발급에서 Firebase -> 프로젝트 설정 -> 클라우드 메세지 탭에 가면 서버키 란이 있습니다. 해당 키를 사용하시면 됩니다. 관련 자료 : https://stackoverflow.com/questions/39678088/gcm-401-unauthorized-where-to-get-the-right-server-key
- 미해결하울의 안드로이드 인스타그램 클론 만들기
네이버,카카오로 로그인 기능은 못 추가 하나요?
구글,페이스북 말고도 파이어 베이스에 없는 네이버,카카오 로로그인도 넣고 싶은데 구현 불가능한 부분인가요?
- 미해결하울의 안드로이드 인스타그램 클론 만들기
토큰 얻어서 그걸 어떻게 이용하는지는 안나오나요 ?
흠좀무
- 미해결하울의 안드로이드 인스타그램 클론 만들기
401에러
먼저 강의 너무 잘 보고 있습니다. 감사합니다. 그런데 마지막 강의 보며 따라하는데 okHttpClient?.newCall(request)?.enqueue(object : Callback { override fun onFailure(request: Request?, e: IOException?) { } override fun onResponse(response: Response?) { Log.e("bodys", response?.body()?.string().toString()) }}) 저기 로그를 찍어보면 <HEAD> <TITLE>INVALID_KEY_TYPE</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>INVALID_KEY_TYPE</H1> <H2>Error 401</H2> </BODY> </HTML> 이런식의 401 에러가 나옵니다.. 구글링도 해보고 계속 시도해보고 키값도 바꿔가며 해보는데 안됩니다... 아 어떻게 해결해야 할까요 ㅠㅠ