تعبئة تطبيق في F-Droid





tl ؛ dr : تعبئة وشحن تطبيق خالٍ من أحصنة طروادة للتحكم في مصابيحي في F-Droid دون أي معرفة بتطوير Android.



لديّ منصب سياسي ، وأنا من مؤيدي البرمجيات الحرة والمفتوحة المصدر من نواحٍ عديدة أتفق مع Stallman. كما هو الحال غالبًا ، يُستكمل هذا الموقف بجنون العظمة الخفيف. أحاول التخلص من تطبيقات الملكية ، خاصة إذا كانت تعمل من خلال خوادم طرف ثالث.



ولدي أيضًا مصابيح Xiaomi Yeelight "الذكية" ، والتي يتم التحكم فيها بواسطة تطبيق يعمل من خلال خوادم Xiaomi. لكن لديه القدرة على تشغيل واجهة برمجة التطبيقات التي تعمل داخل الشبكة المحلية في المصباح. لأشعر بالراحة ، ذهبت للبحث عن التطبيق على Github و Gitlab والآن أعتزم الترويج له على F-Droid لدعم مجتمعنا المصاب بجنون العظمة.



بناء والتحقق



من أجل أن يدخل التطبيق في الكتالوج ، يجب على الأقل أن يبني ويعمل بطريقة ودية. تبين أن خياري كان ضئيلًا ، ولم يتم العثور على تطبيق واحد على Gitlab. من بين التطبيقات المتاحة ، تمكنت من جمع اثنين فقط ، وفي النهاية بدأ أحدهما فقط. أنا بعيد جدًا عن التطوير لنظام Android ، في غضون أيام قليلة أتقنت تجميعًا بسيطًا فقط باستخدام Gradle ، وسأصفه أكثر.



نحتاج إلى: git و Java Runtime Environment و Android SDK وجسر تصحيح أخطاء Android و Gradle الجديد. يمكن تثبيت JRE و ADB و git for Debian Testing من الحزم apt install git adb openjdk-11-jre-headless.



عادةً ما يتم تثبيت Android SDK مع Android Studio ، لكنني استخدمت الأداة المساعدة sdkmanager :



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


إذا كنت تعتقد أنني فاتني تثبيت Android SDK نفسه ، فلا يبدو لك ذلك. سأشرح ذلك لاحقًا. تحتوي مستودعات دبيان على إصدار فاسد من Gradle ، ولا يعمل الإصدار معها ، وسيتعين أيضًا تثبيت الإصدار الجديد من الموقع :



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/


قمت بتقسيم المستودع لنفسي وقمت بتنظيف القمامة التي تم إنشاؤها تلقائيًا. كل شيء يسير على هذا النحو:



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


من خلال الأمر الأول ، نقبل بشكل جماعي جميع شروط الترخيص كما هو مطلوب sdkmanagerللتثبيت غير التفاعلي. عند gradle wrapperالإنشاء التلقائي للغلاف ( ) ، سيقوم Gradle بتحليل كافة التبعيات الضرورية وتثبيتها. يتم تنزيل الإصدار المطلوب من Android SDK ومجموعة أدوات التجميع وغيرها من التبعيات الخاصة بنظام Android بمساعدة sdkmanager، لذلك لا يتعين عليك القيام بذلك يدويًا ، وسيتعين عليك قبول الترخيص مقدمًا.



صورة



حان الوقت لتمكين API في التطبيق الرسمي. حول هاتفك الذكي التصحيح من USB ، توصيله إلى جهاز الكمبيوتر الخاص بك وتثبيت حزمة التصحيح ولدت: adb install app/build/outputs/apk/debug/app-debug.apk. تذكر تمكين التصحيح من جهاز الكمبيوتر الخاص بك في النافذة المنبثقة على هاتفك. إذا أظهر التطبيق الموجود على الهاتف علامات الحياة ، فيمكنك المتابعة.



تحضير رقعة في F-Droid



لدى F-Droid قواعد لفهرسة التطبيق. الأساسيات بسيطة جدًا: لا يجب وضع علامة على تبعيات بناء غير حرة ، ومشكلات الخصوصية ، وأي تبعيات غير حرة للتطبيق نفسه . لم أتحقق من التبعيات بنفسي ، لأن F-Droid لديه CI ونظام بناء خاص به ، وهذا يسمح لك ببساطة بتشغيل الالتزام عبر خط الأنابيب.



الآن دعنا ننتقل إلى GitLab ، حيث يتم تطوير F-Droid. أولاً ، تأكد من التحقق من عدم وجود أحد يعمل على طلبك حتى الآن. ويتركز هذا النشاط في التعبئة والتغليف طلبات وفي طلبات الدمج . قم بتقسيم مستودع البيانات واستنساخه من ملف التعريف الخاص بك.



لكي يظهر التطبيق في F-Droid ، يكفي ملف YML واحد. ابحث عن أي ملف YML مناسب في دليل فرعي لمستودعك وانسخه metadata/بنفس التنسيق applicationId.yml. applicationIdيمكن الحصول على قيمة التطبيق الخاص بك من بعض build.gradleمستودعاته الخاصة ، في حالتي من app/build.gradle. لا أتذكر أيًا من الملفات التي أخذتها كمرجع ، سأعرض الملف النهائي فقط metadata/grmasa.com.open_light.yml: لقد كان من الصعب بالنسبة لي اختيار AntiFeature معين ، ولكن الدقة التفصيلية ليست مطلوبة ، كما هو موضح . فئة مناسبة للتطبيقات المصاحبة للجهاز. يصف المفتاح أي الالتزام / العلامة لإنشاء التطبيق منه. يمكن العثور عليها أيضًا في . إذا كنت لا تريد تحديث التطبيق يدويًا ، فيمكنك ملء



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.gradleUpdateCheckModeو AutoUpdateMode( v%vيصف تنسيق العلامة).



لفحص الملفات الأساسي ، تحتاج إلى أداة مساعدة fdroidمن مستودع خادم F-Droid وتبعياتها ومتغير 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


يمكنك العودة إلى الدليل fdroiddataوالتحقق مما إذا كانت البيانات الوصفية تعمل:



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


يتحقق الأمران الأولان من بناء الجملة ، بينما يقوم الثالث ببناء التطبيق. عند مخرج سترى APK: unsigned/grmasa.com.open_light_1.apk.



فقط في حالة حدوث ذلك ، يمكنك تشغيله fdroid checkupdates grmasa.com.open_lightللتحقق من وجود تحديثات fdroid rewritemeta grmasa.com.open_lightوإعادة ملء الملف بشكل صحيح بالبيانات الوصفية ، ثم إعادة فحص التجميع.



تقريبا نهاية سعيدة



يمكنك الآن الالتزام والتحقق من خط أنابيب Gitlab CI. انتهى كل شيء بالنسبة لي !



لقد ملأت طلب دمج وقمت بفحصه وطلبت إخطار مؤلف التطبيق الأصلي. إذا تجاهلني المؤلف لأكثر من أسبوعين ، فسأعيد ببساطة كتابة الروابط الموجودة في البيانات الوصفية إلى مفترقتي ثم يتم قبولها.



صورة



الآن يمكنني وضع هاتف طروادة الخاص بعيدًا عن الطريق. وستتاح لي الفرصة حتى للتحكم بهم من الإنترنت بطريقة فاسدة ، حتى عن طريق حظر LAN معهم !



للأسف ، هناك بعض الحقيقة في الرسم التوضيحي في العنوان. تم العثور على خطأ غير سارة في التطبيق في الخطوة الثانيةالمعالج: من قائمة المصابيح المكتشفة ، غالبًا لا تتم إضافة المصابيح التي حددتها. وبسبب هذا ، فإن المصابيح موجودة في القائمة الرئيسية. للتغلب على هذه المشكلة ، أضع المصابيح في التطبيق واحدة تلو الأخرى. نأمل يومًا ما أن أكتشف المشكلة ، أو أحزم تطبيقًا آخر.










All Articles