Android 68

Publish android library with Github Packages

android library를 만들고 배포할려면 maven repository가 필요한데, 이게 준비가 되어 있지 않다면 aar파일을 직접 전달해야 하는 번거러움이 있습니다. 그런데 github packages에 apache maven을 지원해주기에 간단하게 aar library를 배포하여 사용할 수 있습니다. github packages에 대한 설명은. 해당 링크로.. github - personal access tokne 생성 github의 자신의 계정에서 Settings-> Developr settings -> Personal access tokens 으로 가서 access token을 생성 합니다. write packages, read packages 를 체크 합니다. properties proj..

Android 2021.04.02

다양한 adapter의 결합... concatadapter...

하나의 RecylerView에서 다양한 viewholder화면을 보여줄려면, 이전에는 하나의 adapter안에서 type들을 지정하고, 해당 position에 대해서 type에 맞는 viewholder들을 가져와서 보여줬습니다. 하지만, 여러 type들이 존재하거나 할 경우는 adapter안에는 다양한 type과 viewholder내용들이 존재하게 됩니다. header,. 그리고 item들이 순차적으로 있다고 해도, adapter에 대한 position의 계산도 틀려집니다. 그래서 이번에 concatadapter를 볼려고 합니다. developer.android.com/reference/androidx/recyclerview/widget/ConcatAdapter ConcatAdapter | Android..

Android 2021.03.06

사용하지 않는 resource 정리.

프로젝트의 시간이 길어질 수록 사용하지 않는 resource가 많아지는 문제가 있습니다. 리펙토링 하면서 이전 리소스에 대해서 지울 수도 있지만, 명시적으로 지워준다면 id를 만들지 않기 때문에 더 좋을 수도 있죠. build.gradle 에서 android { buildTypes { release { shrinkResources true } } }으로 빌드시에 resource정리를 하는 방법도 있지만, 명시적으로 지우는 것을 해볼까 합니다. android studio 에서 Refactor -> Remove Unused Resources... 라는 메뉴가 있습니다. 해당 기능을 통해서 layout, string, drawable, color, dimen 등등 사용하지 않는 resource를 지울 수 있습..

Android 2021.02.17

Firebase Crashlytics에서 custom UnCaughtExceptionHandler 적용하기.

Firebase Crashlytics에서 custom UnCaughtExceptionHandler를 적용하기 위해선 초기화 하는 방법을 변경해 줘야 합니다. Fabric에서 하는 방법은 별다른 방법이 없어도 잘 동작했지만, fabric에서 firebase crashlytics로 넘어가면서 초기화 순서가 중요해 졌습니다. firebase의 초기화는 contentprovider를 통해서 초기화 됩니다. contentprovider의 속성중 순서를 정할 수 있는 부분이, android:initOrder입니다. 이에 대한 설명은 동일한 프로세스에서 호스팅하는 다른 콘텐츠 제공자에 상대적으로 콘텐츠 제공자를 인스턴스화해야 하는 순서입니다. 콘텐츠 제공자 사이에 종속성이 있는 경우 제공자별로 이 속성을 설정하면 종..

Android 2020.12.31

goodbye? onActivityResult...

android개발하다 보면 onActivityResult로 결과를 받아오는 경우가 많습니다. A activity에서 B activity로 startActivityForResult 로 호출 후, B activity에서의 결과를 onActivityResult로 받게 되죠. 그런데, implementation 'androidx.activity:activity-ktx:1.2.0-alpha04' implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha04' 에서 다른 기능이 생겼습니다. 호출과 동시에 lambda function으로 다로 onActivityResult로 결과를 받지 않아도 됩니다. 일반적인 방법으로는 Intent(this@MainActivity, S..

Android 2020.05.14

kotlin file read...

kotlin으로 파일을 읽는 방법은 java로 할 하는 경우보다는 간단?? 한듯 합니다. 최종적으로 android하면서 사용한 방법은 fun fileRead(context: Context, fileUri: Uri): String { val sb = StringBuilder() val inputStream = context.contentResolver.openInputStream(fileUri) inputStream?.let { val reader = BufferedReader(InputStreamReader(inputStream)) val readLines = reader.readLines() readLines.forEach { sb.append(it) } it.close() } return sb.toS..

Android 2019.04.17

UnknownServiceException: CLEARTEXT communication to not permitted by network security policy

android Pie 대응을 위해서 targetSdkVersion을 28로 변경 후 갑자기UnknownServiceException: CLEARTEXT communication to example.com not permitted by network security policy와 같은 오류가 나오게 경험을 하게 됩니다. 이유는 android pie부터 http가 아닌 https를 이용해야 합니다. Protecting users with TLS by default in Android P 의 내용을 확인하면 됩니다. 간단하게 api의 도메인이 http가 아닌 https를 지원하고 http를 https로 변경만 하면 됩니다. 대부분의 회사 api들이 https를 지원하지만 그렇지 않은 경우도 있죠.이럴 땐 ht..

Android 2019.02.26

AndroidStudio에서 File Template이용하기.

AndroidStudio에서는 live template라는 좋은 기능이 있습니다. 단순하게 재사용이 많은 코드에 대해서 매크로 같은 기능이라고 해야 할까요?? 한두단어 쳤을 때 해당 template에 따라서 코드가 작성되는 것입니다. 단적인 예를 들어서 Fragment에서 새로운 instance를 상성하기 위해서는 이와 같은 코드를 작성한다고 했을 때 키보드를 그래도 수십번??? 의 타이핑이 필요 합니다. 하지만 live template 기능을 이용하면 이렇게 하면 단 몇번의 타이핑으로 원하는 기본 코드를 작성할 수 있습니다. 그렇다면 File Template기능은.. java나 html..javascript등에서 자주 사용하는 코드들에 대해서 기본 template를 작성해 두고 빠르게 원하는 기본 코드..

Android 2016.06.14

AndroidStudio에서 lombok 사용하기

자바에서 코드를 작성 시 모델을 만들다 보면 constructor와 기본 getter/setter.. 그리고 상황에 따라서 builder를 만들어 사용해야 합니다.그런데 이런 일들을 모두 타이핑 하다 보니 보일플레이트 같은 코드들이 많이도 써야 합니다. 코드 제너레이터들이 있어서 편하게 할 수 있긴 하지만 더 편한 방법이 없을까요?저같은 경우는 lombok을 사용해서 모델 객체들의 불필요한 보일플레이트 코드들을 줄이고 있습니다. annotation방법으로 사용하기 때문에 사용방법도 간단합니다. 1. @Getter / @Setter기본적으로 멤버필드들에 대한 getter/setter메소드들을 만들어 줍니다. 2. @AllArgsConstructor / @NoArgsConstructor멤버필드들이 모두 파라..

Android 2016.04.10