「Flutter/開発環境構築」の版間の差分
(→androidxの対応) |
(→iosのbundleId変更) |
||
行53: | 行53: | ||
*ios/Runner.xcodeprojを開いてbundleIdを変更する | *ios/Runner.xcodeprojを開いてbundleIdを変更する | ||
*podを使っていれば、コンソールでiosの下で、"pod update"を実行後ios/Runner.xcworkspaceを開いてbundleIdを変更する | *podを使っていれば、コンソールでiosの下で、"pod update"を実行後ios/Runner.xcworkspaceを開いてbundleIdを変更する | ||
+ | |||
+ | ==iosで以下エラーが出るとき== | ||
+ | flutter clang: error: linker command failed with exit code 1 (use -v to see invocation) | ||
+ | |||
+ | $ flutter clean | ||
+ | |||
+ | 参考:https://stackoverflow.com/questions/49612211/codesign-error-with-flutter-on-ios | ||
==androidのkeystore付きapk作成== | ==androidのkeystore付きapk作成== |
2019年11月13日 (水) 18:07時点における版
目次
- 1 AndroidStudioのインストール
- 2 AndroidStudioのプラグインインストール
- 3 プロジェクト作成
- 4 ios実行準備
- 5 android・ios実行
- 6 androidのapk作成&インストール
- 7 iosのipaファイル作成&インストール
- 8 androidパッケージ名変更
- 9 iosのbundleId変更
- 10 iosで以下エラーが出るとき
- 11 androidのkeystore付きapk作成
- 12 Androidで64 ビット要件に準拠していませんが表示された場合
- 13 Androidのversion記述場所
- 14 公式androidの64bit対応方法
- 15 androidのaab対応
- 16 androidxの対応
AndroidStudioのインストール
https://developer.android.com/studio/install?hl=ja
AndroidStudioのプラグインインストール
AndroidStudio/Preference/PluginsからFlutter、Dartを検索してインストール
プロジェクト作成
File/New Flutter Project がFile/New Projectの下に表示されるはずなので、そこから作成。
"New Flutter Project"が出ない場合は以下コマンドでプロジェクトを作ってAndroidStudioで開けば良い。
flutter create my_app cd my_app flutter run
ios実行準備
xcode-select --install brew update sudo gem install cocoapods sudo gem install -n /usr/local/bin cocoapods brew install --HEAD usbmuxd brew link usbmuxd brew install --HEAD libimobiledevice brew install ideviceinstaller brew install ios-deploy
android・ios実行
- 上部中央に実行ボタンがあるので、そこから実行できる。
- 接続したandroid・iPhoneの端末が表示される
- 基本hotreloadで2秒で更新が反映される。
androidのapk作成&インストール
flutter build apk flutter install #これはアンインストール後にインストールされるので直で実行した端末のprefなどは消える。
↑はリリースビルドで、リリースビルドのときはデバッグビルド(1秒程度)と比べて起動速度が速い。
build/app/outputs/apk/release/app-release.apk
iosのipaファイル作成&インストール
flutter build ios flutter install #これはアンインストール後にインストールされるので直で実行した端末のprefなどは消える。
androidパッケージ名変更
- android/app/src/main/AndroidManifest.xml
- android/app/build.gradle
- android/app/src/profile/AndroidManifest.xml
- android/app/src/debug/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example1.hoge">
- android/app/src/main/com/example1/hoge/MainActivity.java
package com.example1.hoge;
2箇所変更とMainActivity.javaのdir変更
iosのbundleId変更
- ios/Runner.xcodeprojを開いてbundleIdを変更する
- podを使っていれば、コンソールでiosの下で、"pod update"を実行後ios/Runner.xcworkspaceを開いてbundleIdを変更する
iosで以下エラーが出るとき
flutter clang: error: linker command failed with exit code 1 (use -v to see invocation)
$ flutter clean
参考:https://stackoverflow.com/questions/49612211/codesign-error-with-flutter-on-ios
androidのkeystore付きapk作成
- keystoreを作っておく
- android/key.properties を作成
storePassword=パスを入れる keyPassword=パスを入れる keyAlias=key storeFile=keystoreのパスを入れる・・・key.jks
- android/app/build.gradle を追加する
+def keystorePropertiesFile = rootProject.file("key.properties") +def keystoreProperties = new Properties() +keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android {
- android/app/build.gradle の部分を修正
-buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } -} +signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } +} +buildTypes { + release { + signingConfig signingConfigs.release + } +}
参考:https://qiita.com/rkowase/items/f1012ef0738791dd6084
Androidで64 ビット要件に準拠していませんが表示された場合
このリリースは Google Play の 64 ビット要件に準拠していません
flutter build apk --release --target-platform=android-arm64
もしくは、
build.gradle
buildTypes { release { ndk{ abiFilters "x86", "arm64-v8a", "android-arm64" } } }
参考:https://github.com/flutter/flutter/issues/18494
ビルドは成功するが起動時に落ちてcouldn't find "libflutter.so"エラーが出る場合
上の項目のndkにabiFiltersが追加されてるかを確認
$ flutter build apk --release
releaseをつけてapkを作成する
abiFiltersで指定したものの確認
$ flutter build apk --release
apkをunzipで解凍して確認
unzip build/app/outputs/apk/release/app-release.apk ls lib/arm64-v8a/libflutter.so ls lib/armeabi-v7a/libflutter.so
参考:https://qiita.com/mkosuke/items/afa40c09078285034799
Androidのversion記述場所
pubspec.yaml
version: 1.0.1+2
$ flutter build apk
以下ファイルが以下の通り出力されればよい。
android/local.properties
flutter.versionName=1.0.1 flutter.versionCode=2
公式androidの64bit対応方法
https://developer.android.com/distribute/best-practices/develop/64-bit
64bit対応済み判定
- androidStudioでBuild/ApkAnalyzeでapkファイルを指定
- libの下に以下dirがあれば良い。
arm64-v8a x86_64
"このリリースは Google Play の 64 ビット要件に準拠していません"が出る場合
flutter upgrade flutter --version
Flutterのバージョンを1.7以上へ
https://algorithm.joho.info/flutter/flutter-erroe-google-play-64bit/
androidのaab対応
flutterの1.7でaab対応
flutter upgrade flutter --version
apkからappbundleにするだけ
flutter build apk --release
↓
flutter build appbundle --release
aabの出力先は build/app/outputs/bundle/release/app.aab
androidxの対応
build時に以下のような警告が出る。
[!] Your app isn't using AndroidX. To avoid potential build failures, you can quickly migrate your app by following the steps on https://goo.gl/CP92wY.
pubspec.yamlの一番下のflutter:の下に追加
flutter: module: androidX: true androidPackage: com.example.hogehoge iosBundleIdentifier: com.example.hogehoge
buildしてみたが、やっぱり警告は出る・・・。
以下でandroidx対応のプロジェクトは作れるようなので、差分を追う良いかも。
flutter create --androidx -t module my_flutter_androidx
↑これandroidx対応かどうかは怪しい・・(調べてない。