1. Beberapa kata
2. Detail
Android SDK
Tempatkan SDK Android Anda di direktori home Anda atau tempat lain yang tidak terkait dengan aplikasi. Beberapa IDE akan mengaitkan SDK saat memasang dan menempatkan SDK di direktori IDE yang sama. Ketika Anda perlu meningkatkan (menginstal ulang) IDE atau mengganti IDE, Anda akan menemukan sesuatu yang buruk. Selain itu, jika IDE Anda berjalan di bawah akun pengguna alih-alih root, jangan letakkan SDK di direktori tingkat sistem, jika tidak izin sudo diperlukan saat menggunakannya.
Bangun sistem
Pilihan default adalah Gradle. Semut memiliki banyak batasan dan terlalu besar. Dengan Gradle, Anda dapat melakukannya dengan mudah:
- Kompilasi berbagai rasa atau varian aplikasi
-Buat kelas sederhana -Script
-Man dan unduh dependensi
-Custom keystores
-dll
Plug-in Gradle untuk Android juga ditetapkan oleh Google sebagai sistem kompilasi standar baru, dan Google terus meningkatkannya.
Struktur proyek
Ada dua opsi populer: Struktur Proyek ADT Ant & Eclipse lama; Struktur Proyek Studio Lulusan & Android yang baru. Anda harus memilih yang terakhir. Jika proyek Anda menggunakan struktur lama, ganti.
Struktur lama
Struktur Lama ├─ Aset├─ Libs├─ Res├─ Src│ └─ Com/Futurice/Project ├─ Androidmanifest.xml├....
Struktur baru
Struktur Baru ├─ Perpustakaan-Foobar├─ App│ ├─ Libs│ ├─ Src│ ├─ Androidtest│ │ │ └ └ └ ├ ├ └ └ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Androidmanifest.xml│ ├─ build.gradle│ └─ proguard-rules.pro├─ build.gradle└─ pengaturan.gradle
Perbedaan utama antara struktur baru adalah pemisahan 'set kode sumber' (utama, Androidtest), yang merupakan konsep dari Gradle.
Menggunakan "aplikasi" level tertinggi bermanfaat untuk membedakan aplikasi Anda dari proyek perpustakaan lain yang dirujuk oleh aplikasi Anda (seperti Library-Foobar). Kemudian Settings.Gradle menyimpan indeks aplikasi ke perpustakaan ini, dan app/build.gradle dapat menunjuk ke perpustakaan ini.
Konfigurasi Lulusan
Arsitektur Umum Silakan ikuti Panduan Google tentang Gradle untuk Android;
Tugas kecil (skrip), Anda dapat menggunakan Gradle untuk membuat tugas kecil alih -alih shell, python, atau perl, dll. Untuk detailnya, silakan merujuk ke dokumentasi Gradle;
kata sandi. Di aplikasi Anda build.gradle Anda perlu mendefinisikan penandatanganan Configs untuk kompilasi penerbitan. Dengan rincian sebagai berikut:
Jangan menulis seperti berikut, itu akan muncul di sistem kontrol versi Anda:
SigningConfigs {rilis {storeFile file ("myapp.keystore") storePassword "password123" keyalias "theKey" keypassword "password789"}}Sebaliknya, Anda harus membuat file gradle.properties yang tidak akan ditambahkan ke sistem kontrol versi.
Keystore_password = password123key_password = password789
File ini akan diimpor secara otomatis oleh Gradle, sehingga Anda dapat menggunakannya di build.gradle seperti ini:
SigningConfigs {rilis {coba {storeFile file ("myapp.keystore") storepasswordkeystore_password keyalias "theKey" keypasswordkey_password} catch (ex) {lempar}}}}}}}}}}}}}} {}} {} {} {}} {}} {} {} {} {} {} {pass,(Jika menggunakan Maven, silakan merujuk ke dokumen asli)
Perpustakaan
Jackson adalah perpustakaan Java yang dapat mengonversi objek dan data JSON satu sama lain. GSON juga merupakan pilihan yang sama baiknya. Namun, kami pikir JSCKSON lebih baik karena mendukung berbagai cara untuk menangani JSON: streaming, model memori pohon dan mengendarai pengikatan data JSON-POJO. Tapi ingat, Jackson lebih besar dari GSON, jadi Anda harus mempertimbangkannya sesuka Anda, jika Anda ingin menghindari batas metode 65K, yang terbaik adalah menggunakan GSON. Opsi Lain: Json-Smart dan Boon Json
Jaringan, cache, dan gambar. Gunakan voli atau retrofit. Voli juga dapat digunakan untuk memuat dan menyimpan gambar. Jika Anda memilih Retrofit, Anda dapat menggunakan Picasso untuk memuat dan menangani gambar. Kemudian gunakan OKHTTP untuk melakukan permintaan HTTP yang valid. Ketiga jenis ini: Retrofit, Picasso dan Okhttp semuanya berasal dari perusahaan yang sama, sehingga mereka saling melengkapi. OKHTTP dapat digunakan untuk terhubung ke voli.
RXJAVA adalah perpustakaan pemrograman yang responsif, dengan kata lain, menangani peristiwa asinkron. (Untuk detailnya, silakan merujuk ke dokumen asli)
Retrolambda adalah perpustakaan Java yang membantu Anda menggunakan ekspresi Lambda di Android atau platform lain sebelum JDK8. (Untuk detailnya, silakan merujuk ke dokumen asli)
Akhirnya, ingat batasan metode DEX dan jangan gunakan terlalu banyak perpustakaan. (Android applications, when packaged into dex files, have a maximum limit: 65535 reference methods [1][2][3]. If you exceed the limit, a serious error will occur. Therefore, don't use just too many libraries, use the dex-method-counts tool to decide which classes to use to keep within the limit, especially avoid using the Guava library, because it contains more than 13k methods)
Aktivitas dan fragmen
Fragmen harus menjadi opsi default untuk antarmuka UI Deployment Android Anda. Fragmen dapat digunakan kembali dalam aplikasi Anda. Kami merekomendasikan menggunakan fragmen alih -alih aktivitas untuk menggambar antarmuka berdasarkan poin -poin berikut:
Struktur Paket Java
Struktur Java dalam aplikasi Android dekat dengan struktur MVC (model-view-controller). Di Android, fragmen dan aktivitas sebenarnya adalah kelas pengontrol. Dari perspektif lain, mereka adalah bagian dari interaksi pengguna, yaitu, mereka termasuk kelas tampilan.
Oleh karena itu, sulit bagi kita untuk membedakan secara ketat apakah suatu fragmen (atau aktivitas) adalah pengontrol atau pandangan. Jadi dari perspektif paket Java, kami sebaiknya menempatkan fragmen ke dalam paket fragmen mereka sendiri, dan kemudian aktivitas tersebut ada dalam paket paling canggih (ikuti saran yang diletakkan di atas). Tentu saja, jika Anda ingin memiliki 2 aktivitas atau lebih, maka Anda membuat paket aktivitas.
Dengan cara ini, seluruh struktur terlihat seperti struktur MVC yang khas. Paket model berisi POJOS, yang digunakan untuk mengonversi data JSON yang diperoleh oleh antarmuka API, dan paket tampilan berisi tampilan, pemberitahuan, tampilan batang tindakan, widget, dll. Adaptor adalah lapisan perantara yang terletak di antara data dan tampilan. Namun, mereka biasanya perlu mengeluarkan tampilan tampilan melalui getView (), sehingga Anda dapat menempatkan adaptor di lokasi subpackage dari paket tampilan.
Beberapa kelas pengontrol tingkat aplikasi yang hanya dimiliki oleh sistem Android harus ditempatkan dalam paket manajer. Berbagai kelas pemrosesan data, seperti dateutils, dapat ditempatkan di paket utils. Kelas yang berinteraksi dengan server latar belakang harus ditempatkan di paket jaringan.
Singkatnya, arsitektur keseluruhan dari berinteraksi dengan server hingga berinteraksi dengan pengguna dapat dirancang sebagai berikut:
com.futurice.project ├─ Jaringan ├─ Model ├─ Manajer ├─ Util ├─ Fragmen ├─ pandangan ├─ Adaptor ├─ ActionBar ├─ widget ├─ Pemberitahuan
Penamaan file sumber daya
Ikuti konvensi awalan, mirip dengan type_foo_bar.xml, seperti: fragment_contact_details.xml, view_primary_button.xml, aktivitas_main.xml.
Mengatur file tata letak
Jika Anda tidak tahu cara menormalkan file XML tata letak, Anda dapat merujuk ke konvensi berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <linearlayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" andtth: andty: oolpparp:/schemas.android.com/tools "andtth: andth: andth: oolp: ooltp:/schemas.android.com/tools" andte "dan http: android: layout_height = "match_parent" android: layout_height = "match_parent" android: orientasi = "vertikal"> <textView android: id = "@+id/name" android: layout_width = "match_parent" android: layout_height = "wappontent" android: android: android: lapeout "tata letak =" android: text = "@string/name" style = "@style/fancyText"/> <include tata letak = "@tata letak/reusable_part"/> </linearlayout>