-
Notifications
You must be signed in to change notification settings - Fork 4
Android Code Convention
한국에서 지도 api를 사용할 때 네이버 지도와 카카오 맵 api를 주로 사용합니다.
그 중 커스텀 마커, 원, 폴리라인 등에서 카카오보다 네이버의 UI가 더 예쁘다고 생각되어 네이버를 사용합니다.
implementation("com.naver.maps:map-sdk:3.12.0")
api 'com.google.android.gms:play-services-location:19.0.1'
안드로이드에서는 카카오, 네이버, 구글 로그인을 많이 사용합니다.
저희 서비스의 타겟을 우선 대한민국으로 한정했기 때문에 셋 중 한국인에게 가장 친숙하고 많이 쓰이는 서비스인 카카오를 사용합니다.implementation "com.kakao.sdk:v2-user:2.15.0"
로딩 중인 화면에서 사용자에게 친숙하고 재미를 줄 수 있는 UI를 주기 위해 사용합니다.
서버에서 받은 목적지의 사진을 띄우기 위해 사용합니다.
implementation 'com.github.bumptech.glide:glide:4.15.1'
서버와의 손쉬운 통신을 위해 Retrofit을 사용합니다.
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
Json-converter로 kotlinx-serialization 사용합니다.
잘못 작성된 코드를 컴파일 에러로 잡아주고, 내부 동작에서 reflection을 사용하지 않는다는 장점이 있습니다.
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1'
retrofit 통신 시 intercept를 위해 사용합니다.
API 통신 모니터링, 공통 파라미터 또는 헤더 추가라는 장점이 있습니다.
implementation("com.squareup.okhttp3:logging-interceptor:4.11.0")
컨텍스트 스위칭 비용이 발생하지 않아 가볍게 동작하고 특정 스레드상에서 동작 하게 지정 할 수 있습니다.
그리고 개발자가 각 루틴을 언제 실행 할지, 언제 종료하는지 직접 지정이 가능하다는 장점이 있어 사용합니다.
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.4.2")
효율적인 단위 테스트를 위해 사용합니다.
testImplementation 'io.mockk:mockk-android:1.13.5'
testImplementation 'io.mockk:mockk-agent:1.13.5'
서버 통신 테스트를 위한 목서버 제작을 위해 mockwebserver를 사용합니다.
implementation 'com.squareup.okhttp3:mockwebserver:4.11.0'
MVVM 아키텍쳐 구현 시 viewmodel를 위해 사용합니다.
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
앱 시작 시 스플래시 화면을 띄우기 위해 사용합니다.
implementation "androidx.core:core-splashscreen:1.0.0"
Naaga 프로젝트와 Firebase와의 연동을 위해 사용합니다.
https://firebase.google.com/docs/android/setup?hl=ko
Firebase analytics에서 제공해주는 사용자 모니터링을 통해 사용자의 앱 사용 추세에 대해 알아보고자 사용합니다.
implementation "com.google.firebase:firebase-analytics-ktx"
실시간 비정상 종료를 기록해 앱의 안정성 문제를 추적하고 해당 문제를 해결하는 데 도움을 받기 위해 사용합니다.
implementation("com.google.firebase:firebase-crashlytics-ktx")
사용자의 토큰 정보를 암호화된 SharedPreference에 저장해 안전하게 보관하기 위해 사용합니다.
implementation "androidx.security:security-crypto-ktx:1.1.0-alpha03"
- targetSdk: Android 13 (API 수준 33)
- minSdk: Android 9(API 수준 28)
- 이유
<2022~2023 한국 안드로이드 버전 점유율>
- Android 9 이후 한국 안드로이드 시장 점유율이 95%가 넘는 기점
- 우리의 주 타겟층인 대한민국 사람이라면 Android 28 이하를 사용하는 사람은 드물 것이라는 추측
- 왠만한 대한민국 사람들은 다 수용할 수 있다는 생각에 해당 minSdk 선정
prefix_where_description
ex)
tv_home_title
et_myPage_nickName
View | Prefix |
---|---|
TextView | tv |
ImageView | iv |
EditText | et |
ContraintLayout | cl |
RecyclerView | rv |
ScrollView | sv |
NestedScrollView | nsv |
CheckBox | cb |
Switch | switch |
Progressbar | pb |
... | ... |
ex)
ic_home
img_profile
rect_purple_main_radius_small_stroke3
oval_black000000
Drawable | Naming |
---|---|
Icon | ic_description |
Image | img_description |
Shape | shape_color_radius_stroke |
description_color
<color name="main_purple">#FFD4A5E4</color>
where_description_what
// 공통된 margin/padding은 where를 space로 사용
<dimen name="space_default_medium">12dp</dimen>
// 특정 뷰에만 사용되는 경우
<dimen name="mypage_start_margin">30dp</dimen>
// radius는 세가지
<dimen name="radius_small">12</dimen>
<dimen name="radius_medium">24</dimen>
<dimen name="radius_large">36</dimen>
where_description
// 공통
<string name="all_begin_adventure">모험 시작</string>
// 특정 뷰
<string name="myPage_setting">내 설정</string>