일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- RecyclerView
- 깃헙
- WebView
- error
- 안스
- Gradle
- GIT
- ADB
- Github
- 안드로이드 스튜디오
- coroutine
- 에러
- 유튜브
- 스튜디오
- Kotlin
- 코루틴
- image
- 의존성주입
- 안드로이드스튜디오
- Android
- 웹뷰
- dart
- studio
- 안드로이드
- Retrofit
- 코틀린
- 레트로핏
- build
- viewpager
- MVVM
- Today
- Total
목록전체 글 (164)
코딩하는 일용직 노동자
10월12일 안드로이드 스튜디오 4.1버전이 릴리즈 되었습니다. 4.1버전은 개발자가 코드를 더 빨리 작성하도록 Android Jetpack 라이브러리를 사용하는 동안 생산성을 높이는 것이라 밝혔습니다. Material Design Components updates 머터리얼 디자인 컴포넌트가 업데이트 되었습니다. [New Project]에서 새로운 프로젝트를 생성할때 머터리얼 디자인 컴포넌트를 사용하고 테마 및 스타일에 대한 최신 UI기능을 지원합니다. Database Inspector Database Inspector를 사용하여 앱의 데이터베이스를 검사, 검색 및 수정할 수 있습니다. 사용하려면 API 레벨을 26이상으로 설정되어야 합니다. 메뉴 표시줄에서 [View > Tool Windows > Da..
안드로이드 퍼미션 라이브러리가 여럿 있습니다. 오늘 소개해드릴 라이브러리는 Dexter입니다. 박상권님이 만드신 TedPermission 만큼이나 사용이 편리합니다. 우선 gradle 에 아래처럼 추가해줍니다. dependencies{ implementation 'com.karumi:dexter:6.2.1' } Single Permission인 경우 아래처럼 처리합니다. -Java Dexter.withContext(this) .withPermission(Manifest.permission.CAMERA) .withListener(new PermissionListener() { @Override public void onPermissionGranted(PermissionGrantedResponse respo..
2018년 구글은 Android Jetpack을 공개했습니다. Jetpack 은 더욱 쉽고 빠르게 앱을 만들 수 있도록 도와주는 도구를 모아 놓은 라이브러리입니다. 또한, 이 시기 주변의 안드로이드 개발자들 사이에서도 코틀린을 이용한 개발이 급증하기 시작했고 저도 부랴부랴 코틀린을 공부했던 기억이 있습니다. 구글은 Jetpack을 공개하면서 개발자들이 고품질 애플리케이션을 더 쉽게 만들 수 있도록 했습니다. 하지만 제대로 해결하지 못한 영역이 UI였습니다. Jetpack Compose는 바로 이 UI영역을 획기적으로 개선하기 위해 만들어지는 것입니다. 지금의 안드로이드 UI는 xml로 레이아웃과 뷰들을 만들어 배치하고 소스에서 뷰들의 id를 바인딩하여 이벤트를 붙이고 사용하는 방식이었습니다. 하지만 Je..
깃헙에 새로 레파지토리를 생성하고 안드로이드 프로젝트를 생성해서 작업을 하려는데 빌드 할때마다 .gradle/, .idea/ 폴더들의 파일이 계속 unstaged 상태로 표시되었다. 파일이 한두개도 아니고 빌드 할때마다 10개 정도의 파일이 계속 unstated 에 표시되니깐 미칠지경이었다. 우선 .gitignore 파일을 살펴보니 .gradle/ 나 .idea/ 는 기본적으로 등록은 되어 있었다. 검색해보니 git 의 캐쉬를 날려주면 적용되는것을 알 수 있었다. 터미널을 열어서 .gitignore 파일이 있는 위치로 가서 아래의 명령어를 입력했다. $ git rm -r --cached . 이렇게 하니깐 .gitignore 파일에 적용된 내용이 깃프로그램에 걸러지는 것을 확인했다. 또는 조금더 확..
#0 들어가며 새로운 프로젝트를 위해 bitbucket 에 초대를 받아 해당 레파지토리를 클론하고 이용하려고 하니 이런 오류가 발생했다. 내가 Git을 이용할때 사용한 GUI 툴은 Gitkraken 인데 아래의 경고가 보이고 pull 이든 push 든 다 안됐다. Sourcetree 에서도 비슷한 현상이 발생했다. 알고보니 ssh 인증키가 맞지 않아 bitbucket이 명령을 받아주지 않는 것이었다. GitKraken 은 해당 툴에서 다시 ssh 인증키를 생성하고 편하게 등록할 수 있었는데 소스트리는 어떻게 해야하는지 알수가 없어서 한참 헤맸다. 일단 GitKraken과 Sourcetree가 bitbucket을 접근할 수 있도록 SSH 인증키를 등록해보자. #1 Sourcetree SSH key 생성 후..
기존 안드로이드 로컬 데이타베이스를 사용할땐 SQLite를 이용했습니다. 하지만 사용방법이 매우 불편하기 때문에 ORMLite 나 greenDAO 같은 별도의 ORM(Object-relational mapping)을 이용하거나 Realm을 이용합니다. Room은 SQLite를 편리하게 사용하도록 구글이 공식적으로 내놓은 ORM이라고 생각하시면 됩니다. (왜 이걸 이제야 내놓는지... 만들어줄거면 진작에 나왔어야 하는거 아닌가 싶으ㄴ... -_-;;) 이번 포스팅에선 Room을 어떻게 사용하는지 기초적인 방법을 확인해보겠습니다. #1. Room의 기본구성요소 Entity : 데이타베이스의 테이블 이라고 생각하면 됩니다. DAO(Data Access Object) : 데이타베이스를 조작하는 함수들을 여기서 ..
리사이클러뷰를 구현하기 위해 어댑터를 만드는 과정은 다소 귀찮거나 복잡하다고 느낍니다. 특히나 뷰타입을 다르게 꾸며줘야 할때는 더더욱... Kotlin 환경에서 리사이클러뷰 어댑터를 쉽고 빠르고 편리하게 사용할 수 있게 도와주는 라이브러리가 나왔습니다. https://github.com/ibrahimyilmaz/kiel ibrahimyilmaz/kiel Kotlin way of building RecyclerView Adapter 🧩. You do not have to write RecyclerView Adapters again and again and suffer from handling of different view types. Kiel will help you. - ibrahimyilmaz/kie..
안드로이드 개발중 Log를 많이 이용하게 됩니다. 예전에는 Log를 관리하는 클래스를 직접 만들어서 관리했는데 최근에는 라이브러리를 많이 이용합니다. 2년정도 Timber를 이용했습니다만 이쁜 Log 라이브러리가 발견해서 이렇게 포스팅 해봅니다. https://github.com/orhanobut/logger orhanobut/logger ✔️ Simple, pretty and powerful logger for android. Contribute to orhanobut/logger development by creating an account on GitHub. github.com
그동안 안드로이드 Java 에서 비동기 작업을 할때 많이 사용되던 AsyncTask 가 Android11 에서 deprecated 되었습니다. Kotlin 으로 개발할때는 Coroutine 을 사용하기 때문에 큰 불편함이 없겠지만, Java로 개발할 경우에는 AsyncTask 를 대체할 방법을 찾아야 합니다. 구글링을 해보면 AsyncTask 를 대체하기 위해 RxJava 를 이용한 처리를 추천하는 포스팅이 많습니다만, Rx에 익숙하지 않은 저로써는 다른 방법을 찾고 싶었습니다. 소개해드릴 비동기처리 라이브러리는 Needle 입니다. Java로 만들어진 안드로이드 멀티쓰레드 라이브러리입니다. 소스를 살펴보니 Executor와 Runnable 을 사용해서 만들어져 있습니다. 나온지 꽤 오래되었고 v1.0...
안드로이드 웹뷰에서 불러온 html 페이지의 소스를 얻어내는 방법. fun initView() { webView.settings.apply { this.setSupportMultipleWindows(false) // 새창 띄우기 허용 this.setSupportZoom(false) // 화면 확대 허용 this.javaScriptEnabled = true // 자바스크립트 허용 this.javaScriptCanOpenWindowsAutomatically = false // 자바스크립트 새창 띄우기 허용 this.loadWithOverviewMode = true // html의 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정 this.useWideViewPort = true // html의 viewpo..