최근의 안드로이드 구조를 배우기 위해 손잡이 앱을 개발했다(선정편)

6774 단어 Android
취미로 안드로이드 앱 개발은 이전부터 허둥지둥 진행됐지만, 최근까지 업무 관계로 안드로이드 로컬 개발 기회가 드물었다.
이번에 안드로이드의 로컬 개발에 종사할 때 현재 유행하는 안드로이드의 최신 구조와 프로그램 라이브러리를 배우고 싶어서 저는 장르로 수서에 표시된 핫이슈를 읽을 수 있는 프로그램을 만들었습니다.
Google Play 스토어에서 공개 중입니다.
HotBook. - 글을 쉽게 읽을 수 있어요.

목표

  • 가급적 앞으로 표준이 될 개발 방법으로 해보자
  • API 통신을 위한 애플리케이션을 만들어 보세요
  • 만든 물건



    전체적으로 다크 블랙을 주제로 Coodintor Layout을 사용해 현대 안드로이드 앱의 느낌을 살렸다.

    각 도메인에서 JavaScript 찾아보기를 잘라낼 수 있는 기능을 설정합니다.
    안드로이드의 웹뷰가 자바스크립트를 무효로 설정한 것은 이번이 처음이며, 언제 사용한 설정이 기능으로 조합되었는가.

    물론 보미도 볼 수 있다.

    지금 안드로이드 개발이 어떻게 되어가고 있는지.


    Google이 공식적으로 영리한 라이브러리를 많이 공개했기 때문인지 Google 라이브러리만으로도 괜찮은 프로그램을 만들 수 있습니다.
    이번에 앱을 만들 때 저는 다음과 같은 내용을 선택했습니다.
    아, 역시 IDE는 안드로이드 스튜디오 택일 맞죠?
  • 언어
  • kotlin
  • 아키텍처
  • Android Architecture Components(Google 공식 Observer 지원)
  • Data Binding(Google 공식 MVM 지원)
  • 통신/모델 주위
  • Retroffit(HTTP 통신)
  • moshi(JSON 변환)
  • View 주변
  • Android Design Support Library(Google 공식 UI 라이브러리)
  • Picasso
  • 다른 연관 라이브러리가 포함된 dependency 일람은 이런 느낌이다.
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.30"
    implementation 'android.arch.lifecycle:extensions:1.1.0'
    implementation 'android.arch.lifecycle:runtime:1.1.0'
    implementation 'com.android.support:support-v4:27.1.0'
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support:cardview-v7:27.1.0'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:preference-v7:27.1.0'
    implementation 'com.android.support:recyclerview-v7:27.1.0'
    implementation 'com.squareup.moshi:moshi:1.5.0'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.squareup.retrofit2:converter-moshi:2.3.0'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    kapt 'android.arch.lifecycle:compiler:1.1.0'
    kapt 'com.android.databinding:compiler:3.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    
    자세히 보면 Google 공식 라이브러리와 Square 라이브러리만 있습니다 (웃음)
    이 선정된 개발 환경을 포함해서 이렇게 된 느낌.
  • Android Studio3.0.1
  • Android Support Library 27.1.0
  • Android Architecture Component 1.1.0
  • kotlin 1.2.30
  • Retrofit 2.3.0
  • moshi 1.5.0
  • picasso 2.5.2
  • 언어


    앞으로 개발하면 무조건 코튼.AndroidStudio3.0부터 지지의 대강대강 발표가 된 것은 새로운 언어다.
    kotlin의 장점은 자바와 공존할 수 있다는 것이다.
    뭐랄까, 예를 들면 세 개의Activity가 있는데 그 중 두 개의Activity는 자바로 쓸 수 있고 하나의kotlin만 쓸 수 있다.
    또한 kotlin에서 자바가 쓴 함수나 변수를 호출할 수도 있고, 반대로 자바에서 kotlin이 쓴 함수를 호출할 수도 있다.
    날짜를 바꾸는 유틸리티 클래스에서kotlin으로 먼저 바꿀 수도 있습니다.
    자바와 호환성이 있고 스위프트에 가까운 현대적 기법 때문에 kotlin은 기억하지 못한다.

    아키텍처


    이번에 주목한 건요.
  • Android Architecture Components
  • Data Binding
  • 하지만 둘 다 구글이 제공한 것이 특징이다.Google 정부에서 새로운 아키텍처를 제안하는 것은 매우 흥미롭습니다.
    안드로이드는 출시 이후 오랜 시간이 흘렀고, 보다 효율적인 방법으로 쓰고 표준화할 수 있다면 개발이 수월해질 것으로 기대된다.
    물론 둘 다'아니요'를 선택할 수 있기 때문에 Archiitecture Components만 사용하거나 Databinding만 사용합니다.
    이러한 구조를 사용한 해설은 다른 페이지에 소개될 것이다.
    최근 안드로이드 아키텍처를 배우기 위해 손잡이 애플리케이션(아키텍처 편)을 개발했습니다.

    통신/ 모형 주위


    여기에 채택된 Retrofitmoshi는 iOS가 말한 Alamofire 정도의 표준 라이브러리이다.예전에는 볼리같은 걸로
    moshi는 Retroffit에서 가져온 JSON 데이터를 대상으로 변환합니다.리토핏과 모스시가 연합한 라이브러리도 공개돼 API 통신에서 단숨에 JSON으로 전환하기 편하기 때문이다.
    하지만 Retroffit 자체가 다른 라인에서 이동하지 않으면 당연히 나타난다NetworkOnMainThreadException.
    Android 표준 API를 사용한다면 AsyncTask는 최근까지 RxJava로 수신했으며, 이번에는 Archiitecture Components의 LiveData를 사용했다.
    이 라이브러리를 사용하는 설명은 다른 페이지에서 진행될 것입니다.

    View 주변


    Android5.0 이상이면 일반 제작이라도 소재 디자인이 될 수 있다.Google 공식 애플리케이션처럼 멋진 UI디자인 라이브러리를 만들기 위해서도 Google 공식에서 제공하지만, 사용만으로도 좋은 느낌을 주는 신뢰할 수 있는 존재입니다.
    이번에는 디자인 라이브러리에서 CoordinatorLayout을 사용하기로 했다.정말 말 그대로 잘 어울리는 라이브러리예요.Android 표준 커뮤니케이션 북 애플리케이션에 사용됩니다.
    화면 스크롤과 함께 Action Bar를 숨기고 시차 스크롤을 제공합니다.
    또 다른 picasso는 이미지 HTTP를 가져오는 것부터 캐시까지 한 손으로 받아들일 수 있는 프로그램 라이브러리다.현금 캐시 주변의 거의 전부를 도서관이 보관하고 있어 안심이 된다.
    이 라이브러리를 사용하고 싶은 해설도 다른 페이지에서 진행될 것입니다.

    개발 기간

  • 12월 하순에 어렴풋이 뭔가를 하고 싶다
  • 1월 상순에 정월 휴가를 이용하여 타겟으로 삼고 싶은 애플리케이션을 생각해낸다
  • 1월 중순~하순은 너무 바빠서 착수하기 힘들어
  • 2월 상순에 갑자기 시간이 생겨서 이틀 정도 단숨에 다 썼어요
  • 2/11 Google Play 출시
  • 이번에는 목표와 실현의 해결 수단으로서 실제로 배우고 싶은 것과 완벽하게 일치하는 좋은 학습입니다.

    좋은 웹페이지 즐겨찾기