Android Linphone Ver 6.0.5 のビルド(Firebaseプッシュ通知対応)

公式の Linphone アプリは、linphone.org ドメインと Google または Apple が提供するプッシュ通知サービス(Firebase Cloud Messaging / Apple Push Notification Service)と紐付けられています。そのため、linphone.org 以外のドメインを使って Linphone を運用する場合、このプッシュ通知サービスはデフォルトでは利用できません

独自ドメインを使用して Flexisip サーバを構築し、同様のプッシュ通知機能を実現するには、以下の2つの対応が必要です:

  1. Flexisip の設定変更
    Flexisip サーバに、Firebase サービスへアクセスするための認証情報(サービスアカウントの JSON キーファイル)を指定します。これにより、サーバは FCM 経由でクライアントへ通知を送信できるようになります。
    秘密鍵ファイル:project-name-firebase-adminsdk-xxxxx-xxxxxxx.json

  2. Linphone アプリのカスタムビルド
    Linphone クライアント側も、独自ドメインに対応させるためにビルドし直す必要があります。Firebase プロジェクトに独自ドメイン対応の Android アプリを登録し、そのアプリのパッケージ名やプロジェクトID、Sender ID(プロジェクト番号)を Linphone に組み込みます。
    構成ファイル:google-services.json

必要なファイルの取得は以下参照願います。

これにより、Flexisip が Firebase を介して独自ドメイン用の Linphone アプリへプッシュ通知を正しく配信できるようになります。


ビルド環境・ツール

ホストOS:Ubuntu24.04

ビルドツール:


追加ファイル

Android SDK ツールのファイルパスを設定

linphone-android/local.properties

sdk.dir=/home/Your_User_Name/Android/Sdk

リリース版に必要な署名ファイルを作成

linphone-android/app/bc-android.keystore

$ keytool -genkey -v -keystore bc-android.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias

入替えファイル

ダウンロードした構成ファイルの入替え

linphone-android/app/google-services.json

変更ファイル

Firebaseで指定したアプリのパッケージ名へ変更。
注) この名称については、Firebaseでアプリ作成時にパッケージ名をorg.linphoneとすれば、この手間を省けます。

linphone-android/app/build.gradle.kts

val packageName = "com.ficusonline.linphone"

署名ファイル作成時に入力したパスワードなどを入力

linphone-android/keystore.properties

storePassword=xxxxx
keyPassword=xxxxx
keyAlias=my-key-alias
storeFile=bc-android.keystore

ビルド

プロジェクトディレクトリまたはVSCodeのターミナルから直接コマンドを入力するか、Gradleのエクステンション画面からコマンドを入力

ターミナルの場合

$ ./gradlew assembleDebug
$ ./gradlew installDebug
$ ./gradlew assembleRelease

APKファイルは app/build/outputs/apk ... に作成されます。

Gradleエクステンションの場合


GRADLEPROJECTSの右側に表示されるターミナルアイコンをクリックすると右側にコマンド入力欄が表示されます。ここに./gradlewを省略したオプションのみを入力して下さい。

例)assembleDebug と入力してリターン

各ビルドオプションについては以下を参照して下さい。

GitHub - BelledonneCommunications/linphone-android: Linphone.org mirror for linphone-android (https://gitlab.linphone.org/BC/public/linphone-android)