1. 몇 마디
2. 세부 사항
안드로이드 SDK
Android SDK를 홈 디렉토리 또는 앱과 관련이없는 기타 장소에 배치하십시오. 일부 IDE는 설치할 때 SDK를 연관시키고 SDK를 IDE의 동일한 디렉토리에 배치합니다. IDE를 업그레이드 (복원)하거나 IDE를 교체 해야하는 경우 나쁜 것을 찾을 수 있습니다. 또한 IDE가 루트 대신 사용자 계정 아래로 실행중인 경우 SDK를 시스템 수준 디렉토리에 배치하지 마십시오. 그렇지 않으면 Sudo를 사용할 때 허가가 필요합니다.
시스템 빌드 시스템
기본 선택은 Gradle입니다. 개미는 많은 제한 사항을 가지고 있으며 너무 큽니다. Gradle을 사용하면 쉽게 할 수 있습니다.
- 다른 풍미 또는 응용 분야 변형을 컴파일합니다
-간단한 클래스를 창출합니다 -스크립트 작업
-종속성 관리 및 다운로드
-Custom Keystores
-등
Android 용 Gradle 플러그인은 Google에서 새로운 표준 컴파일 시스템으로 지정되며 Google은 계속 업그레이드합니다.
프로젝트 구조
두 가지 인기있는 옵션이 있습니다 : Old Ant & Eclipse ADT 프로젝트 구조; New Gradle & Android Studio 프로젝트 구조. 후자를 선택해야합니다. 프로젝트가 이전 구조를 사용하는 경우 교체하십시오.
오래된 구조
구식 구조 ure ─ 자산 ─ Libs├| res├ ─ src│ └ └ └ 추어 효소
새로운 구조
New-Structure very ure ure ure ure ure ure ├ 용수 ├ ├ 효화는 libs│ ├ ├ ├ ├ 효율 용니다. SRC│ ├ 담담 담담 끄는 │ │ │ │ └ ─ java│ │ │ └ └ └ └ └ └ └ └ └ └ 용고/미래/project│ │ │ └ └ ├ ├ ├ ├용치용 주사위용액/project/project/project/project/project/project/project/project/project. Androidmanifest.xml│ ├ ├ 추? 빌드. 그레이드 │ └ └ └ 담사
새로운 구조의 주요 차이점은 '소스 코드 세트'(Main, AndroidTest)의 분할입니다. 이는 Gradle의 개념입니다.
최고 수준의 "앱"을 사용하는 것은 앱을 앱 (예 : Library-Foobar)에서 언급 한 다른 라이브러리 프로젝트와 구별하는 데 도움이됩니다. 그런 다음 gradle은 응용 프로그램의 색인을 이러한 라이브러리로 유지하고 App/Build.gradle은 이러한 라이브러리를 가리킬 수 있습니다.
Gradle 구성
일반 아키텍처 Android 용 Gradle에 대한 Google 안내서를 따르십시오.
작은 작업 (스크립트), Gradle을 사용하여 쉘, 파이썬 또는 Perl 대신 작은 작업을 생성 할 수 있습니다. 자세한 내용은 Gradle의 문서를 참조하십시오.
비밀번호. 응용 프로그램 build.gradle에서는 게시 편집을 위해 SigningConfigs를 정의해야합니다. 세부 사항은 다음과 같습니다.
다음과 같이 쓰지 마십시오. 버전 제어 시스템에 나타납니다.
SigningConfigs {release {storefile 파일 ( "myapp.keystore") storepassword "password123"keyalias "thekey"kyypassword "password789"}}대신 버전 제어 시스템에 추가되지 않는 Gradle.Properties 파일을 작성해야합니다.
keystore_password = password123key_password = password789
이 파일은 Gradle에 의해 자동으로 가져 오므로 다음과 같이 build.gradle에서 사용할 수 있습니다.
SigningConfigs {release {try {storefile file ( "myapp.keystore")) storepasswordkeystore_password keyalias "kyypasswordkey_password} catch (ex) {wrownewinValiduserDataException ("keystore_password 및 key_password를 gradle.properties에서 정의해야합니다. "(Maven을 사용하는 경우 원본 문서를 참조하십시오)
도서관
Jackson은 객체와 JSON 데이터를 서로 변환 할 수있는 Java 라이브러리입니다. GSON도 비슷하게 좋은 선택입니다. 그러나 JSCKSON은 JSON을 처리하는 여러 가지 방법을 지원하기 때문에 더 좋다고 생각합니다 : 스트리밍, 메모리 트리 모델 및 JSON-POJO 데이터 바인딩을 구동합니다. 그러나 Jackson은 GSON보다 크다는 점을 기억하십시오. 65K 메서드 제한을 피하려면 GSON을 사용하는 것이 가장 좋습니다. 기타 옵션 : JSON-SMART 및 BOON JSON
네트워크, 캐시 및 사진. 발리 또는 개조를 사용하십시오. 발리는 이미지를로드하고 캐시하는 데 사용될 수도 있습니다. Retrofit을 선택하면 Picasso를 사용하여 이미지를로드하고 캐시 할 수 있습니다. 그런 다음 OKHTTP를 사용하여 유효한 HTTP 요청을 수행하십시오. 이 세 가지 유형 의이 유형 : Retrofit, Picasso 및 Okhttp는 모두 같은 회사에서 나 왔으므로 서로 보완합니다. OKHTTP는 발리에 연결하는 데 사용할 수 있습니다.
Rxjava는 반응 형 프로그래밍 라이브러리입니다. 즉, 비동기 이벤트를 처리합니다. (자세한 내용은 원본 문서를 참조하십시오)
Retrolambda는 JDK8 이전의 Android 또는 기타 플랫폼에서 Lambda Expressions를 사용하는 데 도움이되는 Java 라이브러리입니다. (자세한 내용은 원본 문서를 참조하십시오)
마지막으로 DEX 메소드 제한을 기억하고 너무 많은 라이브러리를 사용하지 마십시오. (Android 애플리케이션은 DEX 파일에 포장 할 때 최대 한계를 가졌다 : 65535 참조 방법 [1] [2] [3] 한계를 초과하면 심각한 오류가 발생합니다. 따라서 너무 많은 라이브러리를 사용하지 말고, Dex-method-counts를 사용하여 한계 내에서 유지하기 위해 어떤 클래스를 사용하지 않기 때문에, 특히 13K 방법을 사용하지 않기 때문에).
활동과 조각
조각은 Android 배포 UI 인터페이스의 기본 옵션이어야합니다. 응용 프로그램에서 조각을 재사용 할 수 있습니다. 다음 사항에 따라 인터페이스를 그리는 활동 대신 조각을 사용하는 것이 좋습니다.
자바 패키지 구조
안드로이드 애플리케이션의 Java 구조는 MVC 구조 (Model-View-Controller)에 가깝습니다. 안드로이드에서는 조각과 활동이 실제로 컨트롤러 클래스입니다. 다른 관점에서 볼 때, 그것들은 사용자 상호 작용의 일부입니다. 즉, View View 클래스에 속합니다.
그러므로 우리는 조각 (또는 활동)이 컨트롤러인지보기인지를 엄격하게 구별하기가 어렵습니다. 따라서 Java 패키지의 관점에서 볼 때 파편을 자체 파편 패키지에 넣은 다음 활동이 가장 고급 패키지에 있습니다 (위의 제안을 따르십시오). 물론 2 개 이상의 활동을 원한다면 활동 패키지를 만듭니다.
이러한 방식으로 전체 구조는 일반적인 MVC 구조처럼 보입니다. 모델 패키지에는 API 인터페이스에서 얻은 JSON 데이터를 변환하는 데 사용되는 Pojos가 포함되어 있으며 뷰 패키지에는 뷰, 알림, 액션 바보기, 위젯 등이 포함되어 있습니다. 어댑터는 데이터와 뷰 사이에 위치한 중간 계층입니다. 그러나 일반적으로 getView ()를 통해 뷰보기를 출력해야하므로 뷰 패키지의 하위 포장 위치에 어댑터를 배치 할 수 있습니다.
Android 시스템에만 속하는 일부 애플리케이션 수준 컨트롤러 클래스는 관리자 패키지에 배치해야합니다. DateUtils와 같은 다양한 데이터 처리 클래스를 UTILS 패키지에 배치 할 수 있습니다. 배경 서버와 상호 작용하는 클래스는 네트워크 패키지에 배치해야합니다.
요컨대, 서버와 상호 작용하는 것부터 사용자와 상호 작용하는 것에 이르기까지 전체 아키텍처는 다음과 같이 설계 될 수 있습니다.
com.futurice.project ├─ Network ├ 확자 ├ 모델 ├ ─ 관리자 ├가는 ├ ─ Utils ├─ Fragments ├─ views ├ ‑ Adapters ├ ├커 ar actionbar ├ 담구 ├ 담제 ├ ─ 알림이 있습니다.
리소스 파일 이름 지정
다음과 같은 type_foo_bar.xml과 유사한 접두사 컨벤션을 따르십시오.
레이아웃 파일을 구성하십시오
레이아웃 XML 파일을 정규화하는 방법을 모르는 경우 다음 규칙을 참조 할 수 있습니다.
<? xml version = "1.0"alcoding = "utf-8"?> <linearlayout xmlns : android = "http://schemas.android.com/apk/res/android"xmlns : 툴 = "http://schemas.android.com/tools : layout_width ="andlayout_width = ""http:/schemas.android.com/tools " Android : layout_height = "match_parent"android : layout_height = "match_parent"Android : Orientation = "vertical"> <TextView Android : id = "@+id/name"android : layout_width = "match_parent"Android : layout_height = "wrap_content"and rap_content "and allignparight ="true " Android : text = "@String/name"style = "@Style/FancyText"/> include layout = "@layout/reusable_part"/> </linearlayout>