Membangun Aplikasi

Sebagai pengganti (atau selain) menyertakan APK biner dari sumber eksternal dalam repositori, Anda dapat membangunnya langsung dari kode sumber.

Dengan metode ini, memungkinkan untuk memverifikasi bahwa aplikasi dibangun dengan benar, sesuai dengan kode sumber, dan hanya berisi perangkat lunak bebas. Sayangnya, dalam dunia Android, hal ini tampaknya umum terjadi di mana aplikasi yang disediakan sebagai APK biner mengklaim sebagai Perangkat Lunak Bebas, padahal kenyataannya satu atau lebih dari hal berikut benar:

  1. Kode sumber (baik untuk versi tertentu atau bahkan seluruh versi) tidak tersedia atau tidak lengkap.
  2. Kode sumber tidak mampu menghasilkan biner sebenarnya yang disediakan.
  3. ‘Kode sumber’ berisi berkas biner dengan asal usul yang tidak diketahui, atau dengan lisensi proprietari.

Untuk alasan ini, aplikasi yang dibangun dari sumber merupakan metode yang disukai untuk repositori utama F-Droid, meskipun terkadang, karena alasan teknis atau historis, kebijakan ini dapat dikecualikan.

Saat membangun aplikasi dari kode sumber, perlu diperhatikan bahwa Anda akan menandatanganinya sendiri (semua berkas APK harus ditandatangani agar dapat diinstal di Android) menggunakan kunci Anda sendiri. Jika suatu aplikasi telah terinstal di perangkat, tidak dimungkinkan untuk memperbaruinya dengan versi baru yang ditandatangani dengan kunci berbeda tanpa terlebih dahulu mencopot instalasi versi aslinya. Hal ini dapat menjadi ketidaknyamanan bagi pengguna karena proses pencopotan akan menghapus semua data yang terkait dengan instalasi sebelumnya.

Proses pengelolaan repositori untuk aplikasi yang dibangun dari sumber sangat mirip dengan yang dijelaskan di bab Repositori Biner Sederhana, kecuali kali ini Anda perlu:

  1. Menyertakan entri Build dalam berkas metadata.
  2. Menjalankan fdroid build untuk membangun aplikasi apa pun yang belum dibangun.
  3. Menjalankan fdroid publish untuk menyelesaikan proses pengemasan dan menandatangani semua APK yang telah dibangun.

Direktori data aplikasi, alias fdroiddata

Untuk melakukan apa pun, Anda memerlukan setidaknya satu direktori data repositori. Dari direktori inilah Anda menjalankan perintah fdroid untuk melakukan semua tugas manajemen repositori. Anda dapat membuat direktori baru atau menyalin data yang digunakan oleh repositori utama F-Droid.

git clone https://gitlab.com/fdroid/fdroiddata.git

Terlepas dari tujuan penggunaan alat ini, Anda selalu perlu mengatur beberapa detail konfigurasi dasar. Ini dilakukan dengan membuat berkas bernama config.yml di direktori data. Sebaiknya lakukan dengan menyalin berkas contoh (./examples/config.yml) dari proyek fdroidserver ke direktori data Anda, lalu mengeditnya sesuai petunjuk di dalamnya.

Setelah dikonfigurasi dengan cara ini, seluruh fungsionalitas alat dapat diakses dengan menjalankan perintah fdroid. Jalankan tanpa parameter apa pun untuk melihat daftar subperintah yang tersedia.

Anda dapat menambahkan --help di belakang perintah apa pun untuk melihat daftar opsi tambahan yang tersedia untuk perintah tersebut.

fdroid update --help

Lebih lanjut tentang fdroid build

Ketika dijalankan tanpa parameter, fdroid build akan membangun semua versi aplikasi yang belum tersedia di direktori repo (atau lebih tepatnya, di direktori unsigned). Ada berbagai hal lain yang dapat dilakukan. Seperti semua alat lainnya, opsi --help sangat berguna; beberapa contoh beserta penjelasan penggunaan umum dijelaskan berikut ini:

Untuk membangun satu versi dari satu aplikasi, Anda dapat menjalankan perintah berikut:

fdroid build org.fdroid.fdroid:16

Perintah ini berusaha membangun versi dengan kode 16 (yang merupakan versi 0.25) dari klien F-Droid. Banyak alat mengenali argumen sebagai paket, sehingga aktivitasnya dapat dibatasi hanya pada beberapa paket tertentu.

Jika pembangunan di atas berhasil, dua berkas akan ditempatkan di direktori unsigned:

org.fdroid.fdroid_16.apk
org.fdroid.fdroid_16_src.tar.gz

The first is the (unsigned) APK. You could sign this with a debug key and push it direct to your device or an emulator for testing. The second is a source tarball containing exactly the source that was used to generate the binary.

Jika Anda bermaksud memublikasikan berkas-berkas ini, Anda dapat menjalankan:

fdroid publish

The source tarball would move to the repo directory (which is the directory you would push to your web server). A signed and zipaligned version of the APK would also appear there, and both files would be removed from the unsigned directory.

Jika Anda membangun hanya untuk tujuan pengujian dan tidak berniat menyalurkan hasilnya ke repositori, setidaknya untuk saat ini, opsi --test dapat digunakan untuk mengarahkan keluaran ke direktori tmp alih-alih unsigned. Efek serupa dapat dicapai dengan menghapus berkas keluarannya secara manual dari unsigned setelah pembangunan, meskipun ini berisiko terlupa.

Along similar lines (and only in conjunction with --test, you can use --force to force a build of a Disabled application, where normally it would be completely ignored. Similarly a version that was found to contain ELFs or known Non-Free libraries can be forced to build. See also — scanignore and scandelete in the Builds section.

If the build was unsuccessful, you can find out why by looking at the output in the logs/ directory. If that isn’t illuminating, try building the app the regular way, step by step: android update project, ndk-build, ant debug.

Perlu diketahui bahwa repositori kode sumber sering kali berisi pustaka yang sudah dibangun sebelumnya. Jika aplikasi sedang dipertimbangkan untuk repositori utama F-Droid, penting untuk memastikan bahwa semua pustaka tersebut dibangun melalui metadata atau oleh pihak ketiga yang tepercaya.

Menjalankan fdroid build di sumber aplikasi Anda

Opsi lain untuk menggunakan fdroid build adalah dengan menggunakan berkas metadata yang disertakan langsung di dalam sumber aplikasi itu sendiri, bukan di folder metadata/ yang berisi banyak aplikasi lain. Berkas metadata .fdroid.yml harus ditempatkan di root repositori sumber Anda.

Setelah pengaturan tersebut selesai, Anda dapat membangun versi terbaru aplikasi menggunakan seluruh sistem F-Droid dengan menjalankan:

fdroid build

Jika Anda ingin membangun setiap versi aplikasi, gunakan opsi --all.

Instalasi Langsung

Anda juga dapat membangun dan langsung menginstal ke perangkat atau emulator yang terhubung menggunakan perintah fdroid install. Jika dilakukan tanpa menyertakan argumen paket, semua versi terbaru yang telah dibangun dan ditandatangani dari setiap paket akan dipasang. Dalam kebanyakan kasus, ini bukan yang Anda inginkan, sehingga proses akan dihentikan. Namun, Anda dapat memaksa proses ini jika benar-benar diinginkan dengan menggunakan --all. Perlu diketahui bahwa saat ini tidak ada pemeriksaan keamanan dalam mode ini—jika berkas di direktori keluaran yang telah ditandatangani dimodifikasi, Anda tidak akan mendapat pemberitahuan.