Informasi yang digunakan oleh fdroid update untuk menyusun indeks publik
berasal dari beberapa sumber:
- Berkas APK, media, dan sejenisnya di subdirektori repo.
- Berkas “metadata” per paket di subdirektori metadata.
- teks dan grafik yang dapat dilokalkan di subdirektori metadata.
- teks dan grafik yang dapat dilokalisasi tertanam dalam kode sumber aplikasi
File metadata ini adalah file teks sederhana yang mudah diedit, selalu diberi nama sesuai “nama paket” dengan ekstensi tipe file yang ditambahkan. Tersedia berbagai macam field untuk menambahkan informasi guna mendeskripsikan paket dan/atau aplikasi. Untuk semua field seperti AuthorName yang berlaku untuk semua rilis suatu paket/aplikasi, field tersebut menggunakan CamelCase yang diawali huruf kapital. Semua field lainnya menggunakan camelCase yang diawali huruf kecil, termasuk field per-build, field yang dilokalisasi, dan sebagainya.
Note that although the metadata files are designed to be easily read and written by humans, they are also processed and written by various scripts. They can be automatically cleaned up when necessary, eg. comments are removed. The structure will be preserved correctly, although the order of fields will be standardised. In fact, you can standardise all packages in a repository using a single command, without changing the functional content, by running:
fdroid rewritemeta
Atau jalankan hanya pada satu aplikasi tertentu:
fdroid rewritemeta org.adaway
Format Markup dan Data
F-Droid metadata files are written in YAML and have a file extension
.yml. The top-most data structure is a “map” or “dictionary”, made up of
key/value pairs. All keys are strings. There are some internal data types
used for values:
TYPE_BOOL- Nilainya berupatrueataufalse.TYPE_BUILD- Daftar entri build, masing-masing berupa pasangan key/value.TYPE_INT- Bilangan bulat dalam format desimal.TYPE_LIST- Daftar string.TYPE_MULTILINE- Blok teks dengan banyak baris.TYPE_SCRIPT- String atau daftar string yang akan dijalankan sebagai skrip bash.TYPE_STRING- Sebuah string.TYPE_STRINGMAP- Sebuah peta dari peta, kunci bagian dalam adalah lokal BCP 47 dan nilainya adalah teks yang dapat dibaca manusia.
The canonical format is YAML 1.2. The
process of reading metadata files is more tolerant, and will do some
automatic type conversions when that can provide a reliable
transformation. fdroid rewritemeta will output YAML 1.2, so it will not
preserve the original values as written, if they have been converted.
Bidang
Bagian-bagian berikut menjelaskan bidang-bidang yang dikenali dalam berkas ini.
- Categories
- AuthorName
- AuthorEmail
- AuthorWebSite
- License
- AutoName
- Name
- WebSite
- SourceCode
- IssueTracker
- Translation
- Changelog
- Donate
- Liberapay
- OpenCollective
- Bitcoin
- Litecoin
- Summary
- Description
- MaintainerNotes
- RepoType
- Repo
- Binaries
- Builds
- Builds.versionName
- Builds.versionCode
- Builds.commit
- Builds.disable
- Builds.subdir
- Builds.submodules
- Builds.sudo
- Builds.timeout
- Builds.init
- Builds.oldsdkloc
- Builds.target
- Builds.androidupdate
- Builds.encoding
- Builds.forceversion
- Builds.forcevercode
- Builds.binary
- Builds.rm
- Builds.extlibs
- Builds.srclibs
- Builds.patch
- Builds.prebuild
- Builds.scanignore
- Builds.scandelete
- Builds.build
- Builds.buildjni
- Builds.ndk
- Builds.gradle
- Builds.maven
- Builds.preassemble
- Builds.gradleprops
- Builds.antcommands
- Builds.output
- Builds.postbuild
- Builds.novcheck
- Builds.antifeatures
- AllowedAPKSigningKeys
- AntiFeatures
- Disabled
- RequiresRoot
- ArchivePolicy
- AutoUpdateMode
- UpdateCheckMode
- UpdateCheckIgnore
- VercodeOperation
- UpdateCheckName
- UpdateCheckData
- CurrentVersion
- CurrentVersionCode
- NoSourceSince
Categories
Any number of categories for the application to be placed in. There is no fixed list of categories - both the client and the web site will automatically show any categories that exist in any applications. However, if your metadata is intended for the main F-Droid repository, you should use one of the existing categories defined in fdroiddata or discuss the proposal to add a new one. Categories must be a list of items, even if there is just one.
AuthorName
The name of the author, either full, abbreviated or pseudonym. If present, it should represent the name(s) as published by upstream, e.g. in their copyright or authors file. This can be omitted (or left blank). The same AuthorName should be used for apps from the same author so that other apps from the same author can be found.
AuthorEmail
Alamat email penulis (atau para penulis). Dapat dihapus (atau dikosongkan).
Peringatan: bidang ini akan menimpa semua entri AuthorEmail yang ditetapkan di kode sumber aplikasi.
AuthorWebSite
URL situs web penulis (atau para penulis). Dapat dihapus (atau dikosongkan).
Peringatan: bidang ini akan menimpa semua entri AuthorWebSite yang ditetapkan di kode sumber aplikasi.
License
The overall license for the application in terms of the binary that the user can install. Values should correspond to short identifiers of the SPDX license list. There can only be one license listed here. If there are multiple licenses that apply to the source code, then this field should contain the least restrictive license that the whole app can be used under. When multiple licenses are combined, that usually means the most restrictive wins.
Bidang ini tidak dapat mencerminkan kerumitan lisensi yang berlaku untuk bagian-bagian tertentu dari aplikasi atau aplikasi yang dirilis sepenuhnya di bawah lebih dari satu lisensi.
AutoName
Nama aplikasi yang diambil sebaik mungkin dari kode sumber. Hal ini
dilakukan agar fdroid checkupdates dapat menempatkan nama yang dikenal di
deskripsi commit yang dibuat ketika pembaruan aplikasi baru ditemukan. Entri
AutoName dihasilkan secara otomatis ketika fdroid checkupdates
dijalankan, dan hanya digunakan untuk pesan commit yang dibuat oleh fdroid
checkupdates.
Name
Judul aplikasi, dengan frasa deskriptif opsional. Field ini akan mengesampingkan semua sumber nama aplikasi lainnya, termasuk yang diambil dari APK dan dari metadata yang dilokalisasi.
Catatan: Jangan gunakan ini. Metadata yang dilokalisasi dalam kode sumber aplikasi sebaiknya digunakan.
batas 50 karakter
Peringatan: bidang ini akan menimpa semua entri Name/title yang ditetapkan di kode sumber aplikasi.
WebSite
The URL for the application’s web site. If there is no relevant web site, this can be omitted (or left blank). Don’t use the source code url as website.
SourceCode
URL untuk melihat atau memperoleh kode sumber aplikasi. Bidang ini sebaiknya ditujukan untuk akses manusia, sedangkan kode sumber yang dapat dibaca mesin dicakup dalam bidang Repo.
IssueTracker
The URL for the application’s issue tracker. Optional, since not all applications have one.
Translation
URL untuk portal atau panduan penerjemahan aplikasi. Opsional, karena tidak semua aplikasi memilikinya.
Changelog
URL untuk daftar perubahan (changelog) aplikasi. Opsional, karena tidak semua aplikasi memilikinya.
Donate
URL untuk melakukan donasi ke proyek. Sebaiknya merujuk ke halaman donasi resmi proyek jika tersedia.
Anda dapat menggunakan tautan PayPal langsung di sini jika hanya itu yang tersedia. Namun, perlu diingat bahwa pengembang mungkin tidak mengetahui tautan langsung tersebut. Jika mereka kemudian mengganti akun PayPal atau format tautan PayPal berubah, hal ini dapat menyebabkan masalah. Sebaiknya selalu gunakan tautan yang secara eksplisit dipublikasikan oleh pengembang, bukan tautan hasil “kode tombol” otomatis.
Liberapay
The project’s Liberapay (https://liberapay.com) user or group name, if it has one. This should be an alphanumeric name, such that (for example) https://liberapay.com/xxxxx which redirects to your account page. This used to be LiberapayID, which was a numeric ID.
OpenCollective
The project’s Open Collective (https://opencollective.com) user or group name, if it has one. This should be an alphanumeric name, such that (for example) https://opencollective.com/xxxxx redirects to your account page.
Bitcoin
Alamat bitcoin untuk menyumbang ke proyek.
Litecoin
Alamat litecoin untuk menyumbang ke proyek.
Summary
A brief summary of what the application is. The Summary is used in the app list and tile views of the F-Droid client, and as a sub-headline in some other views.
Catatan: Jangan gunakan ini. Metadata yang dilokalisasi dalam kode sumber aplikasi sebaiknya digunakan.
batas 80 karakter
Peringatan: bidang ini akan menimpa semua entri Summary atau “deskripsi singkat” yang ditetapkan di kode sumber aplikasi.
Deskripsi
Deskripsi lengkap tentang aplikasi, yang relevan dengan versi terbaru. Deskripsi ini dapat terdiri atas beberapa baris (sebaiknya tidak lebih dari 80 karakter per baris) dan diakhiri dengan baris yang hanya berisi satu titik (.).
Format deskripsi mengikuti konvensi umum yang digunakan di banyak toko aplikasi:
- Pemformatan dasar HTML dapat digunakan.
- Baris baru akan dipertahankan.
- Tautan ke paket lain di f-droid.org akan ditampilkan sebagai tautan yang dapat diklik di situs web, sedangkan tautan lainnya akan muncul sebagai teks biasa.
Akan sangat membantu untuk mencatat informasi mengenai pembaruan dari versi sebelumnya; apakah aplikasi berisi komponen prebuilt dari pengembang upstream atau apakah elemen Non-Bebas telah dihapus; apakah aplikasi sedang dalam tahap pengembangan cepat atau versi terbarunya tertinggal dari versi rilis publik; apakah aplikasi mendukung beberapa arsitektur, atau apakah ada SDK maksimum yang ditentukan (informasi seperti ini tidak dicatat dalam indeks).
Catatan: Jangan gunakan ini. Metadata yang dilokalisasi dalam kode sumber aplikasi sebaiknya digunakan.
batas 4000 karakter
Peringatan: bidang ini akan menimpa semua entri Description atau “deskripsi lengkap” yang ditetapkan di kode sumber aplikasi.
CatatanPemelihara
Ini adalah bidang multibaris yang menggunakan aturan dan sintaks yang sama dengan deskripsi. Bidang ini digunakan untuk mencatat catatan bagi pemelihara F-Droid guna membantu dalam pemeliharaan dan pembaruan aplikasi di repositori.
JenisRepositori
Jenis repositori — digunakan untuk pembangunan otomatis dari kode sumber. Jika tidak ditentukan, pembangunan otomatis dinonaktifkan untuk aplikasi ini. Nilai yang mungkin adalah:
gitsrclib
Repositori
Lokasi repositori.
Jika RepoType adalah git, maka URL harus bersifat publik,
menggunakan https://, dan tidak memerlukan autentikasi apa pun.
Jika RepoType adalah srclib, maka Anda harus menentukan
nama berkas srclib .yml yang sesuai. Misalnya, jika srclibs/FooBar.yml
ada dan Anda ingin menggunakan srclib tersebut, maka Anda perlu menetapkan
Repo ke FooBar.
Biner
Lokasi biner yang digunakan dalam proses verifikasi.
Jika ditentukan, F-Droid akan memverifikasi berkas APK hasil build dengan
yang telah ditentukan. Anda dapat menggunakan %v dan %c untuk menunjuk
pada nama versi dan kode versi dari build saat ini. Untuk memverifikasi
klien F-Droid sendiri, Anda dapat menggunakan: Binaries:
https://f-droid.org/repo/org.fdroid.fdroid_%c.apk
F-Droid akan menggunakan biner dari pengembang upstream jika verifikasi berhasil.
URL ini harus memiliki versi dan dapat dihitung dari versionName dan versionCode.
Builds
Dapat berisi sejumlah subentri, masing-masing menentukan versi yang akan dibangun secara otomatis dari kode sumber. Misalnya:
Builds:
- versionName: '1.2'
versionCode: 12
commit: v1.2
- versionName: '1.3'
versionCode: 13
commit: v1.3-fdroid
Menentukan untuk membangun versi xxx, yang memiliki kode versi yyy.
Parameter commit menentukan tag, commit, atau nomor revisi yang digunakan untuk membangun versi tersebut dalam repositori sumber.
__Note__: Jangan gunakan nama branch atau nama tag. Hash commit lengkap harus digunakan.
Selain tiga parameter yang selalu diperlukan seperti dijelaskan di atas,
parameter tambahan dapat ditambahkan (dalam format `name: value` )
untuk menerapkan konfigurasi lebih lanjut pada proses build.
Parameter-parameter ini (secara kasar dalam urutan penerapannya) adalah:
disable: <message>-
Disables this build, giving a reason why. (For backwards compatibility, this can also be achieved by starting the commit ID with ‘!’)
Tujuan dari fitur ini adalah untuk memungkinkan rilis yang tidak dapat dibangun (misalnya, sumbernya tidak dipublikasikan) diberi tanda, sehingga skrip tidak menghasilkan pesan berulang tentangnya. (Dan juga untuk mencatat informasi tersebut untuk ditinjau nanti). Jika sebuah APK sudah dibangun, penonaktifan akan menyebabkan APK tersebut dihapus setelah
fdroid updatedijalankan; ini adalah prosedur yang digunakan jika suatu versi harus diganti. subdir: <path>-
Menentukan untuk melakukan build dari subdirektori kode sumber yang telah di-checkout. Ini adalah direktori tempat skrip build dijalankan. Untuk aplikasi Gradle, ini harus berupa path tempat direktori
buildakan dibuat. Untuk aplikasi Flutter, ini harus berupa direktori tempat filepubspec.yamlberada. Root repositori kode sumber digunakan secara default.
Gunakan jika proyek (khusus git) memiliki submodule — ini akan menjalankan perintah git submodule update --init --recursive setelah sumber dikloning. Submodule akan diatur ulang dan dibersihkan seperti repositori aplikasi utama sebelum setiap build.
sudo: xxxx-
Specifies a script to be run using
sudo bash -x -c "xxxx"in the buildserver VM guest. This script is run with full root privileges, but the state will be reset after each build. The vast majority of apps build using the standard Debian/stable base environment. This is useful for setting up the buildserver for complex builds that need very specific things that are not appropriate to install for all builds, or for things that would conflict with other builds. Don’t add commands which don’t need root privileges here. timeout: <seconds>-
Time limit for this build (in seconds). After time is up, buildserver VM is forcefully terminated. The default is 7200 (2 hours); 0 means no limit.
Batasan ini hanya diterapkan dalam mode server, yaitu ketika
fdroid builddijalankan dengan opsi--server. init: xxxx-
Like
prebuild, but runs on the source code BEFORE any other processing takes place.Anda dapat menggunakan
$$SDK$$dan$$NDK$$untuk menggantikan path ke direktori Android SDK dan NDK masing-masing. Variabel per-build berikut juga tersedia:$$VERSION$$,$$VERCODE$$, dan$$COMMIT$$.Ini dijalankan di
subdir:jika disetel.
Lokasi SDK di repositori menggunakan format lama, atau berkas build.xml mengharapkannya dalam format tersebut. Format “baru” adalah sdk.dir, sedangkan format SANGAT LAMA adalah sdk-location. Biasanya, jika Anda menerima pesan seperti “com.android.ant.SetupTask cannot be found” saat mencoba build, cobalah aktifkan opsi ini.
__Note__: Hanya digunakan oleh beberapa aplikasi lama.
Menentukan target SDK tertentu untuk proses kompilasi, menggantikan nilai yang didefinisikan oleh pengembang sumber. Efeknya bervariasi tergantung sistem build yang digunakan — opsi ini saat ini berpengaruh pada proyek Ant, Maven, dan Gradle. Perlu dicatat bahwa ini tidak mengubah target SDK di AndroidManifest.xml, yang menentukan tingkat fitur yang dapat disertakan dalam build.
Dalam kasus proyek Ant, ini memodifikasi _project.properties_ dari aplikasi dan mungkin sub-proyek. Hal ini kemungkinan akan menyebabkan seluruh _build.xml_ ditulis ulang, yang tidak masalah jika itu adalah file Android ‘standar’ atau belum ada, tetapi bukan ide baik jika sudah dikustomisasi secara ekstensif.
__Note__: Hanya digunakan oleh beberapa aplikasi lama.
androidupdate: auto|<path1>[,<path2>,...]
Secara default, android update digunakan dalam build Ant untuk menghasilkan atau memperbarui proyek beserta semua proyek yang dirujuk. Dengan menentukan androidupdate: no, proses tersebut dilewati. Perlu dicatat bahwa opsi ini tidak berguna untuk build yang tidak menggunakan Ant.
Nilai default adalah `auto`, yang secara rekursif menggunakan jalur di _project.properties_ untuk menemukan semua subproyek yang akan diperbarui.
Sebaliknya, nilainya bisa berupa daftar direktori yang dipisahkan dengan koma, di mana ‘android update’ akan dijalankan relatif terhadap direktori aplikasi.
__Note__: Hanya digunakan oleh beberapa aplikasi lama.
Menambahkan properti java.encoding ke local.properties dengan nilai yang ditentukan. Umumnya nilainya adalah utf-8. Properti ini diproses oleh aturan Ant SDK dan memaksa kompiler Java untuk menafsirkan berkas sumber dengan pengkodean tersebut. Jika Anda menerima peringatan tentang pengkodean karakter saat kompilasi, mungkin Anda perlu mengaktifkan opsi ini.
__Note__: Hanya digunakan oleh beberapa aplikasi lama.
Jika diaktifkan, versi paket di AndroidManifest.xml akan digantikan dengan versi nama build seperti yang ditentukan dalam metadata.
Ini berguna dalam kasus ketika repositori upstream gagal memperbaruinya untuk tag tertentu; untuk membangun revisi sembarang; untuk menunjukkan bahwa versi berbeda secara signifikan dari upstream; atau untuk menunjukkan arsitektur atau platform mana APK tersebut dirancang untuk dijalankan.
forcevercode: true-
If specified, the package version code in the AndroidManifest.xml is replaced with the version code for the build. See also forceversion.
Lokasi biner yang digunakan dalam proses verifikasi untuk build ini.
Jika ditentukan, F-Droid akan memverifikasi file APK keluaran dari build terhadap yang ditentukan. Anda dapat menggunakan `%v` dan `%c` untuk menunjuk ke versi nama dan versi kode build saat ini. Untuk memverifikasi klien F-Droid itu sendiri, Anda bisa menggunakan:
`binary: https://f-droid.org/repo/org.fdroid.fdroid_%c.apk`
F-Droid akan menggunakan biner upstream jika verifikasi berhasil.
Menentukan jalur relatif dari berkas atau direktori yang akan dihapus sebelum proses build dimulai. Jalur bersifat relatif terhadap direktori dasar build — yaitu akar struktur direktori yang diambil dari repositori sumber — bukan direktori yang berisi AndroidManifest.xml.
Beberapa file/direktori dapat ditentukan dengan memisahkannya menggunakan koma. Direktori akan dihapus secara rekursif.
Daftar pustaka eksternal (berkas JAR) yang dipisahkan koma dari pustaka build/extlib, yang akan ditempatkan di direktori libs proyek.
__Note__: Hanya digunakan oleh beberapa aplikasi lama.
srclibs: [n:]a@r,[n:]b@r1,...-
Comma-separated list of source libraries or Android projects. Each item is of the form name@rev where name is the predefined source library name and rev is the revision or tag to use in the respective source control.
Untuk proyek Ant, Anda dapat menambahkan angka dengan titik dua di awal item srclib untuk secara otomatis menempatkannya di project.properties sebagai pustaka di bawah nomor yang ditentukan. Sebagai contoh, jika Anda menentukan
1:somelib@1.0, F-Droid akan otomatis melakukan hal yang setara dengan praktik lama:prebuild: echo "android.library.reference.1=$$somelib$$" >> project.properties.Setiap srclib memiliki file metadata di bawah
srclibs/di direktori repositori, dan kode sumber disimpan dibuild/srclib/. RepoType dan Repo ditentukan dengan cara yang sama seperti untuk aplikasi; Subdir: dapat berupa daftar yang dipisahkan koma, untuk kasus di mana direktori diganti namanya oleh upstream; Update Project: memperbarui proyek di direktori kerja dan satu tingkat di bawahnya; Prepare: dapat digunakan untuk jenis persiapan apa pun, khususnya jika Anda perlu memperbarui proyek dengan target tertentu. Anda juga dapat menggunakan$$name$$dalam perintahinit/prebuild/builduntuk menggantikan jalur absolut ke direktori pustaka.Saat ini srclibs digunakan ketika upstream menggunakan file jar atau mengambil dependensi dari repositori yang tidak tepercaya. Karena srclibs tidak dapat diperbarui secara otomatis, git submodule adalah pilihan yang lebih baik.
Menerapkan patch. “x” adalah nama satu atau beberapa berkas (dipisahkan koma) di dalam direktori di bawah metadata, dengan nama yang sama seperti berkas metadata tetapi tanpa ekstensi. Setiap patch akan diterapkan ke kode secara berurutan.
prebuild: xxxx-
Menentukan perintah shell (atau daftar perintah) yang dijalankan sebelum proses build berlangsung. Garis miring terbalik dapat digunakan sebagai karakter escape untuk menyisipkan koma secara harfiah, atau sebagai karakter terakhir pada suatu baris untuk menggabungkan baris tersebut dengan baris berikutnya. Karakter ini tidak memiliki arti khusus dalam konteks lain; khususnya, garis miring terbalik harfiah tidak perlu di-escape.
Perintah dijalankan menggunakan bash.
Perhatikan bahwa tidak ada yang boleh dibangun selama tahap pra-build ini — pemindaian kode dan pembuatan arsip sumber, misalnya, dilakukan setelah ini. Untuk tindakan khusus yang benar-benar membangun sesuatu atau menghasilkan biner, gunakan ‘build’ sebagai gantinya.
Anda dapat menggunakan
$$name$$untuk menggantikan jalur ke srclib yang direferensikan — lihat direktorisrclibuntuk detailnya.Anda dapat menggunakan
$$SDK$$dan$$NDK$$untuk menggantikan jalur ke direktori Android SDK dan NDK masing-masing, misalnya saat Anda perlu menjalankanandroid update projectsecara eksplisit. Variabel per-build berikut juga tersedia:$$VERSION$$,$$VERCODE$$, dan$$COMMIT$$.Ini dijalankan di
subdir:jika disetel. scanignore: <path1>[,<path2>,...]-
Mengaktifkan satu atau beberapa berkas/jalur untuk dikecualikan dari proses pemindaian. Ini hanya boleh digunakan jika ada alasan yang sangat kuat, dan sebaiknya disertai komentar yang menjelaskan mengapa hal tersebut diperlukan dalam Merge Request.
Saat memindai pohon sumber untuk mencari masalah, file yang cocok dengan jalur relatif yang dimulai dengan salah satu jalur yang diberikan di sini akan diabaikan.
scandelete: <path1>[,<path2>,...]
Saat menjalankan proses pemindaian, setiap berkas yang menimbulkan kesalahan — seperti biner — akan dihapus. Berfungsi sama seperti scanignore, tetapi alih-alih mengabaikan berkas, fitur ini menghapusnya.
Berguna ketika repositori kode sumber menyertakan file biner atau file lain yang tidak diinginkan yang tidak diperlukan untuk build. Alih-alih menghapusnya secara manual melalui [`rm`](#build_rm), menggunakan `scandelete` lebih mudah.
Seperti prebuild, tetapi dijalankan selama tahap pembangunan sebenarnya (namun sebelum tahap build utama Ant/Maven). Gunakan ini hanya untuk tindakan yang benar-benar melakukan proses build. Persiapan kode sumber sebaiknya dilakukan menggunakan init atau prebuild.
Semua proses build yang terjadi sebelum `build` akan diabaikan, karena
Ant atau mvn akan dijalankan untuk membersihkan lingkungan build
tepat sebelum `build` (atau build akhir) dijalankan dan
kode sumber akan dipindai untuk memastikan tidak ada biner.
Anda dapat menggunakan `$$SDK$$` dan `$$NDK$$` untuk menggantikan jalur ke direktori Android SDK dan NDK masing-masing. Variabel per-build berikut juga tersedia: `$$VERSION$$`, `$$VERCODE$$`, dan `$$COMMIT$$`.
Ini dijalankan di [`subdir:`](#build_subdir) jika disetel.
Mengaktifkan pembuatan kode native melalui skrip ndk-build sebelum menjalankan build utama dengan Ant. Nilainya dapat berupa daftar direktori relatif terhadap direktori utama aplikasi tempat ndk-build dijalankan, atau ‘yes’ yang berarti direktori saat ini (.). Menentukan daftar eksplisit berguna untuk proyek multi-komponen.
Proses build dan pemindaian akan menolak untuk berjalan jika parameter ini tidak ditentukan, tetapi terdapat direktori `jni`. Jika kode native dibangun melalui cara lain seperti tugas Gradle, Anda dapat menentukan `no` di sini untuk menghindarinya. Namun, jika kode native sebenarnya tidak diperlukan atau tidak digunakan, hapus saja direktori tersebut (misalnya menggunakan [`rm: jni`](#build_rm)). Menggunakan `buildjni: no` ketika kode jni tidak digunakan maupun dibangun akan menyebabkan kesalahan yang menyatakan bahwa pustaka native diharapkan ada dalam paket hasil.
__Note__: Hanya digunakan oleh beberapa aplikasi lama.
ndk: <version>-
Versi NDK yang digunakan dalam build ini. Nilainya adalah versi NDK sebagai string dalam salah satu dari dua skema versi resmi, misalnya r21e atau 21.4.7075529. NDK r10e atau yang lebih baru didukung. Ini juga dapat berupa daftar string versi, dan semua versi yang tercantum akan dipasang. Variabel lingkungan
ANDROID_NDKdanANDROID_NDK_HOMEakan diatur ke versi pertama dalam daftar.
gradle: <flavour1>[,<flavour2>,...]
Melakukan build menggunakan Gradle alih-alih Ant, dengan menentukan flavour yang akan digunakan. Nama flavour bersifat case-sensitive karena jalur ke output APK juga demikian.
Jika hanya satu flavor yang diberikan dan nilainya adalah 'yes', tidak ada flavor yang akan
digunakan. Perhatikan bahwa untuk proyek dengan flavor, Anda harus menentukan setidaknya
satu flavor yang valid karena 'yes' akan membangun semua flavor
secara terpisah. Tugas Gradle akan menjadi `assembel<flavors>Release`.
Metadata Fastlane untuk flavor ini dapat ditempatkan di `./src/<buildFlavor>/fastlane/metadata/<locale>/` alih-alih di `./fastlane/metadata/<locale>/`.
Melakukan build menggunakan Maven alih-alih Ant. Penambahan @<dir> membuat F-Droid menjalankan Maven di subdirektori relatif tersebut. Kadang perlu menggunakan @.. agar proses build berjalan dengan benar.
preassemble: <task1>[,<task2>,...]-
List of Gradle tasks to be run before the assemble task in a Gradle project build.
gradleprops: <prop1>[,<prop2>,...]
Daftar properti Gradle yang dikirim melalui baris perintah ke Gradle. Properti dapat berbentuk foo atau key=value.
Sebagai contoh: `gradleprops=enableFoo,someSetting=bar` akan menghasilkan perintah `gradle -PenableFoo -PsomeSetting=bar`.
antcommands: <target1>[,<target2>,...]-
Specify an alternate set of Ant commands (target) instead of the default ‘release’. It can’t be given any flags, such as the path to a build.xml.
Note: Hanya digunakan oleh beberapa aplikasi lama.
output: <glob/to/output.apk>-
Specify a glob path where the resulting unsigned release APK from the build should be. This can be used in combination with build methods like
gradle: yesormaven: yes, but if no build method is specified, the build is manual. You should run your build commands, such asmake, inbuild.Ini dijalankan di
subdir:jika disetel. postbuild: xxxx-
Sama seperti
prebuild, tetapi dijalankan setelah fase build yang sebenarnya (build utama Ant/Maven). Gunakan ini hanya untuk tindakan yang melakukan pemrosesan lanjutan pada keluaran build.Anda dapat menggunakan
$$name$$untuk menggantikan jalur ke srclib yang direferensikan — lihat direktorisrclibuntuk detailnya.Anda dapat menggunakan
$$SDK$$dan$$NDK$$untuk menggantikan jalur ke direktori Android SDK dan NDK masing-masing. Variabel per-build berikut juga tersedia:$$VERSION$$,$$VERCODE$$, dan$$COMMIT$$.Jalur ke APK keluaran tersedia dengan
$$OUT$$.Ini dijalankan di
subdir:jika disetel.
Menonaktifkan pemeriksaan terhadap kesesuaian nama dan kode versi di APK hasil build dengan metadata. Diasumsikan metadata sudah benar. Mengaktifkan ini menghilangkan lapisan pemeriksaan tambahan dan sebaiknya hanya digunakan jika nilai versi tidak dapat diekstrak dari output.
antifeatures: <antifeature1>[,<antifeature2>,...]
Daftar Anti-Feature untuk build tertentu. Penjelasan tentang masing-masing dapat ditemukan di AntiFeatures.
AllowedAPKSigningKeys
Saat membuat repositori biner otomatis dengan fdroid update, umumnya mudah
untuk mengetahui kunci penandatanganan yang diharapkan untuk APK yang
dikumpulkan. AllowedAPKSigningKeys memungkinkan operator repo menetapkan
kunci penandatanganan yang diharapkan, kemudian fdroid update akan
memeriksa bahwa APK ditandatangani oleh salah satu kunci tersebut. Jika
tidak, APK yang tidak sesuai tidak akan dimasukkan ke dalam repo. Jika
fdroid update --delete-unknown ditentukan, APK yang tidak sesuai akan
dihapus. Kemudian proses otomatis dapat digunakan untuk mengunduh APK yang
lebih baru ke repo, dan APK tersebut hanya akan disertakan jika memiliki
tanda tangan yang diketahui valid. Nilainya adalah nilai hex huruf kecil
dari sidik jari SHA-256 sertifikat penandatanganan. Ini dapat diambil
menggunakan apksigner dari Android SDK:
apksigner verify --print-certs example.apk | grep SHA-256
Sebagai alternatif, dapat juga menggunakan keytool dari Java Development
Kit (JDK):
keytool -printcert -jarfile example.apk | sed -n 's/[[:space:]]*SHA256: //p' | tr -d ':' | tr '[:upper:]' '[:lower:]'
Biasanya, APK ditandatangani hanya menggunakan satu penanda tangan. APK yang memerlukan verifikasi oleh beberapa penanda tangan saat ini tidak didukung oleh AllowedAPKSigningKeys (hal ini cukup jarang terjadi).
AntiFeatures
Bidang ini bersifat opsional — jika ada, berisi daftar nilai yang dipisahkan koma yang mendeskripsikan Anti-Fitur yang dimiliki aplikasi. Disarankan untuk menyebutkan alasan setiap Anti-Fitur di deskripsi aplikasi:
Ads– aplikasi berisi iklan.KnownVuln– aplikasi memiliki kerentanan keamanan yang diketahui.NonFreeAdd– aplikasi mempromosikan Ekstensi Non-Bebas sehingga aplikasi ini pada dasarnya menjadi iklan bagi perangkat lunak Non-Bebas lainnya.NonFreeAssets– aplikasi berisi dan menggunakan aset Non-Bebas. Kasus yang paling umum adalah aplikasi yang menggunakan karya seni seperti gambar, suara, musik, dan sebagainya dengan lisensi yang membatasi penggunaan komersial atau pembuatan karya turunan (misalnya lisensi Creative Commons dengan batasan “Non-Commercial” (NC) atau “No Derivatives” (ND)).NonFreeDep– aplikasi bergantung pada aplikasi Non-Bebas (misalnya Spotify, WhatsApp), artinya aplikasi ini memerlukan aplikasi tersebut untuk diinstal di perangkat, tetapi tidak menyertakannya.NonFreeNet– aplikasi mempromosikan atau sepenuhnya bergantung pada layanan jaringan kepemilikan.NoSourceSince– sumber kode upstream untuk aplikasi ini tidak lagi tersedia. Kemungkinan aplikasi menjadi komersial, repositori dihapus, atau dipindahkan ke lokasi yang saat ini tidak diketahui. Biasanya ini berarti tidak akan ada pembaruan lebih lanjut kecuali sumber tersebut tersedia kembali.NSFW– aplikasi berisi konten yang mungkin tidak ingin dilihat atau ditampilkan pengguna di semua tempat. Istilah ini berasal dari “Not Safe For Work”.TetheredNet– aplikasi sepenuhnya bergantung pada layanan yang mustahil (atau sulit) diganti. Penggantiannya memerlukan perubahan pada aplikasi atau layanan tersebut. Anti-Feature ini tidak diterapkan jika ada opsi konfigurasi sederhana yang memungkinkan aplikasi diarahkan ke instansi alternatif yang tersedia untuk publik atau dapat di-host sendiri.Tracking– data pengguna atau aktivitas dilacak atau bocor secara default. Berlaku jika aplikasi atau suatu fiturnya tidak dapat digunakan tanpa mengumpulkan dan berbagi data tersebut, atau tanpa melakukan permintaan ke layanan jaringan pengumpul data (terlepas dari apakah layanan tersebut berbasis perangkat lunak bebas atau tidak). Misalnya, pengunduhan data cuaca berbasis aktivitas, peta, avatar, atau pengunggahan log kerusakan dan sebagainya.
Nonaktifkan
Jika bidang ini ada, aplikasi tidak akan dimasukkan ke dalam indeks
publik. Hal ini memungkinkan metadata tetap disimpan sementara aplikasi
dinonaktifkan sementara dari publikasi. Nilai bidang ini harus menjelaskan
alasan mengapa aplikasi dinonaktifkan. Tidak ada APK atau arsip kode sumber
yang dihapus; untuk menghapus APK, lihat disable di
bagian Builds atau hapus secara manual untuk build pengembang. Bidang ini
digunakan ketika aplikasi sudah tidak relevan lagi, karena arsip kode sumber
tetap disimpan.
MemerlukanRoot
Atur bidang opsional ini ke true jika aplikasi memerlukan hak akses root
untuk digunakan. Hal ini memungkinkan klien F-Droid untuk menyaring aplikasi
tersebut jika pengguna menginginkannya. Baik root diperlukan atau tidak,
sebaiknya tambahkan satu paragraf dalam deskripsi untuk menjelaskan kondisi
dan alasan aplikasi meminta akses root.
KebijakanArsip
Menentukan kebijakan untuk memindahkan versi lama aplikasi ke repositori arsip, jika diaktifkan. Konfigurasi menetapkan jumlah maksimum versi yang disimpan di repositori utama; setelah melebihi batas, versi lama dipindahkan ke arsip. Pengaturan kebijakan khusus aplikasi ini dapat mengganti pengaturan default tersebut.
Versi yang ditentukan melalui CurrentVersionCode
selalu dianggap sebagai versi terbaru saat memutuskan versi mana yang akan
dimasukkan ke dalam arsip. Ini berarti bahwa ketika ArchivePolicy diatur
ke 1, hanya APK yang sesuai dengan CVC yang dipertahankan, yang belum
tentu merupakan APK dengan kode versi tertinggi.
Saat ini, format yang didukung hanya n, di mana n adalah jumlah versi
yang ingin dipertahankan. Nilai default adalah 3. Untuk aplikasi dengan
daftar VercodeOperation, nilai default dihitung
sebagai 3 × jumlah operasi; misalnya, untuk aplikasi dengan dua operasi
(dua ABI), maka enam versi akan disimpan.
ModePembaruanOtomatis
Menentukan metode yang digunakan untuk menghasilkan build baru secara otomatis ketika rilis baru tersedia — dengan kata lain, menambahkan baris versi build baru ke metadata. Proses ini terjadi bersamaan dengan fungsi UpdateCheckMode; ketika pembaruan terdeteksi oleh fungsi tersebut, pembaruan tersebut juga akan diproses oleh pengaturan ini.
Untuk mengaktifkan, atur ke mode yang didukung:
-
Version– Pembaruan otomatis diaktifkan.Jika UpdateCheckMode disetel ke
Tags, ini harus disetel keVersiontanpa pola apa pun. Tag yang diperiksa digunakan secara langsung.Jika UpdateCheckMode diatur ke
HTTP, sebuah pola harus ditambahkan setelahVersion. Pola ini digunakan untuk menghasilkan nilai (nama tag) yang digunakan untuk properticommit:pada blok build baru. Ini hanyalah teks di mana%vdan%cdiganti dengan nama versi dan kode versi yang diperlukan. String yang dihasilkan harus cocok dengan tag yang ada di repo aplikasi, yang kemudian akan digunakan oleh F-Droid untuk membangun versi yang sesuai.Sebagai contoh, jika sebuah aplikasi selalu memiliki tag
2.7.2yang sesuai dengan versi 2.7.2, Anda cukup menentukanVersion %v. Jika aplikasi selalu memiliki tagver_1234untuk versi dengan kode versi 1234, Anda akan menentukanVersion ver_%c.Selain itu, sebuah sufiks dapat ditambahkan ke nama versi pada tahap ini untuk membedakan build milik F-Droid dari versi aslinya. Melanjutkan contoh pertama di atas, Anda akan menentukannya sebagai
Version +-fdroid %v, di mana-fdroidadalah sufiks yang akan ditambahkan keversionNameyang ditentukan di misalnyabuild.gradlesaat membangun APK.
Untuk aplikasi dengan daftar VercodeOperation, jumlah build sama dengan jumlah elemen dalam daftar tersebut.
UpdateCheckMode
Menentukan metode yang digunakan untuk memeriksa kapan rilis baru tersedia —
dengan kata lain, untuk memperbarui bidang
CurrentVersion dan
CurrentVersionCode dalam metadata melalui proses
fdroid checkupdates.
Secara bawaan, tidak ada pemeriksaan yang dilakukan karena tidak ada cara otomatis yang sesuai untuk melakukannya. Pembaruan harus diperiksa secara manual. Gunakan ini, misalnya, saat menerapkan versi tidak stabil atau yang telah ditambal; saat build dilakukan di direktori yang berbeda dari tempat AndroidManifest.xml berada; jika pengembang menggunakan sistem build Gradle dan menyimpan informasi versi di berkas terpisah; jika pengembang membuat cabang baru untuk setiap rilis dan tidak membuat tag; atau jika Anda telah mengubah nama paket atau logika kode versi.
Untuk mengaktifkan, atur ke mode yang didukung:
-
Static– Tidak ada pemeriksaan yang dilakukan – bisa berarti pengembangan telah berhenti atau versi baru tidak diinginkan. Metode ini juga digunakan ketika tidak ada metode pemeriksaan lain yang tersedia dan pengembang upstream memberi tahu F-Droid secara langsung mengenai rilis baru. -
RepoManifest- Pada commit terbaru, berkas AndroidManifest.xml dan build.gradle dicari di direktori tempat berkas-berkas tersebut ditemukan pada build terbaru. Kesesuaian metode ini bergantung pada proses pengembangan yang digunakan oleh para pengembang aplikasi. Anda tidak boleh menentukan metode ini kecuali Anda yakin metode ini sesuai. Misalnya, beberapa pengembang menaikkan versi saat memulai pengembangan, bukan saat menerbitkan. Metode ini akan mengembalikan kesalahan jika AndroidManifest.xml telah berpindah ke direktori lain atau jika nama paket telah berubah. Versi saat ini yang diberikan mungkin tidak akurat, karena tidak semua versi layak untuk diterbitkan. Oleh karena itu, sebelum melakukan build, sering kali perlu memeriksa apakah versi saat ini telah diterbitkan di suatu tempat oleh pengembang hulu, baik dengan memeriksa APK yang mereka distribusikan maupun tag dalam repositori kode sumber.Untuk tipe repo
git, Anda dapat menggunakanRepoManifest/cabangandasebagai UpdateCheckMode sehingga “cabanganda” akan menjadi cabang yang digunakan sebagai pengganti cabang bawaan. Cabang bawaan adalah “master”. Metode ini tidak berfungsi untuk tipe reposrclib. -
Tags- Berkas AndroidManifest.xml dan build.gradle pada semua revisi bertag dalam repositori sumber diperiksa untuk mencari kode versi tertinggi. Kesesuaian metode ini bergantung pada proses pengembangan yang digunakan oleh para pengembang aplikasi. Anda tidak boleh menentukan metode ini kecuali Anda yakin metode ini sesuai. Metode ini tidak boleh digunakan jika pengembang suka menandai versi tidak stabil atau diketahui sering lupa menandai rilis. SepertiRepoManifest, metode ini tidak akan mengembalikan nilai yang benar jika AndroidManifest.xml dipindahkan ke direktori lain. Meski demikian, metode ini sering menjadi UpdateCheckMode yang paling disukai.Saat ini hanya berfungsi untuk repositori
git.Opsional, tambahkan pola regex di akhir — dipisahkan dengan spasi — untuk hanya memeriksa tag yang cocok dengan pola tersebut. Berguna ketika aplikasi memberi tag pada versi non-rilis seperti
X.X-alpha, sehingga Anda dapat menyaringnya dengan sesuatu seperti.*[0-9]$yang mengharuskan nama tag diakhiri dengan angka. Contoh:UpdateCheckMode: Tags .*[0-9]$Opsional, UpdateCheckData dapat ditentukan untuk mengekstrak kode dan nama versi dari file repositori yang Anda tentukan (alih-alih bergantung pada nilai default, yang dalam sebagian besar kasus adalah
build.gradleatauAndroidManifest.xml). -
HTTP– Permintaan HTTP digunakan untuk menentukan kode versi dan nama versi saat ini. Ini dikontrol oleh bidang UpdateCheckData, yang memiliki formaturlcode|excode|urlver|exver.Pertama, jika
urlcodetidak kosong, dokumen dari URL tersebut akan diambil dan dicocokkan dengan ekspresi regulerexcode, dengan grup pertama menjadi kode versi.Kedua, jika
urlvertidak kosong, dokumen dari URL tersebut akan diambil dan dicocokkan dengan ekspresi regulerexver, dengan grup pertama menjadi nama versi. Kolomurlverdapat diatur menjadi hanya ‘.’ yang berarti menggunakan dokumen yang sama dengan yang digunakan untuk kode versi, alih-alih mengambil dokumen yang berbeda.
VercodeOperation
Operasi yang diterapkan pada kode versi yang diperoleh dengan
UpdateCheckMode. Nilai %c akan digantikan oleh kode
versi aktual, dan seluruh string akan dievaluasi menggunakan fungsi eval
Python.
Sangat berguna untuk aplikasi yang ingin dikompilasi untuk berbagai ABI, tetapi kode versinya tidak selalu berakhiran nol. Misalnya, dengan beberapa VercodeOperation kita dapat melacak pembaruan dan membangun hingga empat versi berbeda dari setiap versi upstream, misalnya untuk empat arsitektur:
VercodeOperation:
- 100 * %c + 1
- 100 * %c + 2
- 100 * %c + 3
- 100 * %c + 4
Sehingga empat blok build disalin dari yang sebelumnya dan ditambahkan sebagai pembaruan dengan kode versi yang dihitung dari setiap operasi matematika tersebut.
UpdateCheckIgnore
When checking for updates (via UpdateCheckMode) this can be used to specify a regex which, if matched against the version name, causes that version to be ignored. For example, ‘beta’ could be specified to ignore version names that include that text.
Hanya tersedia untuk UpdateCheckMode HTTP.
UpdateCheckName
When checking for updates (via UpdateCheckMode) this can be used to specify the package name to search for. Useful when apps have a static package name but change it programmatically in some app flavours, by e.g. appending “.open” or “.free” at the end of the package name.
Anda juga dapat menggunakan Ignore untuk mengabaikan pencarian nama
paket. Ini hanya boleh digunakan pada kasus tertentu, misalnya jika berkas
build.gradle aplikasi tidak berisi nama paket.
UpdateCheckData
Digunakan bersama dengan UpdateCheckMode Tags atau
HTTP.
UpdateCheckData: <vercode-location>|<RegEx-for-versionCode>|<versionName-location>|<RegEx-for-versionName>
vercode-location– URL (untukUpdateCheckMode: HTTP) atau jalur/berkas relatif ke root repositori; biarkan kosong untuk memeriksa nama tag (jika menggunakanUpdateCheckMode: Tags).RegEx-for-versionCode– Ekspresi reguler untuk mencocokkanversionCode.versionName-location– Sama sepertivercode-location, tetapi untukversionName. Titik (.) berarti menggunakan lokasivercode-location; biarkan kosong untuk memeriksa nama tag (hanya berlaku untukUpdateCheckMode: Tags).RegEx-for-versionName– Sama sepertiRegEx-for-versionCode, tetapi untukversionName.- Operator pipa (pipe) dalam RegEx belum didukung saat ini.
Contoh untuk UpdateCheckMode: Tags:
- Aplikasi Flutter dengan
pubspec.yamldi root repositori:pubspec.yaml|version:\s.+\+(\d+)|.|version:\s(.+)\+ - Gunakan tag git sebagai nama versi:
app/build.gradle|versionCode\s(\d+)|| - Opsional, regex untuk mengekstrak nama versi dari tag dapat ditentukan:
app/build.gradle|versionCode\s(\d+)||Android-([\d.]+) - Jika tidak ada berkas yang ditentukan untuk kode versi, kode dan nama
dapat diekstrak dari tag:
'|\+(\d+)||Android-([\d.]+)' - Catatan: Pastikan menggunakan tanda kutip tunggal di sekitar seluruh
nilai jika Anda mengosongkan
vercode-location:UpdateCheckData: '|\+(\d+)||Android-([\d.]+)'
Contoh untuk UpdateCheckMode: HTTP:
https://foo/version.json|"version_code":.*"(.*)"|.|"version_name":.*\"(.*)\",https://foo/version_fdroid.txt|versionCode=(.*)|.|versionName=(.*)
VersiSaatIni
Nama versi yang direkomendasikan untuk rilis. Mungkin ada versi aplikasi yang lebih baru (misalnya versi tidak stabil), dan hampir pasti juga ada versi yang lebih lama. Nilai ini harus menunjukkan versi yang direkomendasikan untuk penggunaan umum. Jika tidak ada kode sumber untuk versi saat ini, atau jika aplikasi tersebut menggunakan pustaka Non-Bebas, sebaiknya versi terbaru yang masih sepenuhnya bebas dijadikan rujukan — meskipun pemeriksaan pembaruan otomatis tetap dapat dijalankan (lihat NoSourceSince).
Bidang ini biasanya diperbarui secara otomatis — lihat UpdateCheckMode.
KodeVersiSaatIni
Kode versi yang sesuai dengan bidang CurrentVersion. Kedua bidang ini harus benar dan sesuai, karena kode versi digunakan Android untuk menentukan urutan versi, dan oleh aplikasi klien F-Droid untuk menentukan versi mana yang seharusnya direkomendasikan.
Bidang ini biasanya diperbarui secara otomatis — lihat UpdateCheckMode.
Jika tidak diatur, klien akan merekomendasikan versi tertinggi yang tersedia, seolah-olah CurrentVersionCode bernilai tak terbatas.
TanpaSumberSejak
Jika kode sumber hilang untuk CurrentVersion yang dilaporkan oleh repositori upstream, atau terdapat elemen Non-Bebas yang diperkenalkan, bidang ini menentukan versi pertama yang mulai kehilangan kode sumber. Aplikasi yang kehilangan kode sumber hanya untuk satu atau beberapa versi tetapi menyediakan sumber untuk versi lebih baru tidak termasuk dalam kategori ini — bidang ini dimaksudkan untuk menunjukkan aplikasi yang saat ini tidak mendistribusikan kode sumber, dan sejak kapan hal tersebut terjadi.
Bidang yang Ditinggalkan atau Dihapus
Menyediakan
Daftar ID aplikasi yang dipisahkan koma yang disediakan oleh aplikasi ini. Bidang ini hanya pernah menjadi stub dan tidak pernah digunakan untuk apa pun. Bidang ini tidak pernah didukung dalam berkas metadata index-v1.json maupun .yml.
