Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
cch-robo
PDF, PPTX
3,142 views
Before lunch オプションを使って Flutterでstaging/release環境を切り替える
Flutter Meetup Tokyo #4 発表資料 擬似的なflavor指定による、Flutterでのサーバ接続先や google-service.json などの切替についての資料です。
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 35
2
/ 35
3
/ 35
4
/ 35
5
/ 35
6
/ 35
7
/ 35
8
/ 35
9
/ 35
10
/ 35
11
/ 35
12
/ 35
13
/ 35
14
/ 35
15
/ 35
16
/ 35
17
/ 35
18
/ 35
19
/ 35
20
/ 35
21
/ 35
22
/ 35
23
/ 35
24
/ 35
25
/ 35
26
/ 35
27
/ 35
28
/ 35
29
/ 35
30
/ 35
31
/ 35
32
/ 35
33
/ 35
34
/ 35
35
/ 35
More Related Content
PDF
Qt creatorでremote_debug
by
Kazuo Asano (@kazuo_asa)
PDF
Jetson x Azure ハンズオン DeepStream With Azure IoT
by
Deep Learning Lab(ディープラーニング・ラボ)
PDF
5分で分かるgitのrefspec
by
ikdysfm
PDF
Kotlinミニアンチパターン
by
Recruit Lifestyle Co., Ltd.
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
by
Takahiro YAMADA
PDF
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
by
Hidari Ikw
PPTX
GitLab から GitLab に移行したときの思い出
by
富士通クラウドテクノロジーズ株式会社
PDF
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
by
モノビット エンジン
Qt creatorでremote_debug
by
Kazuo Asano (@kazuo_asa)
Jetson x Azure ハンズオン DeepStream With Azure IoT
by
Deep Learning Lab(ディープラーニング・ラボ)
5分で分かるgitのrefspec
by
ikdysfm
Kotlinミニアンチパターン
by
Recruit Lifestyle Co., Ltd.
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
by
Takahiro YAMADA
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
by
Hidari Ikw
GitLab から GitLab に移行したときの思い出
by
富士通クラウドテクノロジーズ株式会社
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
by
モノビット エンジン
What's hot
PDF
階層的決定性ウォレットを理解しよう
by
bitbank, Inc. Tokyo, Japan
PDF
Windows Server 2019 で Container を使ってみる
by
Kazuki Takai
PDF
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
by
TylerShukert
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
by
Preferred Networks
PDF
OpenID ConnectとAndroidアプリのログインサイクル
by
Masaru Kurahayashi
PDF
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
by
学 松崎
PPTX
Spring Cloud Gateway on Kubernetes
by
Takeshi Ogawa
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
DockerとPodmanの比較
by
Akihiro Suda
PDF
Hybrid Public Key Encryption (HPKE)
by
Jun Kurihara
PDF
Dart / Flutter コードファイルジェネレート入門
by
cch-robo
PDF
Linux女子部 systemd徹底入門
by
Etsuji Nakai
PDF
Hyper-V を Windows PowerShell から管理する
by
junichi anno
PDF
【BS2】.NET 6 最新アップデート
by
日本マイクロソフト株式会社
PDF
PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2
by
Masahiko Jinno
PPT
Unix command-line tools
by
Eric Wilson
PDF
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
by
KLab Inc. / Tech
PDF
Dockerイメージ管理の内部構造
by
Etsuji Nakai
PPTX
FRESH LIVEへのSRT導入
by
Tomohiro Matsuzawa
PDF
#ljstudy KVM勉強会
by
Etsuji Nakai
階層的決定性ウォレットを理解しよう
by
bitbank, Inc. Tokyo, Japan
Windows Server 2019 で Container を使ってみる
by
Kazuki Takai
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
by
TylerShukert
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
by
Preferred Networks
OpenID ConnectとAndroidアプリのログインサイクル
by
Masaru Kurahayashi
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
by
学 松崎
Spring Cloud Gateway on Kubernetes
by
Takeshi Ogawa
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
DockerとPodmanの比較
by
Akihiro Suda
Hybrid Public Key Encryption (HPKE)
by
Jun Kurihara
Dart / Flutter コードファイルジェネレート入門
by
cch-robo
Linux女子部 systemd徹底入門
by
Etsuji Nakai
Hyper-V を Windows PowerShell から管理する
by
junichi anno
【BS2】.NET 6 最新アップデート
by
日本マイクロソフト株式会社
PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2
by
Masahiko Jinno
Unix command-line tools
by
Eric Wilson
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
by
KLab Inc. / Tech
Dockerイメージ管理の内部構造
by
Etsuji Nakai
FRESH LIVEへのSRT導入
by
Tomohiro Matsuzawa
#ljstudy KVM勉強会
by
Etsuji Nakai
Similar to Before lunch オプションを使って Flutterでstaging/release環境を切り替える
PDF
Flutterやってみよう
by
Ryuto Yasugi
PDF
つ部 Android Studio 勉強会 12/7
by
Hikaru Wada
PDF
超高速でflutterアプリをビルドする
by
ssuser34abd0
PPTX
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
by
NTT DATA Technology & Innovation
PPTX
Flutter (フラッター)
by
fujita noriko
PDF
FlutterでAndroid/iOS両対応のアプリ開発
by
najeira
PDF
バージョンアップに負けないためのプラクティス
by
Yuji Tokuda
PDF
Android App Development with Gradle & Android Studio
by
Soichiro Kashima
Flutterやってみよう
by
Ryuto Yasugi
つ部 Android Studio 勉強会 12/7
by
Hikaru Wada
超高速でflutterアプリをビルドする
by
ssuser34abd0
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
by
NTT DATA Technology & Innovation
Flutter (フラッター)
by
fujita noriko
FlutterでAndroid/iOS両対応のアプリ開発
by
najeira
バージョンアップに負けないためのプラクティス
by
Yuji Tokuda
Android App Development with Gradle & Android Studio
by
Soichiro Kashima
More from cch-robo
PDF
Flutter_Forward_Extended_Kyoto-Keynote_Summary
by
cch-robo
PDF
go_router が隠してくれるもの
by
cch-robo
PDF
Introduction_on_designing_test_in_flutter
by
cch-robo
PDF
Google I/O 2021 Flutter 全体報告
by
cch-robo
PDF
フラッター開発におけるシークレット情報取扱考察
by
cch-robo
PDF
Flutterを体験してみませんか
by
cch-robo
PDF
Dart言語の進化状況
by
cch-robo
PDF
明示的アニメで、Flutterアニメーション入門
by
cch-robo
PDF
DartPad+CodePenで、Flutterを体験してみよう
by
cch-robo
PDF
Dartでサーバレスサービス
by
cch-robo
PDF
Pin-point rebuildable and non-rebuild custom widget
by
cch-robo
PDF
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
by
cch-robo
PDF
Flutter のリアクティブ戦略 set state 〜 redux まで
by
cch-robo
PDF
Android lint-srp-practice
by
cch-robo
PDF
Loose and fluffy_ddd_intro
by
cch-robo
PDF
Firebase Test Lab 無料枠を使ってみました。
by
cch-robo
PDF
ZTE OPEN を日本語化(バージョンアップ)してみる
by
cch-robo
PDF
FirefoxOSで学ぶJavaScript作法
by
cch-robo
Flutter_Forward_Extended_Kyoto-Keynote_Summary
by
cch-robo
go_router が隠してくれるもの
by
cch-robo
Introduction_on_designing_test_in_flutter
by
cch-robo
Google I/O 2021 Flutter 全体報告
by
cch-robo
フラッター開発におけるシークレット情報取扱考察
by
cch-robo
Flutterを体験してみませんか
by
cch-robo
Dart言語の進化状況
by
cch-robo
明示的アニメで、Flutterアニメーション入門
by
cch-robo
DartPad+CodePenで、Flutterを体験してみよう
by
cch-robo
Dartでサーバレスサービス
by
cch-robo
Pin-point rebuildable and non-rebuild custom widget
by
cch-robo
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
by
cch-robo
Flutter のリアクティブ戦略 set state 〜 redux まで
by
cch-robo
Android lint-srp-practice
by
cch-robo
Loose and fluffy_ddd_intro
by
cch-robo
Firebase Test Lab 無料枠を使ってみました。
by
cch-robo
ZTE OPEN を日本語化(バージョンアップ)してみる
by
cch-robo
FirefoxOSで学ぶJavaScript作法
by
cch-robo
Before lunch オプションを使って Flutterでstaging/release環境を切り替える
1.
Before launch オプションを使って Flutterでstaging/release環境を 切り替える Flutter
Meetup Tokyo #4 1
2.
自己紹介 名前 robo (兼高理恵) 好きなもの モバイル端末 おしごと アプリの設計から実装まで 2
3.
このLT内容は、 Flutter Japan User
Group Tokyo #1 で発表された、 セッションの番外編です。 3 Flavor of Flutter Flutterでstaging/production環境を切替える https://speakerdeck.com/fullfool/productionhuan-jing-woqie-ti-eru
4.
はじめに モバイルアプリ開発では、 テストやサーバサイド開発との連携の兼ね合いで、ビルド構成を設け、 接続先の開発/本番サーバやアプリの署名証明書の切替えだけでなく、 デバッグ版/製品版を区別するため、文言や見た目も変えています。 4 ビルド構成 Android では、Debug/Release などの
Build Type や、 Develop/Production などの Build Flavor を合わせて Build Variants と呼んでいる。 Android Studio > Configure build variants https://developer.android.com/studio/build/build-variants?hl=ja
5.
ビルド構成の反映手法は必須 実装内での環境チェックと条件分岐による挙動の切替えもありますが、 ネイティブ開発環境では、 ビルド構成によるリソースの切り替え機構を使って、 実装コードに余計な処理を入れずに挙動変更ができます。 Flutter でもビルド構成の反映手法は必須でしょう。 Flutter Meetup
Tokyo #1 では、 flavorとDart entry-pointを使ったビルド構成の反映機構が紹介されました。 本LTは、IntelliJ IDEA の Before launch オプションについての紹介と実験です。 5
6.
6 Flutter での ビルド構成指定方法の概要
7.
Flutter でのビルド構成指定方法 1. flutter
コマンドの flavor オプション XcodeやGradleのネイティブビルド構成に flavor パラメータを与えます。 2. flutter コマンドの target オプション main 関数を持つ Dartファイルを target で指定する。 アプリを起動する Dart entry-point (.dartファイル)を指定します。 3. IntelliJ IDEA の Before launch オプション ビルド前に実行する shell script や ant, gradle タスクを指定します。 Android Studio も IntelliJ IDEA 系なので利用できます。 7
8.
1. flutter コマンドの
flavor オプション flavor オプションを使うには、 iOS / Android ともにネィティブのビルド環境(Xcode / Gradle)での 指定 flavor への対応追加が必要です。 ● iOS 1. Xcode のメニューから Product > Scheme > New Scheme でflavor指定の Scheme を新規作成 2. PROJECT Runner > Configurations で、Debug/Releaseと Scheme の組み合わせNameを追加 Debug / Release と Scheme の組み合わせでビルドできるようにします。 例: Schemeがdevの場合は、Debug-dev を指定すると、 $ flutter build ios --debug --flavor dev や $ flutter run --flavor dev コマンドが使えるようになる。 ● Android 1. app/build.gradle に productFlavors {} ブロックを追加し、その中に flavor指定のブロックを追加 8
9.
1. flutter コマンドの
flavor オプション ● 留意事項 iOS や Android のネイティブビルドシステムにパラメータを与えるため、 Xcode での Scheme や build.gradle での productFlavors ブロックに、 flavor 指定に対応する設定をしていないとビルドすることができません。 このためプラットフォーム別の ネイティブビルドシステムへの理解が必要になります。 反面、ネイティブビルドシステムの知識があれば応用はかなり広がります。 9
10.
2. flutter コマンドの
target オプション Dart entry-point と呼ばれる、 Flutter アプリを起動する main関数を持つ dart ファイルが指定できます。 debug や staging 専用リソースを設定する Dart entry-poit を設けることで、 Dartコードでの柔軟な挙動切り替えを行なわせることができます。 flutter コマンドでのオプション指定 $ flutter run -t Dartファイルパス $ flutter run --target Dartファイルパス 例)$ flutter run -t lib/main-dev.dart 10
11.
2. flutter コマンドの
target オプション ● 留意事項 iOS と Android で両者共通の論理的挙動を与えられますが、 ネイティブビルド構成やリソースに影響を与えるものではありません。 このため、挙動の変更にネイティブ実装のリソースや設定切り替えが 必要なものには対処できません。 例)develop と release での、 Firebaseの構成ファイル(google-servie.json/GoogleService-info.plist)の切り替えや、 Facebook 認証ライブラリのようなネイティブコードへの登録 ID付与が必要なもの。 11
12.
flavor と target
の詳細について flavor と target オプションについての IntelliJ IDEA 系でのGUI設定や、 Xcode での操作や build.gradle でのコードおよび応用実装の詳細については、 Flutter Meetup Tokyo #1 で説明されていますので、ここでは紹介いたしません。 詳しくはスライドを参照ください。 Flutterでstaging/production環境を切替える https://speakerdeck.com/fullfool/productionhuan-jing-woqie-ti-eru Flutter Meetup 資料ではありませんが、こちらも参考になります。 flutterで本番/ステージング/開発を切り替える (2018/07/11) https://qiita.com/ko2ic/items/53f97bb7c28632268b5a 12
13.
3. IntelliJ IDEA
の Before launch オプション Before lunch は、 ビルド前に実行する shell script や ant, gradle タスクを指定するオプションです。 flavor や target と同じく IntelliJ IDEA 系の開発環境の Run / Debug Configurations ダイアログで設定できるオプションですが、 flavor や target が flutter コマンドのビルド構成オプションであるのに対し、 Before lunch は、IntelliJ IDEA が提供するビルド構成オプションです。 イメージ的には、 flutter run コマンドの実行前に、任意指定の処理を行わせるものです。 13
14.
14 Run/Debug Configurations ダイアログは、 ツールバーの
Run > Edit Configurations… から開きます。 Dart entrypoint で target、Build flavorで flavor、 Before launch でビルド前に行う処置の設定ができます。
15.
15 Before lunch オプションの設定手順
16.
Before lunch を使えばリソースの切替も可能です Before
lunch では、dart スクリプト(コマンド) の実行もできます。 dart スクリプトの引数に、flavor 値を擬似的に指定すれば、 flutter アプリのビルドと起動の前に、パラメータ指定に従った リソースファイルのコピーなどを行わせることも可能になります。 つまり Before lunch と flavor 疑似指定を使えば、 サーバ接続先などのプロパティリソースの切替も可能になります。 実現案のサンプルについては後として、 先ずは Before lunch での debug や staging のビルド設定(Configurations)の 新設手順を説明します。 16
17.
Before launch オプションの設定手順 17 Copy
Configuration アイコンをクリックして 元々あった main.dart の設定をコピーした Configuration を追加 + アイコンで 新規追加する場合は Flutter を選択します。 Configuration 名には、 疑似flavor に使う debug, staging などを指定 Run: ウィンドウのタブに使われるので、 flavor を明示する名前にします。 サンプルでは、debug や staging としました。
18.
Before launch オプションの設定手順 18 +アイコンをクリックして Add
New Configuration から Run External tool を選択 External Tools ダイアログが開きます
19.
Before launch オプションの設定手順 19 +アイコンをクリックして Create
Tool ダイアログを開きます。
20.
Before launch オプションの設定手順 20 ・Nameは、Run
ウィンドウのタブに使われるので、 flavor を明示する名前を付けます。 サンプルでは、flavor_debug や flavor_staging としました。 ・Description は、適当でも構いません。 ・Program は、dart を指定します。 ・Arguments は、実行スクリプトと擬似flavorを指定 第一引数に実行させる dart コマンドプログラム ⇒ main関数を持つ .dart ファイルを指定します。 第二引数に、疑似flavorパラメータを指定します。 サンプルでは、PreBuildFlavor.dart と debug や staging です。 ・Working directory は、プロジェクトルートになるよう 右端の Insert Macro…から $ProjectFileDir$ を選択 …設定が完了しましたら、 OK で設定を保管します。
21.
Before launch オプションの設定手順 21 Create
Tool が登録されたので、 External Tools に作成した設定が 追加されています。 OK で External Tools を閉じると、 Before lunch オプションに External tool 設定が 追加されています。
22.
Before launch オプションの設定手順 22 各
flavore の Configuration ごとに 手順を繰り返せばツールバーから Run を選択できるようになります 補足 Release ビルドにしたい場合は、 Run/Debug Configurations ダイアログで、 Additional arguments に --release オプションの 追加が必要です。 Share をチェックすると、 Run/Debug Configurations の設定がビルド構成ごとに .idea/runConfigurationsディレクトリにxmlファイルで保管され、 チームで共有することができます。
23.
IntelliJ IDEA 設定マニュアル
(邦訳あり) Edit Configurations … から Run / Debug Configurations ダイアログ の詳細 Creating and Editing Run/Debug Configurations https://www.jetbrains.com/help/idea/creating-and-editing-run-debug-configurations.html https://pleiades.io/help/idea/creating-and-editing-run-debug-configurations.html Run/Debug Configurations Dialog https://www.jetbrains.com/help/idea/run-debug-configurations-dialog.html https://pleiades.io/help/idea/run-debug-configurations-dialog.html External Tools https://www.jetbrains.com/help/idea/settings-tools-external-tools.html https://pleiades.io/help/idea/settings-tools-external-tools.html Create/Edit/Copy Tool Dialog https://www.jetbrains.com/help/idea/settings-tools-create-edit-copy-tool-dialog.html https://pleiades.io/help/idea/settings-tools-create-edit-copy-tool-dialog.html 【参考】Android Studio > Create and edit run/debug configurations https://developer.android.com/studio/run/rundebugconfig?hl=ja 23
24.
IntelliJ IDEA 設定マニュアル
(邦訳あり) Run / Debug Configurations と Before lunch / Extra Tools の設定保管先 Tuning IntelliJ IDEA https://www.jetbrains.com/help/idea/tuning-the-ide.html https://pleiades.io/help/idea/tuning-the-ide.html Run/Debug Configuration で Share をチェックした場合、 Run/Debug Configuration設定は、.idea/runConfigurations に 構成名.xml (例:debug.xml) で保管され、 Before lunch / Extra Tools 設定は、各プラットフォームの 構成ディレクトリに保管されます。 各プラットフォームの 構成ディレクトリ (Configuration directory) ● Windows : %HOMEPATH%.<product><version>config ● MacOS : ~/Library/Preferences/<product><version> ● Linux : ~/.<product><version>/config 例)~/Library/Preferences/IdeaIC2018.1/tools/External Tools.xml (flavor_debugなどが要素として保管される) 【注意】構成ディレクトリはチーム共有できません。 このため Before lunch / Extra Tools は、各開発環境ごとに設定する必要があります。 24
25.
Run/Debug Configurationsダイアログについて 書籍 IntelliJ
IDEA ハンズオン P.149 コラム「プロジェクトに関する設定箇所」より ● Run / Debug Configurations ダイアログ 「アプリケーションを実行する/テストを実行する」といった プロジェクトの実行構成を設定します。 (Run メニューの Edit Configurations … で開く Run / Debug Configurations ダイアログで設定します)。 実行構成は、Project ごとに任意の種類/個数を設定できます。 書籍 IntelliJ IDEA ハンズオン http://gihyo.jp/book/2017/978-4-7741-9383-0 25 説明の都合上、 Run/Debug Configuration を ビルド構成と呼びましたが、 本当は、実行構成です。
26.
26 Before lunch オプションを使った 疑似flavorによるリソース切替ライブラリ
27.
ライブラリの example について コンセプトライブラリの
example では、 Run メニューから debug/staging/release の疑似flavor実行構成を選択すると、 アプリ名と画面タイトル名が選択された疑似flavorに従って切り替わります。 実装的には、 flavor 指定ごとにAndroid のStringリソース(string.xml)を上書きコピーし、 flavor 指定ごとにプロパティファイルを切り替えてタイトル値を取得させて 疑似flavor挙動を実現しています。 コンセプトライブラリ cch-robo/flutter_flavor_substitute は、公開しています。 https://github.com/cch-robo/flutter_flavor_substitute 27 サンプルを実行するには、 debug, staging, release の疑似flavor実行構成を再設定してください。
28.
Run > debug
を実行 28
29.
Run > staging
を実行 29 何故か「デバッグ」に なっている Before lunch による、 ビルド前のリソース切り替えは、 安易な発想だったのでしょうか。
30.
Run > staging
を実行 30 実は、リソースが更新される前に アプリが起動したためなので Hot Restart をかけます。
31.
コンセプトライブラリのキーポイント サンプルのキーポイントは、 ビルド前に実行されれるピュアな Dart プログラムに渡される
flavor指定が アプリ内で動作するFlutter プログラムとの間で参照できるように、 flavor指定のプロパティファイルへの書き込みと、 プロパティファイルのアセット化、およびアセット読取が重要キーです。 そのほかのキーポイントは、以下のようになっています。 ● flavorディレクトリの新設 ● プロパティファイル機能の提供 ● プロパティファイルのアセットリソース化 ● flavorリソースからネイティブへの上書きコピー機能の提供 31
32.
● flavorディレクトリの新設 プロジェクトルートに flavorディレクトリを設け、 サブディレクトリに各flavorごとのリソースを配置する。 ●
プロパティファイル機能の提供 1行が Key=Value フォーマットとするプロパティファイルから、 指定KeyのプロパティValueを取得するピュアDartクラスを提供する。 プロパティファイルは、flavor ディレクトリに配置する。 ● プロパティファイルのアセットリソース化 pubspec.yaml の assets: にプロパティファイルを指定して、 Befor lunch DartプログラムとFlutterアプリ内からアクセス可能にする。 ● flavorリソースからネイティブへの上書きコピー機能の提供 Before lunch Dartプログラムで、flavorディレクトリ内のリソースを 指定ネイティブプラットフォーム先に上書きコピーできるようにする。 32
33.
exampleは、凝ったものでありませんしリソースを強制上書きするなど、 正攻法とは言えない実装であるため、特にプログラム的な説明はしません。 ● exampleルートの prebuild_main.dart
(ピュアなDartプログラム) flavorプロパティ作成、疑似 flavorごとにリソース元を切り替えリソース先に上書きコピーする。 ● lib/main.dart (FlavorSubsituteの初期化と globalプロパティの利用) ● android/app/src/main/AndroidManifest.xml (@app_name利用への変更) ● android/app/build.gradle (flavorApplicationIdプロパティ参照への変更) ● lib/src/flavor/base_flavor.dart (ピュアなDartからでもインポート可能な基盤) ● lib/src/flavor/prebuild_flavor.dart (ビルド前用上書きコピーの提供/ピュアDart) ● lib/src/flavor/application_flavor.dart (アプリ用プロパティの提供) example実装のコードリード・キーポイント 33
34.
まとめ 正攻法とは言えませんが、 IntelliJ IDEA 系
IDE の Before launch オプションを使って、 擬似的にflavor指定を行うことや、 疑似flavor指定によるアプリ挙動の切り替えに挑戦してみました。 ですがアプリ署名キーを切り替えるにしても、 build.gradle への修正が必要など、まだまだ改良や考慮の余地が山積みです。 今後の Flutter SDK や IntelliJ 系のプラグインの改良に期待したいと思います。 34
35.
35 ご清聴、 ありがとうございました。
Download