Pengembangan perangkat lunak Android

**Android Software Development** adalah proses pembuatan aplikasi di mana aplikasi dibuat untuk perangkat yang menjalankan sistem operasi Android . Google menyatakan bahwa  “Aplikasi android dapat ditulis menggunakan bahasa pemrograman Kotlin, Java, dan C++” menggunakan Android Software Development Kit (SDK), sementara menggunakan bahasa lain juga dimungkinkan. Untuk bahasa pemrograman yang bukan JVM seperti Go, JavaScript, C, C++, atau Assembly, memerlukan bantuan kode dari bahasa JVM, yang mungkin disediakan oleh tools, dengan kemungkinan API terbatas.  Beberapa bahasa dan tools pemrograman memungkinkan dukungan aplikasi lintas platform (Seperti IOS dan Android). Third-party tools, lingkungan pengembangan, dan dukungan bahasa juga terus berkembang sejak SDK awal dirilis tahun 2008. Mekanisme distribusi aplikasi Android yang resmi untuk pengguna akhir adalah Google Play. Itu juga memungkinkan merilis aplikasi secara bertahap, serta distribusi dari versi aplikasi pra-rilis ke penguji.

## Alat Pengembangan Resmi

### Android SDK
Perlengkapan pengembangan perangkat lunak Android (SDK) mencakup seperangkat alat pengembangan yang komprehensif. Ini termasuk debugger, pustaka, sebuah emulator handset berdasarkan QEMU, dokumentasi, kode sampel, dan tutorial. Platform pengembangan yang didukung saat ini mencakup komputer yang menjalankan Linux (Distribusi Linux desktop modern apa pun), Mac OS X 10.5.8 atau yang lebih baru, dan Windows 7 atau yang lebih baru. Pada Maret 2015, SDK tidak tersedia di Android itu sendiri, tetapi pengembangan perangkat lunak dapat dilakukan dengan menggunakan aplikasi Android khusus.

Hingga sekitar akhir tahun 2014, lingkungan pengembangan terpadu(IDE) yang didukung secara resmi adalah Eclipse menggunakan Plugin Android Development Tools (ADT), meskipun IntelliJ IDEA IDE (semua edisi) sepenuhnya mendukung pengembangan Android di luar kotak, dan NetBeans IDE juga mendukung pengembangan Android melalui plugin.  Mulai 2015, Android Studio, dibuat oleh Google dan diberdayakan oleh IntelliJ, adalah IDE resmi; Namun, pengembang bebas menggunakan yang lain, tetapi Google menjelaskan bahwa ADT secara resmi tidak digunakan lagi sejak akhir 2015 untuk fokus pada Android Studio sebagai Android IDE resmi. Selain itu, pengembang dapat menggunakan editor teks apa pun untuk mengedit file Java dan XML, kemudian menggunakan alat baris perintah (diperlukan Java Development Kit dan  Apache Ant) untuk membuat, membangun, dan men-debug aplikasi Android serta mengontrol perangkat Android yang terpasang (misalnya, memicu reboot, menginstal paket perangkat lunak dari jarak jauh).

Penyempurnaan pada SDK Android berjalan seiring dengan pengembangan platform Android secara keseluruhan. SDK juga mendukung versi lama dari platform Android jika pengembang ingin menargetkan aplikasi mereka pada perangkat yang lebih lama. Alat pengembangan adalah komponen yang dapat diunduh, jadi setelah seseorang mengunduh versi dan platform terbaru, platform dan alat yang lebih lama juga dapat diunduh untuk pengujian kompatibilitas.

Aplikasi Android dikemas dalam format .apk dan disimpan di bawah `/data/app` folder di OS Android (folder hanya dapat diakses oleh pengguna root untuk alasan keamanan). Paket APK berisi file .dex (file kode byte terkompilasi yang disebut dapat dieksekusi Dalvik), file sumber daya, dll.
### Alat Platform Android SDK
Alat Platform Android SDK adalah subset dari SDK lengkap yang dapat diunduh secara terpisah, yang terdiri dari alat baris perintah seperti `adb` and `fastboot`.

#### Android Debug Bridge
Android Debug Bridge (ADB) adalah alat untuk menjalankan perintah pada perangkat Android yang terhubung. Daemon `adbd` berjalan di perangkat, dan klien `adb` memulai server latar belakang ke perintah multipleks yang dikirim ke perangkat. Selain antarmuka baris perintah, banyak antarmuka pengguna grafis yang ada untuk mengontrol adb.

Format untuk mengeluarkan perintah biasanya:

 adb [-d|-e|-s ] 
 Dimana -d adalah opsi untuk menentukan satu perangkat yang terhubung ke USB,
        -e untuk satu-satunya emulator Android yang berjalan di komputer,
        -s untuk menentukan perangkat yang tersambung ke USB dengan nomor seri uniknya.
 Jika hanya ada satu perangkat yang terpasang atau menjalankan emulator, opsi ini tidak diperlukan.

Misalnya, aplikasi Android dapat disimpan dengan perintah `[[backup]]` ke sebuah file, yang namanya `backup.ab` secara default.

Dalam masalah keamanan yang dilaporkan pada Maret 2011, ADB ditargetkan sebagai vektor untuk mencoba memasang rootkit pada ponsel yang terhubung menggunakan "serangan kehabisan sumber daya".

#### Fastboot

Fastboot adalah protokol  dan memiliki alat dengan nama yang sama yang disertakan dengan paket Android SDK yang digunakan terutama untuk memodifikasi sistem file flash melalui koneksi USB dari komputer host. Ini mengharuskan perangkat dimulai dalam boot loader atau mode Pemuat Program Sekunder, di mana hanya inisialisasi perangkat keras paling dasar yang dilakukan. Setelah mengaktifkan protokol pada perangkat itu sendiri, ia akan menerima sekumpulan perintah tertentu yang dikirim kepadanya melalui USB menggunakan baris perintah. Beberapa perintah fastboot yang paling umum digunakan antara lain:

* flash - menulis ulang partisi dengan image biner yang disimpan di komputer host.
* erase - menghapus partisi tertentu.
* reboot - me-reboot perangkat ke sistem operasi utama, partisi pemulihan sistem, atau kembali ke boot loadernya.
* devices - menampilkan daftar semua perangkat (dengan nomor seri) yang terhubung ke komputer host.
* format - memformat partisi tertentu; sistem file partisi harus dikenali oleh perangkat.

### Android NDK

Kode ditulis dalam C/C++ dapat dikomplikasi kedalam ARM, atau x86 kode native  (atau varian 64-bit nya). NDK menggunakan compiler Clang untuk mengkompilasi C/C++. GCC disertakan hingga NDK r17, tetapi dihapus pada r18 pada 2018.

Native libraries bisa dipanggil dari kode Java yang berjalan dibawah Android Runtime menggunakan `System.loadLibrary`, bagian dari kelas standar Android Java.

Alat untuk Command-line dapat dikompilasi dengan NDK dan diinstal menggunakan ADB.

Android menggunakan Bionic sebagai C library, dan LLVM libc sebagai *[[Pustaka dasar C++|C++ Standard Library]]*. NDK juga menyertakan beberapa API lainnya: zlib compression, OpenGL ES atau Vulkan graphics, OpenSL ES audio, dan beberapa API khusus android untuk hal-hal seperti logging, akses ke kamera, dan jaringan neural yang dipercepat.

NDK menyertakan dukungan untuk CMake dan build-ndk-nya sendiri (berdasarkan GNU Make). Android Studio mendukung untuk menjalankan salah satu dari ini dari Gradle. Alat pihak ketiga lainnya memungkinkan pengintegrasian NDK ke dalam Eclipse dan Visual Studio.

Untuk pembuatan profil CPU, NDK juga menyertakan simpleperf yang mirip dengan alat kinerja Linux, tetapi dengan dukungan yang lebih baik untuk Android dan khususnya untuk campuran Java / C ++ stacks.

### Android Open Accessory Development Kit
Platform Android 3.1 (juga di-backport ke Android 2.3.4) memperkenalkan Android Open Accessory support, yang memungkinkan perangkat keras USB eksternal (aksesori USB Android) untuk berinteraksi dengan perangkat yang diberdayakan Android dalam mode "aksesori" khusus. Saat perangkat yang diberdayakan Android dalam mode aksesori, aksesori yang terhubung bertindak sebagai host USB (memberi daya pada bus dan menyebutkan perangkat) dan perangkat yang diberdayakan Android bertindak sebagai perangkat USB. Aksesori USB Android dirancang khusus untuk dipasang ke perangkat yang diberdayakan Android dan mematuhi protokol sederhana (protokol aksesori Android) yang memungkinkan mereka mendeteksi perangkat yang diberdayakan Android yang mendukung mode aksesori.

## Pengembangan Perangkat Keras Eksternal
Alat pengembangan yang dimaksudkan untuk membantu perangkat Android berinteraksi dengan elektronik eksternal termasuk IOIO, Perlengkapan Pengembangan Aksesori Terbuka Android, Microbridge, Triggertrap, dll.

## Tantangan Pengembang Android

Tantangan Pengembang Android atau *Android Developer Challenge* adalah kompetisi untuk menemukan aplikasi paling inovatif untuk Android. Google menawarkan hadiah sebesar 10 juta dolar AS, didistribusikan antara ADC I dan ADC II. ADC I menerima pengajuan dari 2 Januari hingga 14 April 2008. 50 entri paling menjanjikan, diumumkan pada 12 Mei 2008, masing-masing menerima penghargaan $ 25.000 untuk pengembangan lebih lanjut. Itu berakhir pada awal September dengan pengumuman sepuluh tim yang masing-masing menerima $275.000, dan sepuluh tim yang masing-masing menerima $100.000.

ADC II diumumkan pada 27 Mei 2009. Putaran pertama ADC II ditutup pada 6 Oktober 2009. Pemenang putaran pertama ADC II yang terdiri dari 200 aplikasi teratas diumumkan pada 5 November 2009. Voting untuk putaran kedua juga dibuka di hari yang sama dan berakhir pada 25 November. Google mengumumkan pemenang teratas ADC II pada 30 November, dengan SweetDreams, What the Doodle!? dan WaveSecure dinominasikan sebagai pemenang keseluruhan dari tantangan tersebut.

## Distribusi Berbasis Komunitas
Ada komunitas penggemar open-source yang membangun dan berbagi distribusi berbasis Android (yaitu firmware) dengan sejumlah penyesuaian dan fitur tambahan, seperti dukungan FLAC lossless audio dan kemampuan untuk menyimpan aplikasi yang diunduh pada kartu microSD. Ini biasanya melibatkan perangkat rooting. Rooting memungkinkan pengguna mengakses root ke sistem operasi, memungkinkan kontrol penuh atas ponsel. Rooting juga memiliki beberapa kelemahan, termasuk peningkatan risiko peretasan, kemungkinan besar terjadinya bricking, kehilangan garansi, peningkatan risiko serangan virus, dan lain lain. Anda juga dapat menginstal firmware khusus, meskipun boot loader perangkat juga harus dibuka kuncinya. Firmware kustom memungkinkan pengguna ponsel lama untuk menggunakan aplikasi yang hanya tersedia pada rilis yang lebih baru.

Paket firmware tersebut sering diperbarui, menggabungkan elemen fungsionalitas Android yang belum dirilis secara resmi dalam firmware tetapi disetujui operator, dan cenderung memiliki lebih sedikit batasan. CyanogenMod dan OMFGB adalah contoh firmware tersebut.

Pada tanggal 24 September 2009, Google mengeluarkan surat cease dan desist  kepada modder Cyanogen, mengutip masalah dengan pendistribusian ulang aplikasi closed-source Google dalam firmware khusus. Meskipun sebagian besar OS Android adalah open source, ponsel hadir dengan aplikasi closed-source Google untuk fungsionalitas seperti Google Play dan navigasi GPS. Google telah menegaskan bahwa aplikasi ini hanya dapat diberikan melalui saluran distribusi yang disetujui oleh distributor berlisensi. Cyanogen mematuhi lisensi Google dan terus mendistribusikan modnya tanpa perangkat lunak berpemilik. Ini menyediakan metode untuk membuat cadangan aplikasi Google berlisensi selama proses penginstalan mod dan memulihkannya saat proses selesai.

## Standar Java

Hambatan pengembangan termasuk fakta bahwa Android tidak menggunakan standar Java yang sudah mapan, yaitu Java SE dan ME. Ini mencegah kompatibilitas antara aplikasi Java yang ditulis untuk platform tersebut dan yang ditulis untuk platform Android. Android menggunakan kembali sintaks dan semantik bahasa Java, tetapi tidak menyediakan pustaka kelas lengkap dan API yang dibundel dengan Java SE atau ME. Namun, ada beberapa alat di pasar dari perusahaan seperti Myriad Group dan UpOnTek yang menyediakan layanan konversi Java ME ke Android.

Android menyediakan kelas GUI-nya sendiri, dan tidak menyediakan Java AWT, Swing, atau JavaFX. Itu tidak mendukung Java Beans API penuh.

## Sejarah dan Pangsa Pasar
Android dibuat oleh Open Handset Alliance, yang dipimpin oleh Google. Feedback awal tentang pengembangan aplikasi untuk platform Android beragam. Masalah yang dikutip termasuk bug, kurangnya dokumentasi, infrastruktur QA yang tidak memadai, dan tidak ada sistem pelacakan masalah publik. (Google mengumumkan pelacak masalah pada 18 Januari 2008.).  Pada bulan Desember 2007, pendiri startup seluler MergeLab Adam MacBeth menyatakan, "Fungsionalitas tidak ada, tidak terdokumentasi dengan baik, atau tidak berfungsi. Jelas belum siap untuk waktu prime." Meskipun demikian, aplikasi bertarget Android mulai muncul seminggu setelah platform tersebut diumumkan. Aplikasi pertama yang tersedia untuk umum adalah permainan Snake.

Rilis pratinjau SDK Android dirilis pada 12 November 2007. Pada tanggal 15 Juli 2008, Android Developer Challenge Team secara tidak sengaja mengirim email ke semua peserta Android Developer Challenge yang mengumumkan bahwa rilis baru SDK telah tersedia di area unduhan "pribadi". Email tersebut ditujukan untuk pemenang putaran pertama Tantangan Pengembang Android. Pengungkapan bahwa Google memasok rilis SDK baru ke beberapa pengembang dan bukan yang lain (dan menjaga kerahasiaan pengaturan ini) menyebabkan frustrasi yang dilaporkan secara luas dalam komunitas pengembang Android pada saat itu.

Pada 18 Agustus 2008, Android 0.9 SDK beta dirilis. Rilis ini menyediakan API yang diperbarui dan diperpanjang, alat pengembangan yang ditingkatkan, dan desain yang diperbarui untuk layar beranda. Instruksi rinci untuk peningkatan tersedia bagi mereka yang sudah bekerja dengan rilis sebelumnya. Pada tanggal 23 September 2008, Android 1.0 SDK (Rilis 1) dirilis. Menurut catatan rilis, itu termasuk "terutama perbaikan bug, meskipun beberapa fitur yang lebih kecil telah ditambahkan." Ini juga termasuk beberapa perubahan API dari versi 0.9. Beberapa versi telah dirilis sejak dikembangkan.

Pada 5 Desember 2008, Google mengumumkan  Android Dev Phone pertama, perangkat yang tidak terkunci SIM dan perangkat kerasnya dirancang untuk pengembang tingkat lanjut. Itu adalah versi modifikasi dari ponsel HTC Dream. Meskipun pengembang dapat menggunakan perangkat konsumen biasa untuk menguji dan menggunakan aplikasi mereka, beberapa pengembang dapat memilih perangkat khusus yang tidak terkunci atau tanpa kontrak.

Pada Juli 2013, lebih dari satu juta aplikasi telah dikembangkan untuk Android, dengan lebih dari 25 miliar unduhan.  Sebuah penelitian bulan Juni 2011 menunjukkan bahwa lebih dari 67% pengembang seluler menggunakan platform tersebut, pada saat publikasi.. Pengiriman smartphone Android diperkirakan melebihi 1,2 miliar unit pada tahun 2018 dengan 85% pangsa pasar.

## Lihat pula

* Android Studio
* List of free and open source Android applications
* Rooting (Android OS)

## Referensi

## Pranala luar

* Android Developers
* Building for devices at source.android.com 
* Android Debug Bridge - developer.android.com
* Lenovo a6000