F-Droidでのアプリのパッケージ化





tl; dr:Android開発の知識がなくても、F-Droidでランプを制御するためのトロイの木馬のないアプリをパッケージ化して出荷します。



私には政治的立場があり、ストールマンに同意する多くの点でFOSSの支持者です。よくあることですが、この立場は軽度のパラノイアによって補完されます。特にサードパーティのサーバーを介して実行される場合は、独自のアプリケーションを削除しようとしています。



また、Xiaomiサーバーを介して実行されるアプリケーションによって制御されるXiaomiYeelight「スマート」ランプもあります。ただし、ランプ内のLAN内で機能するAPIをオンにする機能があります安心するために、GithubとGitlabでアプリを探しに行きました。今は、パラノイドコミュニティをサポートするためにF-Droidに宣伝するつもりです。



ビルドして確認する



アプリケーションがカタログに入るには、少なくともビルドし、友好的な方法で機能する必要があります。私の選択は貧弱であることが判明し、Gitlabで単一のアプリケーションが見つかりませんでした。利用可能なアプリケーションのうち、私は2つしか収集できず、最終的には1つだけが開始されました。私はAndroid向けの開発にはほど遠いです。数日で、Gradleを使用した単純なアセンブリのみを習得しました。これについて、さらに詳しく説明します。



必要なもの:git、Javaランタイム環境、Android SDK、Android Debugging Bridge、および新しいGradle。 Debian Testing用のJRE、ADB、およびgitは、パッケージからインストールできますapt install git adb openjdk-11-jre-headlessAndroidSDK



は通常AndroidStudioとともにインストールされますが、私は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自体のインストールを見逃したと思った場合は、そうではなかったようです。後で説明します。Debianリポジトリには腐ったバージョンの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は必要なすべての依存関係を解析してインストールします。必要なバージョンのAndroidSDK、アセンブリツールキット、およびその他のAndroid固有の依存関係のダウンロードはヘルプsdkmanagerを使用して行われるため、手動で行う必要はなく、事前にライセンスに同意する必要があります。



画像



公式アプリでAPIを有効にする時が来ました。スマートフォンでUSBをデバッグし、コンピューターに接続して、生成されたデバッグパッケージをインストールしますadb install app/build/outputs/apk/debug/app-debug.apk。お使いの携帯電話のポップアップウィンドウで、お使いのコンピューターからのデバッグを有効にすることを忘れないでください。電話のアプリケーションが生命の兆候を示している場合は、続行できます。



F-Droidでパッチを準備する



F-Droidには、アプリをカタログ化するためのルールがあります基本は非常に単純です。フリーでないビルドの依存関係、プライバシーの問題、およびアプリケーション自体のフリーでない依存関係にフラグを立てる必要はありませんF-DroidにはCIと独自のビルドシステムがあるため、依存関係を自分で確認しませんでした。これにより、パイプラインを介してコミットを実行するだけで済みます。



それでは、F-Droidが開発されているGitLabに行きましょう。まず、アプリケーションでまだ誰も作業していないことを確認してください。このようなアクティビティは、パッケージ化リクエストマージリクエストに集中していますデータリポジトリフォークし、プロファイルからクローンを作成します。



アプリケーションをF-Droidに表示するには、1つのYMLファイルで十分です。metadata/リポジトリのサブディレクトリ適切なYMLファイルを見つけて、同じ形式でコピーしますapplicationId.ymlapplicationIdアプリケーションの値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およびAutoUpdateModev%vタグの形式を記述します)。



基本的なファイルチェックにfdroidは、F-Droid Serverリポジトリのユーティリティ、その依存関係、および変数が必要です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


最初の2つのコマンドは構文をチェックし、3番目のコマンドはアプリケーションをビルドします。出口にAPKが表示されますunsigned/grmasa.com.open_light_1.apk



念のため、これを実行しfdroid checkupdates grmasa.com.open_lightて更新を確認しfdroid rewritemeta grmasa.com.open_light、ファイルにメタデータを正しく再入力してから、アセンブリを再確認できます。



ほぼハッピーエンド



これで、GitlabCIパイプラインをコミットしてチェックアウトできます。それ私にとってすべて終わりましマージリクエスト



に記入して確認し、元のアプリの作成者に通知するように依頼しました。作者が2週間以上私を無視した場合、メタデータ内のリンクをフォークに書き換えるだけで、受け入れられます。 これで、特別なトロイの木馬の電話を邪魔にならないようにすることができます。そして、私は彼らとのLANを禁止することによってさえ逆の方法でインターネットからそれら制御する機会さえあります 悲しいことに、タイトルのイラストにはいくつかの真実があります。2番目のステップでアプリケーションに不快なバグが見つかりました



画像







ウィザード:検出されたランプのリストから、ほとんどの場合、選択したランプは追加されません。このため、ランプはメインリストにあります。この問題を回避するために、私はランプを1つずつアプリケーションに配置しました。うまくいけば、いつか私は問題が何であるかを理解するか、別のアプリケーションをパッケージ化するでしょう。










All Articles