본문 바로가기

안드로이드

(25)
2년동안 안드로이드 개발이 나에게 알려준 것들 Medium 글을 읽다가, 2년동안 혼자 프로젝트를 맡아서 안드로이드 개발을 하면서 느꼈던 점을 개발자분이 적어 놓은 글을 보았다. 내가 놓치고 있는 점을 잘 정리해주는 글인 것 같아서 한글로 번역해서 정리해본다. 이 글을 계기로 더 나은 개발자로 나아가고 싶다. 있는 것을 또 개발을 하려고 하지마라! 예를 들어서, Retrofit을 만들 필요는 없다. 현명하게 라이브러리르 선택해라! 맹목적으로 라이브러리를 사용하지 마라! start의 수를 체크해라! 많은 것이 더 좋은 라이브러리 일 수 있다. 이슈들을 체크해라! open과 closed 둘다 시간이 조금 있다면? 라이브러리의 코드를 살펴봐라! 체크하면서 정말 도움이 될 것이다. [TIP] Command Line으로 바로 라이브러리를 살펴보고 싶다면 Dr..
[안드로이드 중급] 툴바(Toolbar) 툴바(Toolbar)는 안드로이드 5.0(21버전)에 도입이되었다. 툴바의 형태인 앱바는 5.0 이전에 액션바라고 불렸다. 기존의 액션바는 고정된 상태이지만, 툴바는 커스터마이징이 자유로워져서 사용자가 원하는 디자인을 만들 수 있다. 툴바를 추가하는 방법은 아래와 같다. AndroidManifest.xml에 Theme.AppCompat.Light.NoActionBar 설정을 한다. 레이아웃에 툴바를 추가한다. 액티비티에서 툴바 객체를 생성한다. 생성한 툴바 객체를 setSupportActionBar() 메소드의 인자로 지정하여 호출한다. 툴바 객체나 getSupportActionBar()를 사용하여 속성 수정한다. 간단한 예제를 구현해보도록 한다. 새로고침, 검색, 공유 메뉴를 만들고, 각각의 속성을 달..
[Flutter] Flutter 공부 1일차(위젯, stateless, stateful widget) 프로젝트를 진행하면서, Flutter를 공부하게 되었다. 아직 Flutter가 나에게 와 닿지 않지만, 피할 수 없으므로, 재밌게 공부해볼까한다. 개발 문서로 공부하면서 Flutter가 정확히 어떤 것이고, 기존 안드로이드에서 사용하는 방법과 어떻게 다른지 이해해보려고 한다. https://flutter-ko.dev/docs/get-started/flutter-for/android-devs 위의 링크는 플로터 한글판 개발 문서이다. 잘 이해가 안되지만, 천천히 정리하면서 이해해보도록 하자. Flutter는 다양한 기능과 구성을 위해 모바일 운영체제를 사용한다. 그렇기에 Android 관련 지식과 기술은 Flutter 앱을 만들 때 아주 유용하게 적용된다. Flutter는 모바일에서 UI를 만드는 새로운 ..
[Git Q&A] iMac에서 .git 삭제하는 방법 매번 초기 커밋을 잘못하거나 푸시를 잘못했을 때 .git을 삭제하고 다시 만들려고 하는데 명령어가 생각이 나질 않았다. 찾아보는것도 너무 귀찮아서 여기에 정리하려고 한다. 먼저 해당 폴더에서 터미널을 열고 아래와 같이 입력한다. rm -rf .git .git 파일이 삭제된다. 끝 참고 링크 https://stackoverflow.com/questions/1213430/how-to-fully-delete-a-git-repository-created-with-init
[안드로이드 Q&A] 오류 해결방법 (In AndroidManifest: Expecting android:screenOrientation=“portrait”) 최근 안드로이드 스튜디오 3.6.1로 업데이트를 했다. 이때 내가 진행하고 있던 앱 프로젝트는 세로모드 고정이었는데 android:screenOrientation="portrait"에서 빨간 줄이 띄어졌다. 나는 서둘러 구글링을 했고, 해결방법 2가지를 찾았다. [첫번째 방법] Android Studio -> Preferences (or settings in Windows) -> search "chrome" -> Uncheck "Activity is locked to an orientation" -> apply and ok -> Sync Project with Gradle flie [두번째 방법] Select "Run" from the main menu -> Edit Configurations. -> L..
[안드로이드 Q&A] 안드로이드 signed APK만들 때 release랑 debug 차이점? 안드로이드 스튜디오를 통해서 signed APK를 배포할 경우 release 탭과 debug 탭을 마주할 수 있을 것이다. 이때? 차이점이 무엇일까?? 일단 디버그 빌드(debug build)는 개발 버전 또는 디버그 용도일 때 사용한다고 이해하면 된다고 한다. 릴리즈 빌드는 코드 난독화 및 최적화가 추가된 APK라고 보면 된다고 한다. 참고로 읽어보면 좋은 링크는 아래와 같다. https://developer.android.com/studio/publish/preparing.html https://j2hworld.tistory.com/77 [추후에 알아볼 용어] - 코드 난독화
[안드로이드 개인공부] ContentProvider로 이미지 가져오기 구현하기 ContentProvider는 앱 사이에서 각종 데이터를 공유할 수 있게 해주는 컴포넌트이다. 안드로이드 표준 시스템에서는 연락처인 Contacts나 이미지나 동영상 등의 데이터를 보관하는 MediaStore등이 있다. 데이터를 검색, 추가, 갱신, 삭제할 수 있으며, 주로 SQLITE 등의 관계형 데이터 베이스 이용을 염두에 두고 설계되었다. ContentProvider로 부터 데이터를 읽어오자. ContentProvider로 부터 데이터를 읽어오려면 해당 ContentProvider가 어디에 있는지 알아야한다. 경로는 'content://스키마'를 가진 URI(Universal Resource Indentifier)로 지정되고, 일반적으로 접근할 대상 앱에서 정의가 된다. 이 URI는 authorit..
[안드로이드 Q&A] 프래그먼트에서 add()와 replace()의 차이점이 무엇일까? 프래그먼트를 주로 사용하면서 add()와 replace()가 과연 어떤 점이 차이점이 있는지 항상 궁금했다. 그래서 각 역할에 대해서 알아보고, 차이점을 정리해보기로 했다. replace()는 아래와 같이 사용된다. fragmentTransaction.replace(int containerViewId, Fragment fragment, String tag) 인자로 컨테이너 아이디와 대체할 프래그먼트, 그리고 옵션으로 태그값을 넣게 된다. 여기서 컨테이너에 추가되었던 기존 프래그먼트를 바꾼다. 동일한 containerViewId로 추가 했던 모든 프래그먼트에 대해서 remove(Fragment)를 호출하고 새로운 프래그먼트를 추가하는 것이다. add()는 아래와 같이 사용된다. fragmentTransac..