Mengemas aplikasi di F-Droid





tl; dr : mengemas dan mengirimkan aplikasi bebas Trojan untuk mengontrol lampu saya di F-Droid tanpa pengetahuan pengembangan Android.



Saya memiliki posisi politik, saya adalah pendukung FOSS dalam banyak hal saya setuju dengan Stallman. Seperti yang sering terjadi, posisi ini dilengkapi dengan paranoia ringan. Saya mencoba menyingkirkan aplikasi berpemilik, terutama jika dijalankan melalui server pihak ketiga.



Dan saya juga memiliki lampu "pintar" Xiaomi Yeelight, yang dikendalikan oleh aplikasi yang berjalan melalui server Xiaomi. Tetapi memiliki kemampuan untuk menyalakan API yang bekerja di dalam LAN di lampu. Untuk merasa nyaman, saya mencari aplikasinya di Github dan Gitlab dan sekarang saya bermaksud untuk mempromosikannya ke F-Droid untuk mendukung komunitas paranoid kami.



Bangun dan periksa



Agar aplikasi dapat masuk ke dalam katalog, aplikasi tersebut setidaknya harus dibangun dan, dengan cara yang bersahabat, berfungsi. Pilihan saya ternyata sangat sedikit , dan tidak ada satu aplikasi pun yang ditemukan di Gitlab. Dari aplikasi yang tersedia, saya hanya bisa mengumpulkan dua, dan pada akhirnya hanya satu yang mulai. Saya sangat jauh dari pengembangan untuk Android, dalam beberapa hari saya hanya menguasai perakitan sederhana menggunakan Gradle, saya akan menjelaskannya lebih lanjut.



Kami membutuhkan: git, Java Runtime Environment, Android SDK, Android Debugging Bridge, dan Gradle baru. JRE, ADB dan git untuk Pengujian Debian dapat diinstal dari paket apt install git adb openjdk-11-jre-headless.



Android SDK biasanya diinstal dengan Android Studio, tetapi saya menggunakan utilitas konsol sdkmanager :



unzip commandlinetools-linux-6609375_latest.zip
export PATH=$PATH:$PWD/tools/bin/
mkdir android-sdk
export ANDROID_SDK_ROOT=$PWD/android-sdk/


Jika Anda mengira saya melewatkan menginstal SDK Android itu sendiri, maka itu tampaknya tidak bagi Anda. Saya akan menjelaskannya nanti. Repositori Debian berisi Gradle versi busuk, build tidak berfungsi dengannya, build baru juga harus diinstal dari situs :



wget https://services.gradle.org/distributions/gradle-6.6.1-bin.zip
unzip gradle-6.6.1-bin.zip
export PATH=$PATH:$PWD/gradle-6.6.1/bin/


Saya membagi repositori menjadi diri saya sendiri dan membersihkan sampah yang dibuat secara otomatis. Semuanya berjalan seperti ini:



yes | sdkmanager --licenses --sdk_root=$ANDROID_SDK_ROOT
git clone https://github.com/asz/OpenLight.git
cd OpenLight/
gradle wrapper
./gradlew assemble


Dengan perintah pertama kami menerima secara massal semua kondisi perizinan seperti yang diperlukan sdkmanageruntuk instalasi non-interaktif. Saat membuat wrapper ( gradle wrapper) secara otomatis, Gradle akan mengurai dan menginstal semua dependensi yang diperlukan. Mengunduh versi Android SDK yang diperlukan, toolkit perakitan, dan dependensi khusus Android lainnya dilakukan dengan bantuan sdkmanager, jadi tidak perlu melakukannya secara manual, dan lisensinya harus diterima sebelumnya.



gambar



Saatnya mengaktifkan API di aplikasi resmi. Mengubah smartphone Anda debugging dari USB , hubungkan ke komputer Anda dan menginstal paket debug yang dihasilkan: adb install app/build/outputs/apk/debug/app-debug.apk. Ingatlah untuk mengaktifkan debugging dari komputer Anda di jendela pop-up di ponsel Anda. Jika aplikasi di ponsel menunjukkan tanda-tanda kehidupan, maka Anda dapat melanjutkan.



Mempersiapkan patch di F-Droid



F-Droid memiliki aturan untuk membuat katalog aplikasi. Dasar-dasarnya cukup sederhana: tidak ada dependensi build nonfree, masalah privasi, dan dependensi nonfree dari aplikasi itu sendiri yang harus ditandai . Saya tidak memeriksa dependensi sendiri, karena F-Droid memiliki CI dan sistem build-nya sendiri, ini memungkinkan Anda untuk menjalankan commit melalui pipeline.



Sekarang mari kita pergi ke GitLab, tempat F-Droid dikembangkan. Pertama, pastikan untuk memeriksa bahwa belum ada yang mengerjakan aplikasi Anda. Jenis aktivitas ini terkonsentrasi di permintaan pengemasan dan untuk menggabungkan permintaan . Garpu penyimpanan Data dan klon dari profil Anda.



Satu file YML sudah cukup untuk menampilkan aplikasi di F-Droid. Temukan file YML yang sesuai di subdirektori metadata/repositori Anda dan salin dalam format yang sama applicationId.yml. Nilai applicationIduntuk aplikasi Anda dapat diperoleh dari beberapa build.gradlerepositori sendiri, dalam kasus saya dari app/build.gradle. Saya tidak ingat file mana yang saya ambil sebagai referensi, saya hanya akan menampilkan file terakhir metadata/grmasa.com.open_light.yml: Sulit bagi saya untuk memilih AntiFeature tertentu, tetapi tidak diperlukan akurasi detail, yang ditunjukkan . Kategori cocok untuk aplikasi pendamping perangkat. Kunci menjelaskan dari commit / tag mana untuk membangun aplikasi. juga dapat ditemukan di . Jika tidak ingin mengupdate aplikasi secara manual, Anda bisa mengisinya



AntiFeatures:

- NonFreeDep

Categories:

- Connectivity

License: GPL-2.0-or-later

AuthorWebSite: https://github.com/grmasa

SourceCode: https://github.com/grmasa/Open_light

IssueTracker: https://github.com/grmasa/Open_light/issues

Changelog: https://github.com/grmasa/Open_light/tags



AutoName: Open Light

Summary: Control Xiaomi Yeelight WiFi smart bulbs

Description: |-

Control Xiaomi Yeelight smart bulbs within your Local Area Network.

Only fits WiFi controlled bulbs.



This app requires enabled LAN control for bulbs: open the official app, set up

all the bulbs, go to LAN control in the menu, and enable it for every device.



RepoType: git

Repo: https://github.com/grmasa/Open_light.git



Builds:

- versionName: 1.1.2

versionCode: 1

commit: v1.1.2

subdir: app

gradle:

- yes



AutoUpdateMode: Version v%v

UpdateCheckMode: Tags

CurrentVersion: 1.1.2

CurrentVersionCode: 1




NonFreeDepConnectivityBuildversionCodebuild.gradleUpdateCheckModedan AutoUpdateMode( v%vmenjelaskan format tag).



Untuk pemeriksaan file dasar, Anda memerlukan utilitas fdroiddari repositori Server F-Droid , dependensinya, dan variabel ANDROID_HOME:



git clone https://gitlab.com/fdroid/fdroidserver.git
export PATH=$PATH:$PWD/fdroidserver
apt -y install python3-git python3-pyasn1 python3-pyasn1-modules python3-yaml python3-requests
export ANDROID_HOME=$ANDROID_SDK_ROOT


Anda dapat kembali ke direktori fdroiddatadan memeriksa apakah metadata berfungsi:



fdroid readmeta
fdroid lint grmasa.com.open_light
fdroid build -v -l grmasa.com.open_light


Dua perintah pertama memeriksa sintaks, yang ketiga membangun aplikasi. Di pintu keluar Anda akan melihat APK tersebut: unsigned/grmasa.com.open_light_1.apk.



Untuk berjaga-jaga, Anda dapat menjalankannya fdroid checkupdates grmasa.com.open_lightuntuk memeriksa pembaruan dan fdroid rewritemeta grmasa.com.open_lightuntuk mengisi ulang file dengan metadata dengan benar, dan kemudian memeriksa ulang perakitan.



Hampir berakhir bahagia



Sekarang Anda dapat melakukan dan memeriksa pipeline Gitlab CI. Semuanya sudah berakhir untukku !



Saya mengisi Permintaan Penggabungan dan memeriksanya serta meminta untuk memberi tahu penulis aplikasi asli. Jika penulis mengabaikan saya selama lebih dari dua minggu, saya hanya akan menulis ulang tautan dalam metadata ke garpu saya dan kemudian akan diterima.



gambar



Sekarang saya bisa menyingkirkan telepon Trojan khusus saya. Dan saya bahkan akan memiliki kesempatan untuk mengontrol mereka dari Internet dengan cara yang menyimpang, bahkan dengan melarang LAN bersama mereka !



Sayangnya, ilustrasi di judul itu ada benarnya. Bug yang tidak menyenangkan ditemukan di aplikasi pada langkah keduawizard: dari daftar lampu yang terdeteksi, paling sering bukan yang saya pilih ditambahkan. Karena itu, lampu-lampu itu ada di daftar utama. Untuk mengatasi masalah ini, saya memasang lampu di aplikasi satu per satu. Mudah-mudahan suatu saat nanti saya akan mencari tahu apa masalahnya, atau mengemas aplikasi lain.










All Articles