flutter build apk --release --flavor pro
使用してapkファイルを作成しますが、arm64-v8aにはlibflutter.sofile.soアプリの起動が含まれていません。
--target-platform=android-arm64
: flutter build apk --release --flavor pro --target-platform=android-arm64
を追加すると、apkファイルに含まれます。 ただし、32ビットCPUではアプリの起動に失敗します。
私は何ができますか、apkファイルは64と32のCPUで実行できます@ mravn-google
/System.err(15263): java.lang.UnsatisfiedLinkError: Couldn't load flutter from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.jianzhibao.ka.enterprise-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.jianzhibao.ka.enterprise-1, /vendor/lib, /system/lib]]]: findLibrary returned null
私は新しいプロジェクトを作成し、デバッグまたはリリースし、うまく機能します。 私のプロジェクトからの新しいプロジェクトとの違いは、サードパーティのso
ファイルを追加することです
問題はどこにありますか ?
AFAIK、現在、FlutterはリリースAPKで選択された1つのプラットフォームフォルダーにのみlibflutter.soを追加します。 私のために働いた回避策は、build.gradleに32ビットのみを実行させることでした(すべての64ビットライブラリ+ Intelを除く)
release {
...
ndk{
abiFilters "armeabi-v7a"
}
}
cc @ Hixie
@swavkulinskiどのようにapksをプレイストアにリリースしますか?
同じ問題がありますが、flutter.soは「armeabi-v7aフォルダー」に含まれていません。
x86およびarmeabi-v7a用のサードパーティライブラリのみがありますが、arm64はありません。
「armeabi-v7awith
ndk {
abiFilters "armeabi-v7a" //動作しません "armeabi"、 "x86"、
}
@ mravn-googleがandroid-armに提案するようにtarget-platformとして設定します。
アーチを指定せず、ライブラリを含まないAPK
ライブラリがあり、アームスペックがないAPK
アーチを指定してライブラリを含めるAPK
さらなるステップをデバッグする方法について何か提案はありますか?
@xxseabxx私は同じ問題を抱えています
同じ問題があります。32ビット用にビルドすると64ビットデバイスが除外されますが、それらで実行されます。 --target-platform android-arm64
指定して64用にビルドすると、64ビットデバイスでは機能しますが、32ビットデバイスではクラッシュします。 また、Googleは2019年にapkのアップロードを64ビットに制限します。
Flutterチーム、この基本的な問題を解決してください!
Flutterチーム、この基本的な問題を解決してください!
それで、フラッターは32ビットまたは64ビットのリリースapkのみをサポートでき、両方はサポートできないと言って間違っていますか?
ここで運がいいですか?
xxseabxxのコメントはうまくいくかもしれないと思いますが、私はそれを試していません...
私も同じ問題を抱えています。
すべての依存関係で、問題の原因となっているパッケージを少なくとも1つ分離し、それに応じてバグレポートを作成しました: https :
問題を特定するには、依存関係/プラグインごとに次のようにします。
1)空のフラッタープロジェクトを作成する
2)main.dartを次のように置き換えます
パッケージのサンプルコード(例:https://pub.dartlang.org/packages/flutter_html_view#-example-tab-)
3)それに応じてpubspec.yamlを更新します
4)実行
$ flutter build apk
作成したのはflutter_mlkitであることが判明しました。
32と64の両方のアーキテクチャをターゲットにできるようにしたいと思います。
同じ問題があります。 --target-platform = android-arm64は私には機能しますが、Googleが32ビットのプラグを抜くまで32ビットをサポートしたいと思います
Flutterチーム、この基本的な問題を解決してください!
多くのサードSDKが機能していないので、緊急だと思います
MapboxをAndroidアプリケーションに追加すると、これを再現できます。
私も同じ問題を抱えています。プロジェクトでbaiduMapを使用していますが、bebugモデルは問題なく、クラッシュをリリースします。
user flutter build apk --release --target-platform = android-arm64私の電話は問題ありませんが、32ビット電話がクラッシュします。Flutterチーム、この問題をできるだけ早く解決してください。
https://github.com/azihsoyn/flutter_mlkit/issues/36と同様に、私にとっては機能します。apkは32ビットと64ビットの両方の電話で実行できます。 @ peace2knowledge
これはリリースapkにとって非常に重要な問題になるはずです
この問題の回避策はありますか?
lib/armeabi-v7a/libflutter.so
から$<FLUTTER>/bin/cache/artifacts/engine/android-arm-release/flutter.jar
armeabi-v7a/libflutter.so
を$<project>/android/jniLibs/armeabi-v7a/
コピーします$<project>/android/app/build.gradle
を次のように変更します。android {
...
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
ndk {
abiFilters "arm"
}
}
debug {
ndk {
abiFilters "arm"
}
}
}
}
NDKの場合、64ビットツールチェーンにはminSdkVersion> = 21が必要です。
これは私をブロック解除しました(適切なminSdkVersionが設定されています):
minSdkVersion = 16
flutter build apk --release --target-platform=android-arm
flutter run --release --target-platform=android-arm
minSdkVersion = 21
flutter build apk --release --target-platform=android-arm64
flutter run --release --target-platform=android-arm64
すべてのabiFiltersを削除してください、それは私のために働きます。
@ zoechi @ Hixie穏やかなバンプ。 また、現在最も重要なユースケースである既存のアプリと統合しようとすると、これに遭遇します。
mindsdk = 21ですが、ターゲットプラットフォームはまだ更新されていません
@neiljaywarner優先順位を上げるには、最初のコメントを高く評価する方が効果的です。
- 抽出
lib/armeabi-v7a/libflutter.so
から$<FLUTTER>/bin/cache/artifacts/engine/android-arm-release/flutter.jar
- ファイル
armeabi-v7a/libflutter.so
を$<project>/android/jniLibs/armeabi-v7a/
コピーします$<project>/android/app/build.gradle
を次のように変更します。android { ... 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 ndk { abiFilters "arm" } } debug { ndk { abiFilters "arm" } } } }
これは私には機能しませんでした-libフォルダーがないAPKが生成されました(したがって、以前のapkの半分のサイズでした)。
また、一部の人が投稿した32ビットのみのソリューション(https://medium.com/flutterpub/flutter-app-couldnt-find-libflutter-so-c95ad81cbccdなど)を実装すると、 -パフォーマンスの高いアプリ。 特にSamsungS6とS9のあるテストでは、大きなリストで非常に遅いスクロールが見られます。
問題はarm64 libflutter.so
欠落だけではないと思います。
arm64用にビルドし、 libflutter.so
をコピーしてから、再ビルドして手動でarm64ライブラリをAPKに追加し、再調整して再署名することで、不足しているライブラリをAPKに追加してみました。
flutter build apk --target-platform=android-arm64
mkdir -p tmp/lib/arm64-v8a
cp build/app/intermediates/transforms/mergeJniLibs/release/0/lib/arm64-v8a/libflutter.so tmp/lib/arm64-v8a/
flutter build apk
cp build/app/outputs/apk/release/app-release.apk tmp/
cd tmp
aapt add app-release.apk lib/arm64-v8a/libflutter.so
zipalign 4 app-release.apk app-release-aligned.apk
apksigner sign --ks keystore.jks app-release-aligned.apk
結果のAPKには、armeabi-v7aとarm64-v8aの両方にlibflutter.soが含まれていますが、起動時に次のエラーでクラッシュします。
12-22 09:53:29.274 7457 7457 F flutter : [FATAL:flutter/runtime/dart_vm.cc(403)] Error while initializing the Dart VM: Snapshot not compatible with the current VM configuration: the snapshot requires 'product no-type_checks no-asserts no-error_on_bad_type sync_async reify_generic_functions arm-eabi softfp' but the VM has 'product no-type_checks no-asserts no-error_on_bad_type sync_async reify_generic_functions arm64-sysv'
アーチごとに個別のスナップショットアセットを出荷する必要があると思います。 今のところ、2つの別々のAPKを構築することが、私にとって有効な唯一のソリューションです。
これは、リリースがapkを適切に構築していないことを確認するためだけに、実際にフロントエンドをフラッターで作成することに時間を費やした後に遭遇するかなり厄介な問題です。
iOSを使い始めたら、同じ問題が発生しますか?
この問題は何時に解決できますか?
これは、gradleファイルが両方の適切なビットをすべてバンドルする方法を知らないというだけですか? @ jason-simmons @cbrackenは知っているかもしれませんか?
または@FaisalAbidかもしれませんか?
これは、gradleファイルが両方の適切なビットをすべてバンドルする方法を知らないというだけですか? @ jason-simmons @cbrackenは知っているかもしれませんか?
または@FaisalAbidかもしれませんか?
このコメントによると、正しいビットでは、libflutter.so以上のものを意味していると思います: https :
今のところ、唯一の解決策は、修正が行われるまで32ビットAPKをビルドすることだと思います。 ただし、32ビットでパフォーマンスの問題が発生していることに注意してください(リストが大きい場合はコードが最適ではありませんが)。
64ビットと32ビットのAPKを別々に作成し、両方をGoogleにアップロードすることは問題なく機能しています(正しいAPKを正しいデバイスに自動的に提供する処理を行います)。
abiFilters
をarmeabi-v7a
と--target-platform=android-arm
に設定して1つのビルドを実行し、そのAPKをアップロードしてから、 abiFilters
をarm64-v8a
設定して別のビルドを実行しますそして--target-platform=android-arm64
そしてそれもアップロードします。
また、APKごとに異なるバージョンコードを使用する必要があることに注意してください。そのため、DPIまたはAPIレベルの場合と同じように、バージョンコードに64ビットまたは32ビットであることを示すものを含めます。
現在、最良のオプションは、ターゲットプラットフォームから条件付きでabiFiltersを設定することです。
ndk {
if (project.hasProperty('target-platform') &&
project.property('target-platform') == 'android-arm64') {
abiFilters 'arm64-v8a'
} else {
abiFilters 'armeabi-v7a'
}
}
私が抱えている問題は、バージョンコードが異なる2つのapkをアップロードする必要があることです
これに対する本当の修正は、複数のターゲットプラットフォームでAndroidバンドルを構築できるようにすることです。 アプリバンドルは現在フラッターマスターにありますが、これで動作させることができませんでした
Playストアでは、8月1日から64ビットが必要になります。
8月1日以降もアプリを実行したい32ビットデバイスがまだあると仮定すると、32ビットと64ビットがリリースビルドに含まれていることを確認するにはどうすればよいですか?
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
_Google Playに公開する場合、32ビットバージョンに加えて64ビットバージョンを提供するには、ネイティブコードを含むすべての新しいアプリとアプリのアップデートが必要です。_
この要件は、現在、Flutterアプリで2つのAPK(1つは32ビットデバイス用、もう1つは64ビットデバイス用)を作成し、両方を同じリリースの一部としてアップロードするだけで簡単に満たすことができます。 Google Playは、適切なAPKを適切なデバイスに自動的に提供します。 私はこれをやっていて、それはうまくいきます。 私は他のコメント提供者に同意しますが、それは_理想的_ではありませんが、IMOは、ワークフローのこの部分を作成することは実際にはそれほど問題ではありません。
これが近い将来修正されることができれば素晴らしいでしょう。 マルチAPKアプローチは、他のAndroidプロジェクトと同様に、Flutterが複数の.soアーキテクチャバージョンでAPKをビルドするまでの一時的なソリューションにすぎません。
多くの手動処理(バージョンコード、ビルドシステム、自動化)が必要であり、Androidアプリバンドルは開発者の手動ビルド手順を軽減するはずでした。
現在、この問題は32ビットと64ビットのバージョンについてのみ言及していますが、x86、x64に加えて、中国の一部の開発者はまだmipsのサポートについて話し合っています。
箱から出して可能な限り最小のapkサイズで7つのAndroidアーキテクチャの多くをフラッターサポートするべきではありませんか?
https://proandroiddev.com/reducing-apk-size-by-using-abi-filters-and-apk-split-74a68a885f4e
@MarcelEdward必要がありますが、AndroidがApp Bundle(aab)を完全にサポートし、エンドユーザーがとにかく携帯電話用に最適化されたビルドをダウンロードすることを考えると、APKサイズは最も重要な側面ではありません。
プラットフォーム固有のAPKのサイズについては、可能な限り最適化/小さくする必要があります。
開発中は、ネイティブコードを変更するたびにフルサイズのAPKを再インストールするのは面倒な場合があります。 秘訣は、abifiltersを使用して、デバッグビルドをテスト電話のアーキテクチャに制限することです。 Flutterがホットリロードをサポートしていることを考えると、これが今のところ適切かどうかはわかりません。
https://github.com/flutter/flutter/issues/17829 aapアプリのバンドルについてですが、flutter buildapkでコンパイルすると32ビットしか見つかりません
したがって、richtを理解するときは、少なくとも32と64の両方をアップロードする2つの個別のバージョンを作成する必要があります。その後、アプリストローは奇跡的にaapを作成し、消費者が特定のアーキテクチャに最適化されたバージョンを取得できるようにします。
@MarcelEdwardPlayストアはアプリバンドルを作成しません。 デバイスアーキテクチャに基づいて、デバイスに適切なAPKを提供するだけです。 これは、アプリバンドルが登場するずっと前から、アーキテクチャだけでなく、画面サイズ/解像度、APIレベル、その他の差別化要因でもサポートされてきました。 これについて詳しくは、こちらをご覧ください。
ここでGoogleマップの13のバリエーションを見ると、この良い例を見ることができ
アプリバンドルを使用した場合、複数のAPKをアップロードするのではなく、バンドルを1回アップロードするだけで済みますが、PlayストアがさまざまなAPKバリアントを生成するため、最終結果は似ていますが、作業が少なくて済みます。あなたが自分自身を自動化するために。 (アプリバンドルは、動的にロードされる新しいモジュールもサポートしますが、それは別の話です。)
したがって、ここで必要な機能は、2つの--target-platform
引数を使用してflutter
flutter build
を実行し、 flutter
両方のアーキテクチャをAPKに自動的に配置できるようにすることです。
@Hixieは
電話の特徴はかなり低レベルです。私たちのアプリを使用する人々が持っているアーキテクチャの手がかりはありません。アーキテクチャが指定されていない場合、Flutterは32ビットをコンパイルするので、32ビットがすべてに適合すると思います。ストアは8月に64ビットを必要とするので、32ビットがすべてに適合し、64ビットが必要な場合、これら2つはリリースビルドに入る必要がありますか?
私は自分でAndroidスマートフォンを持っていないので、シミュレーターで動作する場合は動作すると思います。アプリのユーザーが別のことを言うまでは。
@ MarcelEdward232ビットと64ビットだけではありません。 最新のAndroidNDKでサポートされているアーキテクチャは4つあります。
現時点では、Flutterはデフォルトで、armeabi-v7a専用にコンパイルされたネイティブコードを含むAPKをビルドします。 これはarm64-v8aで正常に実行されますが、arm64-v8a用にネイティブにコンパイルされたものと比較するとパフォーマンスが低下します。 ただし、デバイスにバンドルされている場合は、x86またはx86_64のARMエミュレーターで実行されます。 x86 / x86_64デバイスにARMエミュレーターがない場合、デバイスはまったく実行されません。
繰り返しになりますが、8月の要件では、両方のアーキテクチャを含む1つのユニバーサルAPKまたはAABを作成する必要はありません。 作成する各リリースに、64ビットデバイスに適した(少なくとも)1つのAPKが含まれている必要があります。 複数のアーキテクチャをサポートする1つのユニバーサルAPK / AABを構築できるようにするためのFlutterの変更は、開発者のワークフローの観点からは素晴らしいことですが、このような改善の有無にかかわらず、この要件を満たすことができます。
追加のために編集:個人的には、アプリバンドルのファーストクラスのサポートがマルチアーチの状況を改善するための最良の方法だと思います。
appbundleは今後の解決策のように見えます...次のステップはこれだと思います: #29303
このバグを理解しているので、 flutter build
のデフォルトの出力形式として.aabに移行し、その.aabに32ビットと64ビットの両方のビルドを含めることと非常に関連しています。
https://developer.android.com/studio/projects/dynamic-delivery
私の理解では、この作業の一部はすでに進行中である可能性があります。 @dnfieldは知っているかもしれません。
/ cc @mklim
.aabが役立つようですが、実際には必要ない場合があります。 問題は、32ビットと64ビットの両方のアームバイナリをAPKに追加するのと同じくらい簡単ですか?
ええ、わかりました。 これは、ターゲットアーチのAOTスナップショットも含める必要がある可能性があるためです。 そして今、私たちはそれをアセットの下に置いています。アーキテクチャごとのバージョンをlibs
下に置いていません。 AOTスナップショットを動作する可能性のあるアーキテクチャ固有のlibsフォルダーに配置できる場合は、そうでない場合は、その理由で.aab形式を使用する必要があります。
とにかくこれを実行して、add2appユースケースの.AARの構築をサポートしたいと思います。 私はそれを突くでしょう。
ndk { if (project.hasProperty('target-platform') && project.property('target-platform') == 'android-arm64') { abiFilters 'arm64-v8a' } else { abiFilters 'armeabi-v7a' } }
これは、数日間のトラブルシューティングの後で私のために働きました
@AppleEducateによって投稿された機能しません。
リリースセクションに入れてください
これが私の解決策でした:
app gradle
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for armeabi-v7a and arm64-v8a.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
flutter build apk --release --target-platform=android-arm
実行します
app-armeabi-v7a-release.apk
をPlayストアにアップロードする
versionCode
インクリメント
flutter build apk --release --target-platform=android-arm64
実行します
app-arm64-v8a-release.apk
をPlayストアにアップロードする
Google Playストアは、デバイスアーキテクチャに従ってアプリを提供します。 32ビットデバイスは満足しています。64ビットデバイスは満足しています。両方のアーキテクチャに対応しながら、APKサイズが比較的小さいままであることを知って満足しています。
同じAPKに両方のアーキテクチャのサポートを含める場合、アプリのサイズは10MB以上になると予想されます
@ edTheGuy00プレイストアへのアップロードがどれほど大きいかは興味深いとは思いません。 アンドロイドフォンはとにかく125以上のtemporay空きスペースを要求し、開梱のために外部ストレージを使用することを拒否します。 これは、すべてのユーザーがアプリのサイズについて知っていることです。インストール後にアプリがどれだけ使用するかは実際には問題ではありません。 インストール用に125MB以上の空き容量が必要になります。
可能なすべてのアーキテクチャを含めることができるようにしてください。 Playストアへのアップロードが250MBになるかどうかは気にしません。
フラッターがAndroid携帯にインストールするために外部ストレージのギガビットスペースを使用するのであれば、それは素晴らしいことです。 つまり、フラッターがAndroidフォンのインストールに影響を与える可能性がある場合です
flutter.gradle
スクリプトには、すべてのABIを最終APK(ユニバーサルAPK)に含めてから、デフォルトで分割APKをオンにする必要があると思います。 Androidツールは接続されたデバイスにアップロードする適切なAPKを選択し、すべてが順調です。 最終的なユニバーサルAPKは、プレイストアにアップロードするか、各ABIの分割APKにアップロードできます。
それまでの間、解決策として、これをandroid\app
ディレクトリのbuild.gradle
の一番下に追加できます。
// Include both 32bit and 64bit arm libflutter.so files into your APK
project.afterEvaluate {
assembleRelease.doLast {
String src
if(project.hasProperty('target-platform') &&
project.property('target-platform') == 'android-arm64') {
// If we are building the 64bit then we also want to add the 32bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm-release/flutter.jar"
}else{
// If we are building the opposite (32bit), we include the 64bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm64-release/flutter.jar"
}
copy {
from zipTree(src)
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/0/"
}
}
}
また、これをbuildTypes > release
セクションに追加することをお勧めします。 これにより、リリースAPKに両方のABIが含まれるようになります。
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
@slightfootとのコラボレーションの後、これを
project.afterEvaluate {
assembleRelease.doFirst {
String src
if(project.hasProperty('target-platform') &&
project.property('target-platform') == 'android-arm64') {
// If we are building the 64bit then we also want to add the 32bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm-release/flutter.jar"
}else{
// If we are building the opposite (32bit), we include the 64bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm64-release/flutter.jar"
}
copy {
from zipTree(src)
include 'lib/*/libflutter.so'
into "src/main/jniLibs/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
更新:デバイスでこのAPKを実行しようとすると失敗するため、実行可能なソリューションではありません。 エラーは「DartVMの初期化中にエラーが発生しました:スナップショットは現在のVM構成と互換性がありません:
スナップショットには 'product use_bare_instructions no- "asserts" causal_async_stacks arm-eabisoftfp'が必要です
しかし、VMには 'product use_bare_instructions no- "asserts" causal_async_stacks arm64-sysv' "があります
ええ、わかりました。 これは、ターゲットアーチのAOTスナップショットも含める必要がある可能性があるためです。 そして今、私たちはそれをアセットの下に置いています。アーキテクチャごとのバージョンを
libs
下に置いていません。 AOTスナップショットを動作する可能性のあるアーキテクチャ固有のlibsフォルダーに配置できる場合は、そうでない場合は、その理由で.aab形式を使用する必要があります。とにかくこれを実行して、add2appユースケースの.AARの構築をサポートしたいと思います。 私はそれを突くでしょう。
@dnfieldは、これである程度の成功を収めましたか?
現時点でプラグイン部分を処理しています。 Android Xの問題を修正するために、その一部に優先順位を付けようとしていますが、さらにいくつかの問題が発生するはずです。
@gerryhighと私はこれを調べていました。 私の最後の返信は無視してください。 問題は、libflutter.soが64ビットに含まれていないという事実だけですが、AOTの場合、ビルドプロセスを2回実行する必要があります。1回は32ビット用、もう1回は64ビット用です。 次に、アプリケーションアセットに2セットのコンパイル済みDartコードと、2つのバージョンのlibflutter.soを取得します。 最終的な目標は、Flutterのコンパイルタスクをセットアップして、2つの別々のビルドステップを実行し、APKを自動的にセットアップすることだと思います。
ただし、現時点での唯一の解決策は、ビルドを2回実行し、複数のAPKをPlayストアにアップロードすることです。
flutter build apk --release --target-platform=android-arm
flutter build apk --release --target-platform=android-arm64
これは、分割APKを有効にすることでより適切に達成できます。 詳細については、 https :
@slightfootはい、これは私のコメントで言及されている限り、これまでに見つけた最良の解決策ですhttps://github.com/flutter/flutter/issues/18494#issuecomment -477502287
@slightfoot私が正しく理解していれば、ユニバーサルAPKを構築することはできません。一部のコードはアセットフォルダーにあり、libフォルダーとしてターゲットアーキテクチャに従ってファイルを分割することはできませんか?
アーキテクチャごとに作成されたスナップショットは異なります。 エンジンlibflutter.so
をコピーするだけで、スナップショットのアーキテクチャがフラッターエンジンのアーキテクチャと一致しない場合、スナップショットをロードできなくなります。
したがって、現在、スナップショットファイルを分離し、すべてのアーキテクチャのスナップショットファイルを含めない限り、すべてのアーキテクチャを含むユニバーサルapkを構築する方法はありません。
なぜこれが問題になるのか、私は少し混乱しています。
デバッグビルドは、x86_64、x86、armeabi-v7a、およびarm64-v8aでlibflutter.soを作成します。
リリースビルドはまったく同じように動作するはずです。
AGP(Android Gradleプラグイン)には、アーキテクチャを除外する機能がすでに含まれているため、ユーザーがリリースビルドでそれを実行したい場合は、build.gradleを変更できます。
@eseidel @dnfieldこれがAndroidアプリバンドルによって解決されるとは思いません。これらはまだデフォルトのAndroid出力ではなく、IDEから実行すると、apksがかなりの期間使用されると確信しています。
Playストアがデバイスに配信するアーキテクチャを除外できるため、Flutterにlibflutter.soのすべてのアーキテクチャを含める必要があるもう1つの理由はAABです。
@athornzの問題は、 libflutter.so
なく、dartコードをAOT snapshot
コンパイルすることです。デバッグビルドにはDart VMが含まれているため、すべてのdartコードはVM上でJIT
を実行します。 、ただし、リリースビルドは、dartコードをスナップショットにコンパイルし、そのスナップショットをアセットフォルダーに配置します。 理想的には、スナップショットをアーキテクチャごとにコンパイルし、 libflutter.so
と並べて配置する必要がありますが、現時点ではそうではありません。 したがって、すべてのアーキテクチャにlibflutter.so
を含めることができますが、スナップショットは、コンパイルされたアーキテクチャにのみ機能します。
この問題を修正する計画はありますか?
Google Playストアは、2019年8月1日以降に64ビットサポートを提供するようデベロッパーに依頼しています。
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
64ビット要件:開発者にとっての意味
2019年8月1日以降:
_Google Playに公開する場合、32ビットバージョンに加えて64ビットバージョンを提供するには、ネイティブコードを含むすべての新しいアプリとアプリのアップデートが必要です。_
拡張機能:Google Playは、2021年8月まで、Unity5.6.6以前を使用する既存のゲームに対する32ビットのみのアップデートを引き続き受け入れます。
2021年8月1日から
Google Playは、64ビット対応デバイスで64ビットバージョンのないアプリの提供を停止します。つまり、それらのデバイスのPlayストアでは利用できなくなります。
これには、Unity5.6.6以前で構築されたゲームが含まれます。
@trevorwangは、すでに64ビットをビルドして32ビットと一緒にPlayストアにアップロードできます。 だからそれは問題ではありません。
@slightfoot別の64ビットAPKを作成してGooglePlayにアップロードする必要があるということですか?
ご存知のように、GooglePlayは中国本土ではご利用いただけません。 すべてのプラットフォームをサポートするには、ユニバーサルAPKをお勧めします。
@trevorwangかなり。 これが私のやり方ですhttps://github.com/flutter/flutter/issues/18494#issuecomment-477502287
分割されたものはgradfleファイルでは機能しません。 build.gradleファイルの1つで何かをしなければならないので、flutterはさまざまなアーキテクチャをコンパイルする方法を知っています。 または、グーグルプレイは2番目のコンパイルを拒否します。
ありがとう@ edTheGuy00
しかし、中国市場向けのすべてのabisを含むユニバーサルAPKが本当に必要です。
@trevorwangは、ターゲットごとに構築し、各APKがどのアーキテクチャ用であるかを明示的に
64ビットの制限は、GooglePlayストアの制限にすぎません。 armeabi-v7aのみAPKをデプロイでき、誰でもアプリを実行できます。
アーキテクチャごとに個別のAPKを構築することは回避策であり、すべての人にとって確実に解決策ではありません。
Google Play 64ビットの制限が有効になると、この問題はほとんどのFlutter開発者に影響を与えるため、1つのapk /バンドル内で複数のアーキテクチャを可能にするソリューションが本当に必要です。
簡単なリマインダー
Flutterチームは、GitHubの問題に関する「賛成」の数を優先順位のガイドとして使用します。
この問題は優先度が高いはずだと思います。
@gerryhighと@slightfootの仕事に感謝します
既存のアプリにフラッターを追加し、次の回避策でこの問題を修正しました。
_これをホストプロジェクトのアプリモジュールに追加してください。_
これはデバッグモードのスクリプトです。リリースに応じて変更してください。
project.afterEvaluate {
assembleDebug.doLast {
def flutterRoot = System.getenv("FLUTTER_HOME")
def archTypes = ["arm", "arm64"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/debug/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
最近の進展はありますか?
欲しかったのでやったこと
1
または2
が追加されるため、バージョン1004
はarmの場合は10041
になり、arm64の場合は10042
になります。ext.platformCodes = ['android-arm': 1, 'android-arm64' : 2]
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
int code = 0
if (project.hasProperty('target-platform')) {
code = project.ext.platformCodes.get(project.property('target-platform'))
}
output.versionCodeOverride = variant.versionCode * 10 + code
}
}
flutter clean; flutter build apk --release --target-platform=android-arm; mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-arm32.apk; flutter build apk --release --target-platform=android-arm64; mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-arm64.apk;
お役に立てれば。
だから、これは私も抱えている問題です..私はapkの代わりにアプリバンドルを構築しています、そしてそれをグーグルにアップロードしているとき、それは私に警告を与え、私にそれをアルファテストさせません。
私はそれを行うためにcodemagicを使用していますが、それに署名してバンドルに入れる方法はありますか? またはcodemagicを使用してドットを付けますか?
まったく存在してはいけないと思っていたのと同じ問題に直面しています。
なぜこれがマイルストーン「目標」にあるのですか。
P2:これらは、今後数年間で修正する価値があると私たちが考えるタスクです。 これには、幅広い消費者向けアプリの完全な出荷を妨げる可能性があると特定された問題、正確性の問題、および磨きと品質に関連するバグが含まれます。 このマイルストーンの日付は完全に任意であり、マイルストーンを適切に並べ替えることを目的としています。
これはすでに重大な問題であり、Googleが64ビットの制限を施行すると、今年後半に本格的なショーストッパーになるでしょう。
私はこれにマイルストーンをぶつけました。 まだ確固たる日付はありません。
明確にするために:今日の新しいガイドラインに準拠することは可能ですが、困難です。 それをもっと簡単にしたいのです。
したがって、手動でアプリをビルドする限り、 @ andreidiaconuメソッドが機能しました。
しかし、私はcodemagicを使用してビルドとデプロイを行ってきました。
したがって、これは無駄です。Flutterはこれを構築する必要があります。
現時点では、それが複雑であるかどうかは個人的には気にしません。 複雑な場合は、スクリプトによって自動化されます。 問題は、それが可能かどうか、そしてGoogle PlayConsoleが私に警告する理由です。
このリリースは、GooglePlayの64ビット要件に準拠していません
次のAPKまたはAppBundleは64ビットデバイスで使用できますが、32ビットのネイティブコードしかありません:6。
2019年8月1日以降、すべてのリリースはGooglePlayの64ビット要件に準拠している必要があります。
アプリに64ビットと32ビットのネイティブコードを含めます。 Android App Bundle公開形式を使用して、各デバイスアーキテクチャが必要なネイティブコードのみを受信するように自動的に設定します。 これにより、アプリ全体のサイズが大きくなるのを防ぐことができます。
異なるバージョンコードを必要とするソリューションは必要ありません。Androidアプリバンドル(AAB)で機能するソリューションが必要です。
警告
このリリースは、GooglePlayの64ビット要件に準拠していません
次のAPKまたはAppBundleは64ビットデバイスで使用できますが、32ビットのネイティブコードしかありません:3。
解決策はありますか?
私はこれにマイルストーンをぶつけました。 まだ確固たる日付はありません。
明確にするために:今日の新しいガイドラインに準拠することは可能ですが、困難です。 それをもっと簡単にしたいのです。
ドキュメントは、apkとappバンドルの両方でこれを行う方法の説明で更新する必要がありますか? これまでに見たのは、どこに配置すればよいか正確にはわからない一連のコードと構成だけです。 私はおそらくいくつかの試行錯誤でそれを理解することができましたが、それは理想的ではありません。
同じ問題
@gerryhighと@slightfootの仕事に
既存のアプリにフラッターを追加し、次の回避策でこの問題を修正しました。
_これをホストプロジェクトのアプリモジュールに追加してください。_これはデバッグモードのスクリプトです。リリースに応じて変更してください。
project.afterEvaluate { assembleDebug.doLast { def flutterRoot = System.getenv("FLUTTER_HOME") def archTypes = ["arm", "arm64"] archTypes.forEach { item -> copy { from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar") include 'lib/*/libflutter.so' into "$buildDir/intermediates/jniLibs/debug/" eachFile { it.path = it.path.replaceFirst("lib/", "") } } } } }
この解決策/回避策は最も有望に見えます、 @ trevorwangに感謝し
これはおそらくあなたの問題を解決しないことに注意してください-以下を参照してください
@trevorwangの回答と@noinskitの提案のおかげで、リリースビルドに64ビットのネイティブライブラリを含めることができましたが、以下に示す./android/app/build.gradle
少し追加しました。
ここでファイル全体を表示することもでき
afterEvaluate {
mergeReleaseJniLibFolders.doLast {
def archTypes = ["arm-release", "arm64-release"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
@SPodjasekありがとう! 似たようなものにたどり着きました。 私の場合、スニペットのassembleRelease
をmergeReleaseJniLibFolders
に変更する必要があります。そうしないと、余分な* .soファイルが「intermediates / ...」の下に表示されますが、最終的なapkには変更されません。
@noinskit以前の解決策はエラーが発生しやすいようです。 flutter clean
実行した後、32ビットライブラリのみでaabを生成しました。 assembleRelease
をmergeReleaseJniLibFolders
置き換えることは、ビルドを真にクリーンアップした後でも機能するようです。
@SPodjasek他のオプションを微調整する必要がありますか?
これが私のapp.gradleです
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
afterEvaluate {
mergeReleaseJniLibFolders.doLast {
def archTypes = ["arm-release", "arm64-release"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
私のintermediate / jniLibs / release / arm64-v8aディレクトリとarmeabi-v7aディレクトリの両方に期待どおり
これがスクリーンショットです
@ function1983ここで私の完全なbuild.gradle
を見ることができます。
私のフラッターバージョンの時点で:
[✓] Flutter (Channel beta, v1.5.4, on Linux, locale pl_PL.UTF-8)
• Flutter version 1.5.4 at .../development/flutter
• Framework revision b593f5167b (2 weeks ago), 2019-04-22 07:51:33 -0700
• Engine revision ca31a7c57b
• Dart version 2.3.0 (build 2.3.0-dev.0.1 cf4444b803)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at .../Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: .../development/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
• All Android licenses accepted.
[✓] Android Studio (version 3.4)
• Android Studio at .../development/android-studio
• Flutter plugin version 35.2.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
@SPodjasekのソリューションを使用して、64ビットバージョンと32ビットバージョンの両方を含むappbundleを構築しようとしています。 正常にビルドされ、Google Play Consoleにアップロードでき、32ビットと64ビットの両方の電話にインストールできます。 しかし、何らかの理由でandroid-arm64デバイスで起動するとアプリがクラッシュします(テストしていた古い32ビットのAndroidフォンでも動作するようです)。
64ビットデバイスで発生するエラーは次のとおりです。
中止メッセージ: '[ FATAL:flutter / runtime / dart_vm.cc (416)] Dart VMの初期化中にエラーが発生しました:スナップショットは現在のVM構成と互換性がありません:スナップショットには' product use_bare_instructions no- "asserts" causal_async_stacks arm-eabisoftfpが必要です'しかし、VMには' product use_bare_instructions no- "asserts" causal_async_stacksarm64-sysv 'があります
私に何ができるかわからない...今のところ64ビットデバイスのみをサポートすることに固執する必要があるかもしれません。
@Torruntのエラーは、エンジンが32ビットのAOTスナップショットを
ストアがこれらを正しく分割できるように、両方を備えたAABを作成できるように取り組んでいます。
使用@SPodjasekこれは15.7メガバイトに11.1メガバイトから私のアプリ-release.apkファイルサイズを増加しました
使用@SPodjasekこれは15.7メガバイトに11.1メガバイトから私のアプリ-release.apkファイルサイズを増加しました
はい、32ビットと64ビットのlibflutter.so
が強制的に含まれているためです。 それが必要ない場合は、現在のデフォルトを維持して32ビットのみを含め、フラッターチームがこれを適切に処理するのを待ちます。
いくつかの可能性があるようです:
--target-platform
を使用してandroid-arm
とandroid-arm64
別々にビルドし、2つのAPKをアップロードする場合に注意してください。
一部のプラグインは両方を対象とする可能性のあるネイティブライブラリを使用し、flutterはライブラリフォルダをフィルタリングしないため、「32ビット」APKは実際には引き続きarm64も対象とし、libflutter.soが存在せず、AOTスナップショットが存在するためクラッシュすることに注意してください。 armv7用に構築されています。
そのため、build.gradleファイルでターゲットのabiを実際に明示的にフィルタリングする必要があります。
flutter build apk --target-platform ...
は論理的にこのフィルタリングを行うべきだと思います。
@SPodjasekのソリューションを使用すると、 arm-eabi
とarm64-sysv
一致についてエラーが発生しました。 私にとってうまくいった最善の解決策は、これがすべて解決されるまで、当面は32ビットで構築することだと思います( @swavkulinskiの解決策はこちら):
app
レベルでbuild.gradle
:
android {
// ...
buildTypes {
release {
// ...
ndk {
abiFilters "armeabi-v7a"
}
}
}
}
主題からの問題の要約-armeabi-v7aとarm64-v8aの両方に対してそのようなAPKを構築することはできません。 FlutterはABIに依存するAOTスナップショットを使用するため、APKで可能な解決策は、複数のAPKビルドを使用することだけです。
解決策はAppBundleを使用することですが、これには今のところいくつかの問題もあります(#31922)。
#32787がマージされた後、アプリバンドルを使用できるようになりました。
Android Studioを介してAndroidアプリバンドルを生成するときに、フレーバーとターゲットファイル(たとえば、-t lib / another_main.dart)を設定するにはどうすればよいですか? oo
これは、 https://github.com/flutter/flutter/pull/32787がマージされた後、 flutter build appbundle
を介してサポートされます。
@swavkulinskiどのようにapksをプレイストアにリリースしますか?
当時はまだ可能でした。 ここで、64ビットに制限する必要があります。 32ビットのみのサードパーティのNDKライブラリによってロックダウンされました。
@blasten
これにより、 flutter build apk --release
サポートも追加されますか? または、長期的にはアプリバンドルを優先してAPKのサポートを段階的に廃止する予定ですか? 私はファットAPKの比較的シンプルさがとても好きです。
@zimmi正解です。 アプリバンドルは今後の道であるはずです。 必要に応じて、引き続きflutter build apk --release
使用できます。 AABと比較してファットAPKの方が簡単なのは何ですか?
AABと比較してファットAPKの方が簡単なのは何ですか?
AABはインストールファイルではありません。 Android自体はそれを使用できません。 これは、GooglePlayストア専用のファイル形式です。 したがって、次の場合にapkが必要です。
そうですか。 背景をありがとう。
また、 bundletoolを使用してAABからAPKを抽出できます。
@blasten
確認ありがとう!
単純さのコメントについて: @audkarが言ったこと。 また、AABの場合、開発者は、資産の欠落によって引き起こされる潜在的な障害シナリオについて考える必要があります。 考えられるすべてのデバイス構成でのテストは難しいため、これらの障害が発生した場合は、本番環境である可能性があります。
アプリのサイズは、その安心のために喜んで支払う価格かもしれません。
この問題よりも、それぞれのアプローチのメリットについて議論するのに適した場所があると確信していますが、それを脱線させたくはありません。
/ cc @jonahwilliams build apk
ファットAPKをサポートする必要があるかもしれません。
build apk
のデフォルトも変更する必要がありますか?
ファットapkサポートは間違いなく必要です。 アプリバンドルではまだ機能しないツール(ベータ分布など)がたくさんあります。
flutter build appbundle
は現在マスターになっていますが、任意の人が試してみたいですか?
build apk
のプラットフォームのリストをサポートするためにいくつかの議論があったので、次のようにすることができます: flutter build apk --target-platform android-arm,android-arm64
@blastenマスターチャネルに切り替え、アップグレードしてappbundleをビルドしましたが、うまく機能しました。 次に、それをPlay Consoleにアップロードすると、すべての警告が消えます。 (macOS 10.14.4)
素晴らしい! 変更を加えた後、今夜ビルドをコンパイルします。
バンドルが機能していないようです。ダウンロードするとアプリがクラッシュします。
Issue: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mattetti.sounds/com.mattetti.sounds.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.mattetti.sounds.MainActivity" on path: DexPathList[[zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/base.apk", zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.arm64_v8a.apk", zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/lib/arm64, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/base.apk!/lib/arm64-v8a, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.arm64_v8a.apk!/lib/arm64-v8a, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.xxhdpi.apk!/lib/arm64-v8a, /system/lib64]]
com.mattetti.sounds.MainActivity
がバンドルに含まれていないようですか?
理由がわからないのですが、なぜ削除されたのかを確認するにはどうすればよいですか?
@mattetti Flutterモジュールを使用していMainActivity
拡張FlutterActivity
?
@blasten
これが私の依存関係です
environment:
sdk: ">=2.2.2 <3.0.0"
dependencies:
flutter:
sdk: flutter
rxdart: ^0.22.0
shared_preferences: ^0.5.2
http: ^0.12.0
cached_network_image: ^0.8.0
url_launcher: ^5.0.2
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_launcher_icons: "^0.7.0"
dependency_overrides:
# requried for flutter_icons at this point
image: 2.0.7
しかし、アプリのパッケージの名前を変更したのに、 MainActivity.java
ファイルへのパスを変更しなかったことにも気づきました。これはまだandroid/app/src/main/java/com/example/old_name/
ある可能性があります。 明日は、パスを変更して別のバンドルをプッシュしようとします。
こんにちは@ blasten 、
[ +48 ms] FAILURE: Build failed with an exception.
[ +3 ms] * What went wrong:
[ ] Failed to capture snapshot of input files for task ':app::flutter:package:packLibsDevRelease' property
'rootSpec$2$1' during up-to-date check.
[ ] > java.io.IOException: The filename, directory name, or volume label syntax is incorrect
[ ] * Try:
[ ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log
output. Run with --scan to get full insights.
[ ] * Get more help at https://help.gradle.org
[ ] Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
[ ] See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings
[ ] BUILD FAILED in 1m 28s
私のプロジェクトはフレーバーを使用しており、これは私が実行するコマンドです
flutter build appbundle --flavor stage -t lib/main-stage.dart -v
アプリバンドルにはmapping.txtも含まれますか? Codemagicを介してアプリバンドルをGooglePlay Consoleにアップロードする場合、mapping.txtは含まれないため、apkをアップロードするときにある自動テストやリリース前レポートはありません:(
したがって、質問は次のとおりです。
Flutterチームは8月までに64ビットリリースの更新を行うのでしょうか。それにより、Flutterで作成されたアプリをアップロードして更新できるようになりますか?
@YazeedAlKhalafはい。 今日はflutter build appbundle
を使用でき、32ビットと64ビットを含むアプリバンドルを入手できます。
@mattettiは問題を修正しましたか?
@ nohlimapping.txtは機能リクエストのように聞こえます。 新しいバグを自由に報告してください。
@skybur flutter doctor
を実行できますか? Flutterプロジェクトはアプリですか、それともモジュールですか?
@blasten私のプロジェクトはアプリです。
これがフラッタードクターの結果です
[√] Flutter (Channel master, v1.6.1-pre.68, on Microsoft Windows [Version 10.0.17763.503], locale en-US)
• Flutter version 1.6.1-pre.68 at D:\Devs\Flutter\testappbundle\flutter
• Framework revision d5aae54a28 (22 hours ago), 2019-05-20 23:19:18 -0400
• Engine revision 301f560bd8
• Dart version 2.3.1 (build 2.3.1-dev.0.0 b48c8b1d1c)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at D:\AndroidSDK
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = D:\AndroidSDK
• ANDROID_SDK_ROOT = D:\AndroidSDK
• Java binary at: D:\AndroidStudio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
• All Android licenses accepted.
[√] Android Studio (version 3.2)
• Android Studio at D:\AndroidStudio
• Flutter plugin version 31.3.1
• Dart plugin version 181.5656
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
[√] VS Code, 64-bit edition (version 1.33.1)
• VS Code at C:\Program Files\Microsoft VS Code
• Flutter extension version 3.0.2
[!] Connected device
! No devices available
! Doctor found issues in 1 category.
@blasten :
flutter build appbundle
を使用してストアにアップロードし、Androidフォンから開くことを試みます。
開くとすぐにクラッシュします。
adbログ:
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
05-22 09:40:52.404 27305 27305 F flutter : [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
05-22 09:40:52.404 27305 27305 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 27305 (tform.atomicdex)
05-22 09:40:52.432 27339 27339 I crash_dump64: obtaining output fd from tombstoned
05-22 09:40:52.433 1417 1417 I /system/bin/tombstoned: received crash request for pid 27305
05-22 09:40:52.434 27339 27339 I crash_dump64: performing dump of process 27305 (target tid = 27305)
05-22 09:40:52.434 27339 27339 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-22 09:40:52.434 27339 27339 F DEBUG : Build fingerprint: 'lge/judyln_lao_com/judyln:8.0.0/OPR1.170623.032/190501244a6e5.FGN:user/release-keys'
05-22 09:40:52.434 27339 27339 F DEBUG : Revision: '12'
05-22 09:40:52.434 27339 27339 F DEBUG : ABI: 'arm64'
05-22 09:40:52.434 27339 27339 F DEBUG : pid: 27305, tid: 27305, name: PACKAGE_NAME >>> PACKAGE_NAME <<<
05-22 09:40:52.434 27339 27339 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
05-22 09:40:52.435 27339 27339 F DEBUG : Abort message: '[FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
05-22 09:40:52.435 27339 27339 F DEBUG : '
05-22 09:40:52.435 27339 27339 F DEBUG : x0 0000000000000000 x1 0000000000006aa9 x2 0000000000000006 x3 0000000000000008
05-22 09:40:52.435 27339 27339 F DEBUG : x4 0000000007d0bf68 x5 0000000007d0bf68 x6 0000000007d0bf68 x7 0000000007d0bfd8
05-22 09:40:52.435 27339 27339 F DEBUG : x8 0000000000000083 x9 8644075c81e36b5a x10 00000077ccff6a48 x11 8644075c81e36b5a
05-22 09:40:52.435 27339 27339 F DEBUG : x12 8644075c81e36b5a x13 0000000000000020 x14 ffffffffffffffdf x15 00000077ca27ec68
05-22 09:40:52.435 27339 27339 F DEBUG : x16 00000077ca2732b8 x17 00000077ca205a44 x18 0000000000000048 x19 0000000000006aa9
05-22 09:40:52.435 27339 27339 F DEBUG : x20 0000000000006aa9 x21 0000007fe4fb81b8 x22 00000077b3dffba0 x23 00000077bd29d7a0
05-22 09:40:52.435 27339 27339 F DEBUG : x24 00000077aa79a150 x25 0000000000000000 x26 0000000000000000 x27 0000000000000002
05-22 09:40:52.435 27339 27339 F DEBUG : x28 0000000000000000 x29 0000007fe4fb81a0 x30 00000077ca1aa8e4
05-22 09:40:52.435 27339 27339 F DEBUG : sp 0000007fe4fb8160 pc 00000077ca205a4c pstate 0000000060000000
05-22 09:40:52.436 27339 27339 F DEBUG :
05-22 09:40:52.436 27339 27339 F DEBUG : backtrace:
05-22 09:40:52.436 27339 27339 F DEBUG : #00 pc 0000000000079a4c /system/lib64/libc.so (tgkill+8)
05-22 09:40:52.436 27339 27339 F DEBUG : #01 pc 000000000001e8e0 /system/lib64/libc.so (abort+88)
05-22 09:40:52.436 27339 27339 F DEBUG : #02 pc 000000000001d61c /data/app/PACKAGE_NAME-F-z4qH6HT271dk7M7oI8Uw==/split_config.arm64_v8a.apk (offset 0xea7000)
@Kiruelなぜ人々がアプリバンドルがこの問題を解決していると言い続けるのか、私には非常に不明確です。
アプリバンドルは自動分割APKにすぎず、アセットフォルダーに分割はありません。 したがって、スナップショットは依然として単一のアーキテクチャのみを対象としています。
私はおそらく何かが欠けていますが、私の意見では、現在の唯一の解決策は、gradleファイルに対応するndkフィルタリングを使用して各アーキテクチャのAPKをビルドすることです。 次に、これらの各APKをアップロードします。
APKでこの問題を解決できない場合、アプリバンドルも機能する可能性はありません。
@ndusartそれは本当ではないと思います。 アプリバンドルのドキュメントによると:
res /、lib /、assets /:これらのディレクトリは通常のAPKのディレクトリと同じです。 アプリバンドルをアップロードすると、Google Playはこれらのディレクトリを検査し、ファイルパスを維持しながら、ターゲットデバイスの構成を満たすファイルのみをパッケージ化します。
したがって、それはどういうわけか資産を分割することができます。
@jerekselこれは、これらのディレクトリがアプリバンドルでもapkとまったく同じように機能し、 assets/
フォルダが分割されていないことを示しています。 これは、アプリケーション内の非常に特定のファイル構造にアセットを格納するために使用されます。OSなどによって解析されることを意図したものではありません。
間違っている場合は、ターゲットABIに基づいてこのフォルダーを分割する方法を教えてください。
そして、この引用は私が言っていることを確認するだけです。APKでこれが現在不可能な場合、これらのフォルダーは両方の方法でまったく同じように機能するため、アプリバンドルを使用してこれを行うことはできません。
アセットが自分で分割されるのを見たことがありませんが、これを見つけました:
https://medium.com/google-developer-experts/exploring-the-android-app-bundle-ca16846fa3d7
Assets.pb —これは、アプリケーションアセットのリソーステーブルに相当し、アプリケーションでアセットを使用している場合にのみ存在します。
つまり、Android Studioはアセットを分割しませんが、アプリバンドル自体がそれをサポートしていると思います。
公式文書はありますか? それはすべて非常に信頼できないようです。
次の記事https://medium.com/mindorks/android-app-bundle-aab-98de6dad8ba8には、 assets/
内のフォルダーの名前にサフィックスを追加して分割できると記載されていますが、現在はこれしかできません。言語で行われる。
それでも、これはまだ安定していないようであり、現時点で基づくべきではありません。 可能であれば、VMスナップショットをlib/
フォルダーにデポートするか、 flutter
コマンドに特定のターゲット用のAPKを構築するための完全な機能が付属している必要があります(これについてはまだ作業が必要です)多くの人がアクセスできるようにするため)、準備ができたらアプリバンドルの作成を遅らせます。
@blasten
マスターチャンネルに切り替え、アップグレードして、appbundleをビルドしました。 残念ながら、次のログキャットでグーグルプレイストアからダウンロードした後、アプリが追いかけます
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
は現在マスターになっていますが、任意の人が試してみたいですか?
build apk
のプラットフォームのリストをサポートするためにいくつかの議論があったので、次のようなことができます:flutter build apk --target-platform android-arm,android-arm64
@blasten
マスターチャンネルに切り替え、アップグレードして、appbundleをビルドしました。 残念ながら、次のログキャットでグーグルプレイストアからダウンロードした後、アプリが追いかけます
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
は現在マスターになっていますが、任意の人が試してみたいですか?
build apk
のプラットフォームのリストをサポートするためにいくつかの議論があったので、次のようなことができます:flutter build apk --target-platform android-arm,android-arm64
私はまだログを持っていませんが、同じ問題があります。
@skyburで発生していた問題は、 https://github.com/flutter/flutter/issues/33119に関連している可能性がありこのパッチで修正する必要があります。
@ndusart
ええ、あなたは正しいです。 私はbundletoolのソースコードを確認しましたが、アセットの分割は実際には言語によってのみ行われます。
https://github.com/google/bundletool/blob/master/src/main/java/com/android/tools/build/bundletool/splitters/ModuleSplitter.java#L286
これが私の解決策でした:
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
flutter build apk --release --target-platform=android-arm
実行しますapp-armeabi-v7a-release.apk
をPlayストアにアップロードするversionCode
インクリメントflutter build apk --release --target-platform=android-arm64
実行しますapp-arm64-v8a-release.apk
をPlayストアにアップロードするGoogle Playストアは、デバイスアーキテクチャに従ってアプリを提供します。 32ビットデバイスは満足しています。64ビットデバイスは満足しています。両方のアーキテクチャに対応しながら、APKサイズが比較的小さいままであることを知って満足しています。
同じAPKに両方のアーキテクチャのサポートを含める場合、アプリのサイズは10MB以上になると予想されます
皆さんに伝えるべき重要なことがあります。 あなたが私が引用する方法を使うならば。 アプリのデバッグを続けたい場合は、設定をコメントアウトする必要があるかもしれません。 GradleビルドがAndroidパッケージの作成に失敗し、数時間スタックしてgradlew clean
...などを作成するというエラーに直面し、最終的にこれをコメントアウトする必要があることがわかりました。
これが誰かが飛び出すのを助けたことを願っています。
flutter build appbundle
は現在マスターになっていますが、任意の人が試してみたいですか?
build apk
のプラットフォームのリストをサポートするためにいくつかの議論があったので、次のようにすることができます:flutter build apk --target-platform android-arm,android-arm64
flutter build appbundle
が機能しています! その設定を追加する必要はなく、コードを実行するだけです。 ただし、コンパイルには少し時間がかかりますが、現在GooglePlayに合格する唯一の方法です。
@Tokenyetは、Playストアからアプリをダウンロードして、 .aab
アップロードした後に実行できましたか? この場合、 flutter doctor
出力を貼り付けていただけませんか。
@blasten
マスターチャンネルに切り替え、アップグレードして、appbundleをビルドしました。 残念ながら、次のログキャットでグーグルプレイストアからダウンロードした後、アプリが追いかけます
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
は現在マスターになっていますが、任意の人が試してみたいですか?
build apk
のプラットフォームのリストをサポートするためにいくつかの議論があったので、次のようなことができます:flutter build apk --target-platform android-arm,android-arm64
Playストア(appbundleとして作成)からアプリを実行しようとした場合も、まったく同じです。 これを解決するためにどのログが必要ですか?
これは役に立ちます:
bundletool
をダウンロードしますflutter build appbundle
実行します(フラグを渡すかどうか、またはGradleスクリプトに_custom_変更を加えたかどうかを示してください)bundletool build-apks --bundle=build/app/outputs/bundle/release/app.aab --output=out.apks
を実行してAPKセットを抽出します。unzip -l out.apks
を実行し、最後にflutter doctor
を実行して、両方のコマンドからの出力をコメントに貼り付けます。もし可能なら:
bundletool
とAPKセットを使用して、デバイスでローカルにテストします。 これらはステップです、あなたのコメントにlogcatを貼り付けてください。
bundletool
を使用してローカルでテストしただけですが、問題を再現できません。
@blasten以前のエラーは修正されましたが、別のエラーが発生しました。 これは私のプロジェクトの何かが原因だと思います。 これをデバッグする方法はありますか?
[+6084 ms] Failed to execute aapt
[ +17 ms] com.android.ide.common.process.ProcessException: Failed to execute aapt
[ +1 ms] at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:809)
[ +1 ms] at com.android.build.gradle.internal.res.LinkAndroidResForBundleTask.taskAction(LinkAndroidResForBundleTask.kt:128)
[ +1 ms] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ +1 ms] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ +1 ms] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ ] at java.lang.reflect.Method.invoke(Method.java:498)
[ ] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
[ +4 ms] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
[ +1 ms] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
[ ] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
[ +3 ms] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788)
[ +29 ms] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755)
[ +1 ms] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
[ +1 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
[ +2 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
[ +1 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
[ +9 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
[ ] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
[ ] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
[ +1 ms] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
[ ] at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
[ +1 ms] at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
[ ] at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
[ ] at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
[ +5 ms] at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
[ ] at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
[ +1 ms] at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
[ +1 ms] at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
[ +12 ms] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
[ +4 ms] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
[ ] at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
[ ] at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
[ ] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
[ +6 ms] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
[ +14 ms] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
[ +1 ms] at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
[ +4 ms] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[ +1 ms] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[ +2 ms] at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
[ +1 ms] at java.lang.Thread.run(Thread.java:745)
[ +26 ms] Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[ +4 ms] at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
[ +1 ms] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
[ ] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
[ ] at com.android.builder.internal.aapt.AbstractAapt.link(AbstractAapt.java:34)
[ ] at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:807)
[ ] ... 51 more
[ ] Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[ +1 ms] at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
[ ] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
[ ] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
[ ] at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:166)
[ +4 ms] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[ +1 ms] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[ +1 ms] ... 1 more
[ +1 ms] Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[ +1 ms] at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:443)
[ +1 ms] at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:395)
[ ] at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:312)
[ ] at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
[ ] FAILURE: Build failed with an exception.
[ ] * What went wrong:
[ ] Execution failed for task ':app:bundleProdReleaseResources'.
[ ] > Failed to execute aapt
[ ] * Try:
[ ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[ +5 ms] * Get more help at https://help.gradle.org
[ ] BUILD FAILED in 30s
[ +324 ms] Running Gradle task 'bundleProdRelease'... (completed in 31.5s)
@blastenログのすべての手順に従います。
➜ PROJECT_NAME git:(master) ✗ unzip -l out.apks
Archive: out.apks
Length Date Time Name
--------- ---------- ----- ----
43369811 01-01-1970 01:00 standalones/standalone-armeabi_tvdpi.apk
43327197 01-01-1970 01:00 standalones/standalone-armeabi_hdpi.apk
43319503 01-01-1970 01:00 standalones/standalone-armeabi_mdpi.apk
43320027 01-01-1970 01:00 standalones/standalone-armeabi_ldpi.apk
43346424 01-01-1970 01:00 standalones/standalone-armeabi_xxhdpi.apk
43350403 01-01-1970 01:00 standalones/standalone-armeabi_xxxhdpi.apk
43332970 01-01-1970 01:00 standalones/standalone-armeabi_xhdpi.apk
50349155 01-01-1970 01:00 standalones/standalone-armeabi_v7a_ldpi.apk
50348629 01-01-1970 01:00 standalones/standalone-armeabi_v7a_mdpi.apk
50398968 01-01-1970 01:00 standalones/standalone-armeabi_v7a_tvdpi.apk
50356358 01-01-1970 01:00 standalones/standalone-armeabi_v7a_hdpi.apk
50362126 01-01-1970 01:00 standalones/standalone-armeabi_v7a_xhdpi.apk
50375565 01-01-1970 01:00 standalones/standalone-armeabi_v7a_xxhdpi.apk
50379553 01-01-1970 01:00 standalones/standalone-armeabi_v7a_xxxhdpi.apk
50660246 01-01-1970 01:00 standalones/standalone-arm64_v8a_ldpi.apk
50659718 01-01-1970 01:00 standalones/standalone-arm64_v8a_mdpi.apk
50710027 01-01-1970 01:00 standalones/standalone-arm64_v8a_tvdpi.apk
50667415 01-01-1970 01:00 standalones/standalone-arm64_v8a_hdpi.apk
50673185 01-01-1970 01:00 standalones/standalone-arm64_v8a_xhdpi.apk
50686641 01-01-1970 01:00 standalones/standalone-arm64_v8a_xxhdpi.apk
43345757 01-01-1970 01:00 standalones/standalone-x86_mdpi.apk
43346287 01-01-1970 01:00 standalones/standalone-x86_ldpi.apk
43396086 01-01-1970 01:00 standalones/standalone-x86_tvdpi.apk
50690619 01-01-1970 01:00 standalones/standalone-arm64_v8a_xxxhdpi.apk
43359247 01-01-1970 01:00 standalones/standalone-x86_xhdpi.apk
43353470 01-01-1970 01:00 standalones/standalone-x86_hdpi.apk
43372688 01-01-1970 01:00 standalones/standalone-x86_xxhdpi.apk
43376653 01-01-1970 01:00 standalones/standalone-x86_xxxhdpi.apk
43340224 01-01-1970 01:00 standalones/standalone-x86_64_ldpi.apk
43339701 01-01-1970 01:00 standalones/standalone-x86_64_mdpi.apk
43390033 01-01-1970 01:00 standalones/standalone-x86_64_tvdpi.apk
43347418 01-01-1970 01:00 standalones/standalone-x86_64_hdpi.apk
57027 01-01-1970 01:00 splits/base-ldpi.apk
56501 01-01-1970 01:00 splits/base-mdpi.apk
61951 01-01-1970 01:00 splits/base-hdpi.apk
67741 01-01-1970 01:00 splits/base-xhdpi.apk
81187 01-01-1970 01:00 splits/base-xxhdpi.apk
85188 01-01-1970 01:00 splits/base-xxxhdpi.apk
105385 01-01-1970 01:00 splits/base-tvdpi.apk
43353194 01-01-1970 01:00 standalones/standalone-x86_64_xhdpi.apk
11313 01-01-1970 01:00 splits/base-ca.apk
11211 01-01-1970 01:00 splits/base-da.apk
12040 01-01-1970 01:00 splits/base-fa.apk
11659 01-01-1970 01:00 splits/base-ja.apk
12486 01-01-1970 01:00 splits/base-ka.apk
12511 01-01-1970 01:00 splits/base-pa.apk
12856 01-01-1970 01:00 splits/base-ta.apk
11195 01-01-1970 01:00 splits/base-nb.apk
12001 01-01-1970 01:00 splits/base-be.apk
11420 01-01-1970 01:00 splits/base-de.apk
13041 01-01-1970 01:00 splits/base-ne.apk
12674 01-01-1970 01:00 splits/base-te.apk
43366615 01-01-1970 01:00 standalones/standalone-x86_64_xxhdpi.apk
11179 01-01-1970 01:00 splits/base-af.apk
12151 01-01-1970 01:00 splits/base-bg.apk
12353 01-01-1970 01:00 splits/base-th.apk
11228 01-01-1970 01:00 splits/base-fi.apk
12537 01-01-1970 01:00 splits/base-si.apk
12551 01-01-1970 01:00 splits/base-hi.apk
11939 01-01-1970 01:00 splits/base-kk.apk
11615 01-01-1970 01:00 splits/base-vi.apk
12059 01-01-1970 01:00 splits/base-mk.apk
11440 01-01-1970 01:00 splits/base-sk.apk
11961 01-01-1970 01:00 splits/base-uk.apk
12344 01-01-1970 01:00 splits/base-el.apk
11342 01-01-1970 01:00 splits/base-gl.apk
13334 01-01-1970 01:00 splits/base-ml.apk
11350 01-01-1970 01:00 splits/base-nl.apk
11371 01-01-1970 01:00 splits/base-pl.apk
11311 01-01-1970 01:00 splits/base-sl.apk
11428 01-01-1970 01:00 splits/base-tl.apk
11825 01-01-1970 01:00 splits/base-am.apk
12685 01-01-1970 01:00 splits/base-km.apk
12615 01-01-1970 01:00 splits/base-bn.apk
11223 01-01-1970 01:00 splits/base-in.apk
12832 01-01-1970 01:00 splits/base-kn.apk
11958 01-01-1970 01:00 splits/base-mn.apk
12621 01-01-1970 01:00 splits/base-lo.apk
11425 01-01-1970 01:00 splits/base-ko.apk
11395 01-01-1970 01:00 splits/base-ro.apk
11438 01-01-1970 01:00 splits/base-sq.apk
13612 01-01-1970 01:00 splits/base-fr.apk
11647 01-01-1970 01:00 splits/base-ar.apk
11278 01-01-1970 01:00 splits/base-hr.apk
12447 01-01-1970 01:00 splits/base-mr.apk
12943 01-01-1970 01:00 splits/base-or.apk
14244 01-01-1970 01:00 splits/base-sr.apk
11316 01-01-1970 01:00 splits/base-tr.apk
11973 01-01-1970 01:00 splits/base-ur.apk
11308 01-01-1970 01:00 splits/base-bs.apk
12525 01-01-1970 01:00 splits/base-as.apk
13704 01-01-1970 01:00 splits/base-es.apk
11367 01-01-1970 01:00 splits/base-cs.apk
11222 01-01-1970 01:00 splits/base-is.apk
11360 01-01-1970 01:00 splits/base-ms.apk
11323 01-01-1970 01:00 splits/base-et.apk
11283 01-01-1970 01:00 splits/base-it.apk
11550 01-01-1970 01:00 splits/base-lt.apk
14605 01-01-1970 01:00 splits/base-pt.apk
11377 01-01-1970 01:00 splits/base-eu.apk
12409 01-01-1970 01:00 splits/base-gu.apk
11651 01-01-1970 01:00 splits/base-hu.apk
12048 01-01-1970 01:00 splits/base-ru.apk
11616 01-01-1970 01:00 splits/base-lv.apk
11314 01-01-1970 01:00 splits/base-zu.apk
11260 01-01-1970 01:00 splits/base-sv.apk
11539 01-01-1970 01:00 splits/base-iw.apk
11283 01-01-1970 01:00 splits/base-sw.apk
12110 01-01-1970 01:00 splits/base-hy.apk
43370609 01-01-1970 01:00 standalones/standalone-x86_64_xxxhdpi.apk
11904 01-01-1970 01:00 splits/base-ky.apk
11430 01-01-1970 01:00 splits/base-az.apk
13395 01-01-1970 01:00 splits/base-my.apk
11296 01-01-1970 01:00 splits/base-uz.apk
15398 01-01-1970 01:00 splits/base-zh.apk
23877 01-01-1970 01:00 splits/base-en.apk
107757 01-01-1970 01:00 splits/base-armeabi.apk
134023 01-01-1970 01:00 splits/base-x86.apk
127969 01-01-1970 01:00 splits/base-x86_64.apk
42926206 01-01-1970 01:00 splits/base-master.apk
21480838 01-01-1970 01:00 splits/base-arm64_v8a_2.apk
17508309 01-01-1970 01:00 splits/base-armeabi_v7a_2.apk
217751 01-01-1970 01:00 splits/base-armeabi_2.apk
311771 01-01-1970 01:00 splits/base-x86_2.apk
308537 01-01-1970 01:00 splits/base-x86_64_2.apk
7136923 01-01-1970 01:00 splits/base-armeabi_v7a.apk
7447993 01-01-1970 01:00 splits/base-arm64_v8a.apk
42926200 01-01-1970 01:00 splits/base-master_2.apk
16537 01-01-1970 01:00 toc.pb
--------- -------
1759809847 129 files
➜ PROJECT_NAME git:(master) ✗ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.6.1-pre.68, on Mac OS X 10.14.5 18F132, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
[!] Android Studio (version 3.3)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.34.0)
[✓] Connected device (1 available)
! Doctor found issues in 1 category.
@jereksel @ndusart
実際、これはAssets Targeting
と呼ばれ、Graphics API、Language&TextureCompressionに基づいてアセット内のディレクトリをターゲット/分割できます。
ここに見られるように: ... / bundletool / model / target / TargetedDirectorySegment.java
AABの現在のflutter@master
は、ローカルで機能します。 bundletool
を使用して、実際のデバイスでテストおよびインストールします。 build.gradle
で密度と言語の分割を無効にしたので、 build-apks
ようになります。
Length Date Time Name
--------- ---------- ----- ----
6872466 1970-01-01 01:00 splits/base-arm64_v8a.apk
6726824 1970-01-01 01:00 splits/base-master.apk
13289718 1970-01-01 01:00 standalones/standalone-armeabi_v7a.apk
13594392 1970-01-01 01:00 standalones/standalone-arm64_v8a.apk
6567785 1970-01-01 01:00 splits/base-armeabi_v7a.apk
429 1970-01-01 01:00 toc.pb
--------- -------
47051614 6 files
テストラボでテストする私もすべて緑色です。
Playストアがこのバージョンを処理してこのチャンネルをテストするのをまだ待っています。
@Tokenyetは、Playストアからアプリをダウンロードして、
.aab
アップロードした後に実行できましたか? この場合、flutter doctor
出力を貼り付けていただけませんか。
Playストアからアプリをダウンロードして実行できます。 [試してみる](https://play.google.com/store/apps/details?id=com.bumbystudio.starry_clock)ことができます。 (編集:おっと、それは動揺していません... PlayStoreから)
以下は、必要に応じて私のflutter doctor
です。 お役に立てば幸いです。
[√]フラッター(チャネルマスター、v1.6.1-pre.88、Microsoft Windows [バージョン10.0.17134.765]、ロケールzh-TW)
[√] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
[√] Android Studio(バージョン3.3)
[√] VS Code、64ビット版(バージョン1.30.2)
[!]接続されたデバイス
! 利用可能なデバイスはありません
これは私にとってはうまくいきます!
buildTypes {
リリース {
// TODO:リリースビルド用に独自の署名構成を追加します。
//今のところデバッグキーを使用して署名しているため、 flutter run --release
機能します。
signingConfig signingConfigs.debug
}
デバッグ{
ndk {
abiFilters'armeabi-v7a '
}
}
}
@SPodjasekはまだ、ABIに基づいてassets/
を分割する必要があります。 これは現在どのように行うことができますか?
デバイスにインストールしましたが、機能していないようです。 私が得たのは
黒いスクリーン。
ありがとう、
プルソサマンラマヌジャム
2019年5月23日木曜日、午後6時43分Tokenyet、 notifications @ github.comは次のように書いています。
@Tokenyethttps ://github.com/Tokenyetアプリをダウンロードできましたか
Playストアから.aabをアップロードした後に実行しますか? これが
場合は、フラッタードクターの出力を貼り付けていただけませんか?Playストアからアプリをダウンロードして実行できます。 あなたはそれを与えることができます
試してみてください
https://play.google.com/store/apps/details?id=com.bumbystudio.starry_clock
。以下は、必要に応じて私のフラッタードクターです。 お役に立てば幸いです。
[√] Flutter(チャネルマスター、v1.6.1-pre.88、Microsoft Windows [バージョン
10.0.17134.765]、ロケールzh-TW)[√] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン
28.0.3)
[√] Android Studio(バージョン3.3)
[√] VS Code、64ビット版(バージョン1.30.2)
[!]接続されたデバイス
! 利用可能なデバイスはありません—
このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/flutter/flutter/issues/18494?email_source=notifications&email_token=AAIHDZYY47H6PUQQJYEO4J3PW2J7RA5CNFSM4FFE2B7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKT
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAIHDZZXV67JCNVJYLVA3WLPW2J7RANCNFSM4FFE2B7A
。
@ndusart現時点では不可能です。おそらく、 bundletoolで機能リクエストを
@SPodjasekだから、私が言っているのは、この問題はすべて間違った方向に進んでいるということです。
すべての議論は「心配しないでください。アプリバンドルを作成できれば、すべてうまくいくでしょう」で終わっているようですが、現在も近い将来もまったくそうではありません。
フラッターチームが人々にそれがこのように可能であると思わせるのを見るのは少し残念です。
flutterは、分割自体を実行するか、VMスナップショットをlib/
フォルダーに移動して分割を機能させることで、分割APKを簡単に構築する方法を提供できるはずです(アプリバンドルも使用できます) )。
要約しましょう:
flutter build apk ...
介してファットAPKをサポートします。flutter build appbundle
を試してください。 アプリバンドルがユースケースで機能しない場合は、(1)が残りのケースをカバーする必要があります。さて、 @ blastenマスターコードを調べたところ、スナップショットがlibフォルダーに移動されました。
https://github.com/flutter/flutter/blob/dc28ba8919604ff19ea7cbad8d9400516347b08a/packages/flutter_tools/gradle/flutter.gradle#L470 -L481
つまり、アプリバンドルのサポートを追加するだけではありません。 今はもっとはっきりしています。
問題はアセットフォルダにあると述べられており、この問題とアプリバンドルのサポートはかなり独立しているため、この方向での作業は行われていませんでしたが、少し説明していただければ幸いです。
お疲れ様でした。
@ ndusart- @ blastenは、Androidの埋め込みに変更を加えて、 lib
フォルダー内のバイナリブロブを検索するようにしました。これにより、間違えない限り、両方のタイプにバンドルできます...
スナップショットがlibに移動された場合、おそらく#30846も修正されますか?
@blasten
マスターチャンネルに切り替え、アップグレードして、appbundleをビルドしました。 残念ながら、次のログキャットでグーグルプレイストアからダウンロードした後、アプリが追いかけます2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
は現在マスターになっていますが、任意の人が試してみたいですか?
build apk
のプラットフォームのリストをサポートするためにいくつかの議論があったので、次のようなことができます:flutter build apk --target-platform android-arm,android-arm64
私はまだログを持っていませんが、同じ問題があります。
こっちも一緒。 エラーが発生していました。 マスターをアップグレードしてflutter build appbundle
。 エラーを取り除きましたが、アプリを開くとクラッシュします。
最新のフラッターマスターバージョンを使用して、最新の変更を加えたアプリストアにアプリバンドルをアップロードしてみました。 64ビットエラーはなくなりましたが、アプリがすぐにクラッシュします。
本当に奇妙なのは、以下のコマンドを使用して64ビットバージョンを実行すると正常に動作することです。
flutter build apk --target-platform android-arm64
flutter install api
アプリがアプリストアのappbundleを介してインストールされた場合にのみクラッシュします。 今のところ、appstoreを32ビットapkに戻しました。
gradle.buildに特別なものは何もありません
minSdkVersion 21
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
Flutterを実行しています(チャンネルマスター、v1.6.4-pre.13、Mac OS X 10.14.5 18F132、ロケールen-US)
AppStoreにアップロードする前にこれらのバンドルをテストする方法はありますか? これはGoogleが取り組んでいる既知の問題ですか、それともgradleファイルに変更を加える必要がありますか?
@chitwoob次の手順に従ってください: https :
@blastenこの問題とは関係のないバンドルツールの問題が発生しています。
私は得る
エラー:ADBサーバーの起動に失敗しました
走っているとき
build-apks --connected-device --bundle = ./ app.aab --output = ./ my_app.apks --adb
adbが正しくインストールされています。 adb logcatを試してみると、正常に動作します。
これが私の解決策でした:
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
flutter build apk --release --target-platform=android-arm
実行しますapp-armeabi-v7a-release.apk
をPlayストアにアップロードするversionCode
インクリメントflutter build apk --release --target-platform=android-arm64
実行しますapp-arm64-v8a-release.apk
をPlayストアにアップロードするGoogle Playストアは、デバイスアーキテクチャに従ってアプリを提供します。 32ビットデバイスは満足しています。64ビットデバイスは満足しています。両方のアーキテクチャに対応しながら、APKサイズが比較的小さいままであることを知って満足しています。
同じAPKに両方のアーキテクチャのサポートを含める場合、アプリのサイズは10MB以上になると予想されます
これらの手順に従うと、「GradleビルドでAndroidパッケージを作成できませんでした」というメッセージが表示されました。 エラー
_ 1時間のデバッグの後、修正を見つけました。 _
x86とx64で異なるアプリを作成するには、次の手順に従います。
ステップ1:コードスニペットをapp/build.gradle
ファイルに含めます。 ファイルは次のようになります。
....
lintOptions {
disable 'InvalidPackage'
}
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for armeabi-v7a and arm64-v8a.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
defaultConfig {
....
ステップ2: flutter build apk --release
を使用してリリースAPKを作成する
これにより、フォルダbuild/app/outputs/apk/app.apk
x86ベースのapkが作成されます
このapkをグーグルプレイストアにアップロードします。
これまでに行われたx86
この時点では、 flutter clean
実行しないでください
私はこれをやっていて、x64apkをビルドするときにエラーが発生していました
ステップ3: pubspec.yaml
を開き、 version
から変更します
version: 1.0.0+1
からversion: 1.0.0+2
+の横の数字はバージョンコードです
ステップ4:コマンドを実行しますflutter build apk --release --target-platform=android-arm64
このコマンドが完了したら、 build/app/outputs/apk/release/
ます。 そこにapp-arm64-v8a-release.apk
という名前のapkがあります。 これは、バージョンコードが異なる64ビットのapkファイルです。
次に、このx64APKをPlayストアにアップロードします。 Playストアにx86アプリとx64アプリの両方をアップロードしました。
長いコメントになりますが、これで問題は完全に修正されました
[...]
x86とx64で異なるアプリを作成するには、次の手順に従います。ステップ1:コードスニペットを
app/build.gradle
ファイルに含めます。 ファイルは次のようになります。.... lintOptions { disable 'InvalidPackage' } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } } defaultConfig { ....
ステップ2:
flutter build apk --release
を使用してリリースAPKを作成する
[...]
あなたの答えに同意します。 ステップ1に従う必要はありませんでしたが(デフォルトのbuild.gradleを使用しました)、私にとってはうまくいきます
次に、ビルド番号とバージョンをインクリメントして、GooglePlayがそれを受け入れるようにする必要があります。
手持ちのflutter build appbundle
でまだ問題があります。
長いコメントになりますが、これで問題は完全に修正されました
[...]
x86とx64で異なるアプリを作成するには、次の手順に従います。
ステップ1:コードスニペットをapp/build.gradle
ファイルに含めます。 ファイルは次のようになります。.... lintOptions { disable 'InvalidPackage' } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } } defaultConfig { ....
ステップ2:
flutter build apk --release
を使用してリリースAPKを作成する
[...]あなたの答えに同意します。 ステップ1に従う必要はありませんでしたが(デフォルトのbuild.gradleを使用しました)、私にとってはうまくいきます
次に、ビルド番号とバージョンをインクリメントして、GooglePlayがそれを受け入れるようにする必要があります。
手持ちの
flutter build appbundle
でまだ問題があります。
動作していません。 私はとても怒っています。 x86エミュレーターと実際のアームデバイスにデプロイしようとすると、アプリケーションがクラッシュしました。 マスター/ベータ/安定チャネルで試してみました。 リリースの準備はできていません。 それはまだ私たちにとってショーストッパーです。 Appbundleコマンドは、再生用のインストール可能なバンドルを生成しますが、実行時にアプリケーションはスプラッシュ画面のみを表示してからフリーズします。 Flutterチームは明確な解決策またはWAを提供してください。
@mormihごございます-私たちは複製に取り組んでいます。 よろしければ、以下を含むメール([email protected])を送っていただければ助かります。
--bug-report
(例: flutter build appbundle --bug-report
)を使用してビルドコマンドを実行し、関連するbugreport.zip
ファイルを添付しますadb bugreport
の結果を添付しますありがとう!
@tvolkert次のメッセージでクラッシュするという問題もあります。
チェックに失敗しました:vm。 VMを初期化できる必要があります。
私のホストプラットフォームはmacとmacOS10.14.5です。 あなたはそれを再現することができましたか、それともあなたが上で書いた手順に従って私にお願いしますか? また、OPとは別の問題なので、専用のチケットが必要かもしれません。乾杯
@mormihわかりませんが、abiリストにx86
も含めてみましたか?
include "armeabi-v7a", "arm64-v8a", "x86"
flutter build appbundle
(マスター上)も私には機能しませんでした。他の人が指摘したように、スプラッシュスクリーンが動かなくなってしまいました...
これまでに32ビットと64ビットの両方で(Playストアで)リリースするために私が見つけた唯一の回避策は次のとおりです。 (スレッドで部分的にカバーされていますが、誰かを助けるかもしれません):
+デフォルトのビルドapkコマンドでv7フィルターを使用してapkを作成します。
app / build.gradleファイル:
defaultConfig {
...
ndk{ abiFilters "armeabi-v7a" }
}
その後、実行しますflutter build apk
(デフォルトは--release)
ビルド番号をpubspec.yamlにバンプします。
例: version: 1.1.0+6
からversion: 1.1.0+7
ターゲットプラットフォームとしてarm64を使用して+ビルドでv8フィルターを使用してapkを作成します。
次に、build.gradleを次のように更新します。
defaultConfig {
...
ndk{ abiFilters "arm64-v8a" }
}
その後、実行しますflutter build apk --release --target-platform android-arm64
2つのapkをアップロードする(したがって2つのビルド番号を作成する)必要があるオーバーヘッドが含まれていますが、少なくともそれは仕事をしているようで、32ビットデバイスと64ビットデバイスの両方でリリースできます...
注:x86を手放したのは、モバイルデバイスのごく少数のグループ(および場合によってはユーザーがいない)のみが含まれ、さらにエミュレーターにリリースビルドが必要ないためです(テストにはデバッグで十分です)。 しかし、もちろんこれは他の人には当てはまらないかもしれません。
@ezmegyメソッドは私のために働いた唯一のものです。 ありがとう
コメントのどこかで誰かがこれを残しました。
これは私とその唯一のターミナルコードのために働いています。
私が嫌いな2つのファイルを出力し、2つのバージョンを作成します。
@ezmegyありがとうございます! あなたは私の日を救う
@ezmegyに感謝し
ありがとう@ezmegy !
役立つかもしれない私の現在のワークフローを共有したいと思います:
アーキテクチャごとにapp/build.gradle
ビルドフレーバーを作成します
flavorDimensions 'arch'
productFlavors {
arm32 {
dimension 'arch'
ndk {
abiFilters 'armeabi-v7a'
}
}
arm64 {
dimension 'arch'
ndk {
abiFilters 'arm64-v8a'
}
}
次に、次の方法で両方を構築できます。
flutter build apk --flavor arm32
とflutter build apk --flavor arm64 --target-platform android-arm64
ビルドごとにgradleを変更せずに
バージョンコードに関しては、デフォルトで1つを設定し、それから他を派生させたいと思います
たとえば、 arm32
を1.0.0 + 10000に設定し、 arm64
バージョンコードを生成します。これは1.0.0 +10001です。
これは、bashを使用して(またはfastlaneを使用している場合はfastfile内で)簡単に生成できるはずです。
--build-number
引数を使用するか、使用している場合はfastlaneを使用して、ビルド番号を設定できます。
このバージョンコードスクリプトは、CI / CDで役立ちます😄
CMIIW
私にとって、これはかなりうまくいきました
https://github.com/flutter/flutter/issues/10728#issuecomment -461375218
長いコメントになりますが、これで問題は完全に修正されました
これが私の解決策でした:
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
flutter build apk --release --target-platform=android-arm
実行しますapp-armeabi-v7a-release.apk
をPlayストアにアップロードするversionCode
インクリメントflutter build apk --release --target-platform=android-arm64
実行しますapp-arm64-v8a-release.apk
をPlayストアにアップロードするGoogle Playストアは、デバイスアーキテクチャに従ってアプリを提供します。 32ビットデバイスは満足しています。64ビットデバイスは満足しています。両方のアーキテクチャに対応しながら、APKサイズが比較的小さいままであることを知って満足しています。
同じAPKに両方のアーキテクチャのサポートを含める場合、アプリのサイズは10MB以上になると予想されますこれらの手順に従うと、「GradleビルドでAndroidパッケージを作成できませんでした」というメッセージが表示されました。 エラー
_ 1時間のデバッグの後、修正を見つけました。 _x86とx64で異なるアプリを作成するには、次の手順に従います。
ステップ1:コードスニペットを
app/build.gradle
ファイルに含めます。 ファイルは次のようになります。.... lintOptions { disable 'InvalidPackage' } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } } defaultConfig { ....
ステップ2:
flutter build apk --release
を使用してリリースAPKを作成する
これにより、フォルダbuild/app/outputs/apk/app.apk
x86ベースのapkが作成されます
このapkをグーグルプレイストアにアップロードします。
これまでに行われたx86この時点では、
flutter clean
実行しないでください
私はこれをやっていて、x64apkをビルドするときにエラーが発生していましたステップ3:
pubspec.yaml
を開き、version
から変更します
version: 1.0.0+1
からversion: 1.0.0+2
+の横の数字はバージョンコードです
ステップ4:コマンドを実行します
flutter build apk --release --target-platform=android-arm64
このコマンドが完了したら、
build/app/outputs/apk/release/
ます。 そこにapp-arm64-v8a-release.apk
という名前のapkがあります。 これは、バージョンコードが異なる64ビットのapkファイルです。次に、このx64APKをPlayストアにアップロードします。 Playストアにx86アプリとx64アプリの両方をアップロードしました。
それはステップ1なしでも私に働いています。みんなに感謝します。 私はndkフィルターを使用しましたndk {
abiFilters "armeabi-v7a"、 "x86"
}
ビルドgradleファイルで。 必要かどうかはわかりません。 それ以外は、手順2のすべての手順を実行し、32ビット用と64ビット用の2つのapkをアップロードしました。
以前にappbundleをアップロードしていましたが、今回はapkファイルをアップロードしました。 正常に動作しています。 appbundleで確認し、2つのapkをアップロードせずに修正しようとしています。
ノート :
このプロセスを実行する前に、次のarm-64ビットデバイスでアプリがクラッシュしました
Redmi MI、
Redmi 3S Prime
8xを称える
次のアームで動作-64ビットデバイス
サムスンギャラクシーJ4
サムスンOn8
こんにちはフラッターチーム、
pls。 中国などの他のアプリ市場も検討してください。 中国では、Google Playストアの使用は許可されていません。代わりに、XiaoMi、HuaWei、Aliなどの多くのアプリ市場があります。
これらのアプリ市場では、異なるアーキテクチャでapkリリースを提供することは許可されていません。アップロードできるapkはリリースごとに1つだけであり、そのリリースは前のリリースのapkを上書きします。 つまり、現在の回避策は「armeabi-v7a」を使用することです。
間違っている場合は、「armeabi-v7a」を使用して修正してください。すべての64ビットデバイスで32ビットのlibflutter.soが実行され、速度が低下すると思います。
したがって、apkのサイズは大きくなりますが、フラッターチームが32ビットと64ビットの両方のlibflutter.soを含むapkを構築できるようにする方法を提供できるかどうかを提案します。 (中国では、通常、インターネットの速度が非常に速く、4Gの無限の使用計画を立てるためにほとんどお金を払っていません。また、人々は通常、apkのサイズを気にしません)
こんにちはフラッターチーム、
pls。 中国などの他のアプリ市場も検討してください。 中国では、Google Playストアの使用は許可されていません。代わりに、XiaoMi、HuaWei、Aliなどの多くのアプリ市場があります。
これらのアプリ市場では、異なるアーキテクチャでapkリリースを提供することは許可されていません。アップロードできるapkはリリースごとに1つだけであり、そのリリースは前のリリースのapkを上書きします。 つまり、現在の回避策は「armeabi-v7a」を使用することです。
間違っている場合は、「armeabi-v7a」を使用して修正してください。すべての64ビットデバイスで32ビットのlibflutter.soが実行され、速度が低下すると思います。
したがって、apkのサイズは大きくなりますが、フラッターチームが32ビットと64ビットの両方のlibflutter.soを含むapkを構築できるようにする方法を提供できるかどうかを提案します。 (中国では、通常、インターネットの速度が非常に速く、4Gの無限の使用計画を立てるためにほとんどお金を払っていません。また、人々は通常、apkのサイズを気にしません)
あなたの場合、標準の32ビットを提供でき、すべてがうまくいくでしょう?
64ビットの警告はGooglePlay専用です。 これは中国の問題ではないと思います。
(間違っている場合は訂正してください。)
@ KunalT6569あなたが述べたように私はステップ3を推測します:
ステップ3:pubspec.yamlを開き、バージョンをから変更します
バージョン:1.0.0 + 1からバージョン:1.0.0 + 2
両方のapkファイルをGooglePlay Consoleにアップロードできるようにするために必要ですよね?
もう1つ質問があります。両方のapkファイルの準備ができたら、 App releases\New Release\Browse Files
セクションからアップロードするだけですよね。
@ angel1stはい、 Google Playでは同じバージョンコードの2つのapkをアップロードできないため、手順3が必要です。
複数のapkをグーグルプレイにアップロードするために、私はこのビデオを参照しました。
https://www.youtube.com/watch?v=rMl_oLlf_g0
ご参考までに:
現在の計画では、今後10日ほどで最近の開発リリースの1つを使用してベータ版をリリースする予定です。 次に、Playストアからの64ビットビルドに関する警告をトリガーしないAndroidでの出荷方法、64ビットをサポートするAPKをパッケージ化する方法、および証明する方法について、文書化されたプロセスが更新されるまで待つ予定です。そのプロセスを使用してギャラリーをリリースできます。それが完了するとすぐに、プロセスに従って新しいベータ版をリリースし、1週間ほど後に安定版にプッシュします。
これは、6月上旬にベータ版があり、6月下旬または7月上旬にベータ版があり、その後すぐに安定することを意味します。
@Hixieここで別の問題が発生しました
x86、x86_64バージョンを生成しない最新のフラッター(現在のマスター)によるアプリバンドル
マスターブランチによって生成されたファイル
androidstudioで旧バージョンによって生成されたファイル
予想される動作は、新しいバージョンで作成されたファイルにx86、x86_64バージョンも含めることです。
この問題とは無関係に@canewsin、我々は、x86リリースのバイナリを提供しない(https://github.com/flutter/flutter/issues/9253) - 「旧バージョンは」であるhttps://github.com/flutter/ flutter / issues / 18494#issuecomment -497118805はデバッグビルドを参照していますか?
同じ問題があります。32ビット用にビルドすると64ビットデバイスが除外されますが、それらで実行されます。
--target-platform android-arm64
指定して64用にビルドすると、64ビットデバイスでは機能しますが、32ビットデバイスではクラッシュします。 また、Googleは2019年にapkのアップロードを64ビットに制限します。Flutterチーム、この基本的な問題を解決してください!
defaultConfig {
...。
versionName flutterVersionName
ndk.abiFilters'armeabi-v7a '、' arm64-v8a '、' x86 '、' x86_64 '
}
// 準備!
最新のフラッターマスターブランチを使用してアプリをコンパイルし、アプリバンドルとしてPlayストアにアップロードしましたが、デバイスでアプリがクラッシュしますこのログはテストラボから取得されます
05-31 07:50:28.384: D/AndroidRuntime(11036): --------- beginning of crash
05-31 07:50:28.384: E/AndroidRuntime(11036): FATAL EXCEPTION: main
05-31 07:50:28.384: E/AndroidRuntime(11036): Process: in.canews.social, PID: 11036
05-31 07:50:28.384: E/AndroidRuntime(11036): java.lang.RuntimeException: Unable to create application in.canews.social.App: java.lang.NullPointerException: Attempt to get length of null array
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5794)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.-wrap1(Unknown Source:0)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.os.Handler.dispatchMessage(Handler.java:105)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.os.Looper.loop(Looper.java:164)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.main(ActivityThread.java:6541)
05-31 07:50:28.384: E/AndroidRuntime(11036): at java.lang.reflect.Method.invoke(Native Method)
05-31 07:50:28.384: E/AndroidRuntime(11036): at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
05-31 07:50:28.384: E/AndroidRuntime(11036): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
05-31 07:50:28.384: E/AndroidRuntime(11036): Caused by: java.lang.NullPointerException: Attempt to get length of null array
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.listLibs(FlutterMain.java:381)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.initAot(FlutterMain.java:412)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:164)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:143)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.app.FlutterApplication.onCreate(FlutterApplication.java:22)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
05-31 07:50:28.384: E/AndroidRuntime(11036): ... 8 more
05-31 07:50:28.392: W/ActivityManager(897): Force finishing activity in.canews.social/.MainActivity
フラッタードクター-v
C:\flutter\flutter\bin>flutter doctor -v
[√] Flutter (Channel master, v1.6.7-pre.7, on Microsoft Windows [Version 10.0.17763.503], locale en-IN)
• Flutter version 1.6.7-pre.7 at C:\flutter\flutter
• Framework revision 6884146925 (2 days ago), 2019-05-29 12:52:05 -0700
• Engine revision 8dc3a4cde2
• Dart version 2.3.2 (build 2.3.2-dev.0.0 e3edfd36b2)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at C:\Users\PramUkesh\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.4)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 35.3.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
[√] VS Code (version 1.34.0)
• VS Code at C:\Users\PramUkesh\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.0.2
[√] Connected device (1 available)
• Z2 Plus • 2e9087c2 • android-arm64 • Android 9 (API 28)
• No issues found!
@canewsinは、この問題がhttps://github.com/flutter/engine/pull/9078で修正されたようgit fetch upstream
&& git merge upstream/master
更新します
以前のコメントですでに回答されている質問を繰り返した後、私は現在どのようなオプションがあるかを文書化した短い記事を書きましたhttps://medium.com/@truongsinh/flutter -android-64-bit-so-what-the-fuss -15da6f8e3a46。 TLDRは次のとおりです。
@ truongsinh 、Playストアにデプロイするための32ビットと64ビットの両方のバイナリを含むアプリバンドルを構築するためにflutter build appbundle
を使用するためのサポートも最終決定しています。 詳細については、 https://github.com/flutter/flutter/issues/31922を参照して
@ truongsinh 、Playストアにデプロイするための32ビットと64ビットの両方のバイナリを含むアプリバンドルを構築するために
flutter build appbundle
を使用するためのサポートも最終決定しています。 詳細については、#31922を参照してください。試してみて、問題が発生した場合はお知らせください。
うん、私はまだflutter build appbundle
がアプリを作成するのを待っていますが、スタックしたりクラッシュしたりしません:D
うん、私はまだフラッタービルドappbundleがスタックしたりクラッシュしたりしないアプリを生成するのを待っています:D
認められました🙂。 私たちが見ることができるこの出来事の再現可能なケースがあれば、それは素晴らしいことです。 1.7.1リリースから署名されていない.aabファイルを作成し、それを電子メール([email protected])で送っていただければ幸いです。
参考までに、64ビットサポートに関して次の発表が
https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc
私もこの問題を抱えています。
Android Studioでアプリバンドルをビルドすると、シミュレーターに正常にロードできますが、Playストアからダウンロードするとアプリがクラッシュします
フラッターマスターブランチを使用してアプリバンドルを構築している皆さん、こんにちは。
アプリをデバッグしている場合、アプリは正常に実行されます
デバッグモードではJITバイナリが生成され、リリースモードではAOTバイナリが生成されるため、Playストアからのダウンロード時に一部の顔がクラッシュします。これは、アプリバンドルがデバイスで機能しているかどうかを確認したためです。現在、アプリの配置も異なります。アプリを正しくテストするためです。
デバイスに基づいて特定の構成のみのアプリバンドルからapkを生成し、デバイスからデバッグアプリを完全にアンインストールし、アプリバンドルからこの新しい出力アプリをインストールします。クラッシュした場合は、Playストアなどからダウンロードしたときにクラッシュします。これが他のユーザーに役立つことを願っています。 。
cmd行からのアプリバンドルからAPKへの出力の参照
https://developer.android.com/studio/command-line/bundletool
参考までに、アプリバンドルのクラッシュは、 https://github.com/flutter/flutter/issues/31922でより適切に追跡され
こんにちは、みんな、
TLDR:
Playストアからダウンロードしたときのクラッシュの問題を特定し、修正に取り組んでいます。これは、上記のhttps://github.com/flutter/flutter/issues/31922#issuecommentで概説したのと同じ時間枠内に配信され
高レベルの説明
興味のある方は、Android Marshmallow以降を実行しているデバイスでは、Playストアが複数のABIを含むアプリバンドルとしてパッケージ化されたアプリを検出し、それらのアプリを「分割」の形式でデバイスにインストールするという、やや長い説明があります。 APK」。 これを行うと、そこに含まれる.soファイルはAPK zipアーカイブから抽出されません。これは、分割されていないAPKの動作とは異なります。 .soファイルを見つけるためのFlutterエンジンの
解決策は、ライブラリを
dlopen
するだけで、Androidはライブラリが配置されている場所(つまり、アーカイブ内かどうか)を抽象化します。 ただし、必要な.soファイルは、そもそも真のライブラリではありませんでした。これらは、DartVMにロードしたデータの単なるバイナリブロブでした。 そのため、この一環として、ELFライブラリを作成しています(例:https://github.com/dart-lang/sdk/commit/6d608fb52bc1926a73d986d73ab228b77cfb7ca2およびhttps://github.com/flutter/flutter/pull/33696)。
4. flutter build apk --release --target-platform = android-arm64
コードスニペットをbuild.gradleに追加した後、このエラーが発生しますGradle build failed to produce an Android package.
- flutter build apk --release --target-platform = android-arm64
コードスニペットをbuild.gradleに追加した後、このエラーが発生します
Gradle build failed to produce an Android package.
https://developer.android.com/distribute/best-practices/develop/64-bit
誰かが問題を解決できますか? 32ビットapkでしか動作しないフラッターのアプリがありますが、64は動作しないかインストールされません。 64ビットの携帯電話でテストしています
こんにちは、みんな、
修正はすべてmaster
チャネルのツリーの先端に到達したと考えています。 それらを試してみたい場合は、次の方法で行います。
flutter build appbundle
デフォルトでは、App Bundleには、Dartコードと、 armeabi-v7a (32ビット)およびarm64-v8a (64ビット)用にコンパイルされたFlutterランタイムが含まれています。
flutter build apk --split-per-abi
このコマンドにより、2つのAPKが生成されます。
build/app/outputs/apk/release/app-armeabi-v7a-release.apk
build/app/outputs/apk/release/app-arm64-v8a-release.apk
flutter build apk
これにより、すべてのターゲットABI用にコンパイルされたコードを含むファットAPKが生成されます。 このようなAPKは、分割されたAPKよりもサイズが大きくなるため、ユーザーはデバイスのアーキテクチャに適用できないネイティブバイナリをダウンロードすることになります。
flutter build apk --split-per-abi
このコマンドにより、2つのAPKが生成されます。
build / app / outputs / apk / release / app-armeabi-v7a-release.apk
build / app / outputs / apk / release / app-arm64-v8a-release.apk
@ tvolkert-この特定のシナリオでは、各リリースのバージョン番号はどうですか? 私が知っている限り、それらは異なっている必要があるので、両方をGooglePlayにアップロードできます。 APKが構築されたときに、その部分は何らかの形で管理されていますか? そうでない場合、それはどのように処理されることになっていますか?
@ angel1st https://developer.android.com/studio/build/configure-apk-splits#configure -APK-versionsのガイダンスに従って、APKのビルド時に自動的に管理されます
@tvolkertこれがいつ安定したチャネルに
@ndusart 、: //github.com/flutter/flutter/issues/18494#issuecomment-498880287を参照
複数のAndroidデバイスでこれが機能していることを確認できます(マスターに切り替えた後)。 なんて命の恩人、ありがとう。
@tvolkertヒープに感謝します。 これをFlutter安定化するためのタイムラインはありますか?
@ harsha973あなたは真剣にタグを付けて、彼があなたの上の2つの投稿に答えたのとまったく同じ質問をしています。 無知であるだけでなく、無礼の危機に瀕している。
@PerLyckeそれについて申し訳ありません。
マスターチャネルをチェックアウトし、フラッターをアップグレードしましたが、次のコマンドを使用してアプリを実際にビルドできません。
flutter build apk --release --flavor production -t lib/main.dart
結果は次のとおりです。
* What went wrong:
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForProductionRelease'.
> More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'
同様のStackOverflowの問題の回答は実際には役に立ちません。
@MichaelRFairhurst flutter build apk --release
は私にとってはうまく機能したので、マスターの新しい更新にはフレーバー設定の更新も必要になるかもしれません。
申し訳ありませんが、それは答えではありませんが、少なくとも正しい方向へのポイントです。
修正はいつベータ版になりますか?
@derolfは、ターゲットタイムラインを含む最新の更新としてhttps://github.com/flutter/flutter/issues/18494#issuecomment-498880287を参照して
こんにちは、みんな、
これらの修正は、 v1.7.4
リリース以降のdev
チャネルで有効になりました。
この64ビットのものを理解しようとしている間、私は@michalsuryntequiqoと同じ問題を
flutter build apk --flavor=dev -t lib/main-dev.dart
実行します
[ +3 ms] FAILURE: Build failed with an exception.
[ +1 ms] * What went wrong:
[ ] Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDevRelease'.
[ ] > More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'
[ ] * Try:
[ ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[ ] * Get more help at https://help.gradle.org
[ ] BUILD FAILED in 1m 3s
[ +370 ms] Running Gradle task 'assembleDevRelease'... (completed in 64.0s)
[ +4 ms] "flutter apk" took 69,789ms.
[ ] "flutter apk" took 69,789ms.
編集:
8627ff433b4658195e66b9c0034902116f53d580の直前にコミットを試してみたところ、 https://github.com/flutter/flutter/issues/24106が原因で通常のエラーGradle build failed to produce an Android package.
apkが生成されます
@blasten変更を加えてこれを再び機能させる方法はありますか?
編集2:
このための新しい問題を開きました: https :
今日フラッターのドキュメントを読んだところ、次のことがわかりました。
コマンドラインから:
cdと入力します
(交換アプリケーションのディレクトリを使用します。)
flutter build apk--split-per-abiを実行します
(flutterビルドコマンドのデフォルトは--releaseです。)
このコマンドにより、2つのAPKファイルが作成されます。
/build/app/outputs/apk/release/app-armeabi-v7a-release.apk /build/app/outputs/apk/release/app-arm64-v8a-release.apk
@ eugenio-tesio --split-per-abi
を使用する場合、どのバージョンコードが使用されますか?
ドキュメントでそれを見て、ここで公開しようと思いました。 私はそれをテストしませんでした。
コマンドを実行しても機能しませんでした。 それは言う:
「split-per-abi」という名前のオプションが見つかりませんでした。
'flutter -h'(または 'flutter
-h ')使用可能なフラッターコマンドとオプション。
フラッタードクター:
Flutter1.6.3•チャネルベータ• https :
フレームワーク•リビジョンbc7bc94083(4週間前)•2019-05-23 10:29:07 -0700
エンジン•リビジョン8dc3a4cde2
ツール•Dart2.3.2(ビルド2.3.2-dev.0.0 e3edfd36b2)consumos_appで「flutterpubupgrade」を実行しています... 19,8s
フラッタードクターを実行しています...
ドクターサマリー(すべての詳細を表示するには、フラッタードクター-vを実行します):
[√]フラッター(チャネルベータ、v1.6.3、Microsoft Windows [Versión10.0.17134.829]、ロケールes-AR)
[√] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
[√] Android Studio(バージョン3.4)
[√] IntelliJ IDEA Ultimate Edition(バージョン2019.1)
[√] VSコード(バージョン1.26.1)
[√] VS Code、64ビット版(バージョン1.33.1)
[!]接続されたデバイス
! 利用可能なデバイスはありません
この機能はまもなく利用可能になると思います。
ドキュメントでそれを見て、ここで公開しようと思いました。 私はそれをテストしませんでした。
コマンドを実行しても機能しませんでした。 それは言う:「split-per-abi」という名前のオプションが見つかりませんでした。
使用可能なフラッターコマンドとオプションについては、「flutter-h」(または「flutter-h」)を実行します。フラッタードクター:
Flutter1.6.3•チャネルベータ• https :
フレームワーク•リビジョンbc7bc94 (4週間前)•2019-05-23 10:29:07 -0700
エンジン•リビジョン8dc3a4cde2
ツール•Dart2.3.2(ビルド2.3.2-dev.0.0 e3edfd36b2)
consumos_appで「flutterpubupgrade」を実行しています... 19,8s
フラッタードクターを実行しています...
ドクターサマリー(すべての詳細を表示するには、フラッタードクター-vを実行します):
[√]フラッター(チャネルベータ、v1.6.3、Microsoft Windows [Versión10.0.17134.829]、ロケールes-AR)
[√] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
[√] Android Studio(バージョン3.4)
[√] IntelliJ IDEA Ultimate Edition(バージョン2019.1)
[√] VSコード(バージョン1.26.1)
[√] VS Code、64ビット版(バージョン1.33.1)
[!]接続されたデバイス
! 利用可能なデバイスはありませんこの機能はまもなく利用可能になると思います。
これはdev
チャネル/バージョン1.7.4以降のみであることに注意してください。 beta
チャネル/バージョン1.6.3を実行しています
私はそれを試しました(Codemagicを使用して構築および公開)、そしてそれは本当にうまくいきました。 ありがとう!
グーグルはまだ私がappbundleを使用していないと不平を言っています。 この警告を考えると、apkを公開することはあまり意味がありませんか?
appbundleを使用しますが、これにより、Googleの自動テスト(起動前レポートの生成)が機能しなくなります。 このために新しい問題を開く必要がありますか?
@nohliアプリバンドル/ APKに関する最新情報を反映するようにドキュメントを更新しました: https : //flutter.dev/docs/deployment/android#building-the-app-for-release 。
Googleの自動テストに関する問題を自由に提出してください。
バンドルからアプリをビルドしましたが、64ビットデバイスで実行した後、32ビットデバイスと64ビットデバイスの両方のアプリをビルドするとlibflutter.soが見つからないと表示されます。 単一のバンドルファイルで両方のアーキテクチャにlibflutter.soを追加するにはどうすればよいですか?
@nohliアプリバンドル/ APKに関する最新情報を反映するようにドキュメントを更新しました: https : //flutter.dev/docs/deployment/android#building-the-app-for-release 。
Googleの自動テストに関する問題を自由に提出してください。
@blastenリンクに記載されている手順では、バンドルに64ビットAPKが生成されませんでした。 バンドルをアップロードしたとき、APKが64ビットに準拠していないという同じエラーがGooglePlayストアにそのまま表示されていました。
@ wal33d006は、ページ上部の免責事項を参照してください。これは、 v1.7.4
以降(現在は開発チャネルまたはマスターチャネル)にのみ適用されます。
@ wal33d006は、ページ上部の免責事項を参照してください。これは、
v1.7.4
以降(現在は開発チャネルまたはマスターチャネル)にのみ適用されます。
@tvolkert開発チャネルまたはマスターチャネルを介してアプリケーションをビルドすることすらできません。
これは、開発チャネルまたはマスターチャネルでビルドしたときの出力です。
コンパイラメッセージ:
file:///Users/waleed/.pub-cache/hosted/pub.dartlang.org/cached_network_image-0.5.1/lib/cached_network_image。 dart:199 :38:エラー:引数タイプ 'void Function(ImageInfo、bool)'をパラメータータイプ 'ImageStreamListener'に割り当てることができません。
失敗:ビルドは例外で失敗しました。
どこ:
スクリプト '/Users/waleed/Developer/flutter-sdk/flutter/packages/flutter_tools/gradle/flutter.gradle'行:638
何が悪かったのか:
タスク ': app:compileflutterBuildReleaseArm 'の実行に失敗しました。
プロセス 'コマンド' / Users / waleed / Developer / flutter-sdk / flutter / bin / flutter ''がゼロ以外の終了値1で終了しました
試す:
--stacktraceオプションを指定して実行し、スタックトレースを取得します。 --infoまたは--debugオプションを指定して実行すると、より多くのログ出力が得られます。 --scanを指定して実行すると、完全な洞察が得られます。
https://help.gradle.orgでさらにヘルプを入手して
14秒でビルドに失敗しました
Gradleタスクの実行 'bundleRelease'..。
Gradleタスク 'bundleRelease'を実行しています...完了15.0s
GradleタスクbundleReleaseが終了コード1で失敗しました
@ wal33d006 package:cached_network_image
はバージョン0.8.0
なり、 0.5.1
を使用しています-新しいバージョンのFlutterに対して実行している場合は、バージョン制約を更新する必要があります。あなたのpubspec.yaml
とflutter packages upgrade
@tvolkert v1.7.4では、コマンドflutter build appbundleを使用してバンドルをビルドすると、64ビットデバイス用にファイルlibflutter.soが自動的に追加されると言っていますか?
@ nimesh1997うん、それを安定させるビルドはおそらく新しいバージョンになるでしょうが。
@tvolkertチャネルを###マスターチャネルに変更し、
** cached_network_image> = 0.7.0は、path_provider ^ 0.5.0 +1に依存するflutter_cache_manager ^ 0.3.2に依存するため、cached_network_image> = 0.7.0には、path_provider ^ 0.5.0 +1が必要です。
@ nimesh1997別の問題を提出して、私にccを
@tvolkertフラッターバージョン1.7.4が安定したチャネルで利用可能になるのはいつですか?また、以下のエラーがフラッターバージョン1.7.4で解決された場合、そのエラーのために64ビットデバイスでは実行されません(libflutter.soがありません)?
これは、flutterv1.7.4以降で実行したときに得られる出力です。-
コンパイラメッセージ:
file:///home/zunroof-dev-4/package_flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_image-1.0.0/lib/network。 ダーツ:75 :31:
エラー:引数タイプ 'Null Function(StringBuffer)'をパラメータータイプ 'Iterableに割り当てることができません
エラーコンパイル、ログを生成せず、フラッタードクター-vはエラーを指しません。 私は何をすべきか?
アプリをPlayストアにデプロイする場合は、アプリを使用することをお勧めします
APKをバンドルまたは分割して、APKのサイズを縮小します。
アプリバンドルを生成するには、次のコマンドを実行します。
flutter build appbundle --target-platform android-arm、android-arm64
詳細については、 https :
ABIごとにAPKを分割するには、次のコマンドを実行します。
flutter build apk --target-platform android-arm、android-arm64
--split-per-abi
詳細:
https://developer.android.com/studio/build/configure-apk-splits#configur
e-abi-split
Gradleを初期化しています... 7,4秒
依存関係を解決しています... 4,3s
registerResGeneratingTaskは非推奨です。registerGeneratedResFolders(FileCollection)を使用してください
registerResGeneratingTaskは非推奨です。registerGeneratedResFolders(FileCollection)を使用してください
registerResGeneratingTaskは非推奨です。registerGeneratedResFolders(FileCollection)を使用してください
Gradleタスクの実行 'assembleRelease' .. ..
Gradleタスクを実行しています 'assembleRelease' ...完了9,0s
GradleビルドはAndroidパッケージの作成に失敗しました。
@ leonardop21で試してみてください
フラッターラン-v
@canewsin
ああ、神様。 今何をしたらいいのかわからない
GradleビルドはAndroidパッケージの作成に失敗しました。
(package:flutter_tools / src / android / gradle.dart:514:7)
(dart:async-patch / async_patch.dart:77:64)
(dart:async / future_impl.dart:639:45)
(dart:async-patch / async_patch.dart:77:64)
(dart:async / future_impl.dart:639:45)
(dart:async / future_impl.dart:513:7)
(dart:async / zone.dart:963:23)
(dart:isolate-patch / isolate_patch.dart:116:13)
(dart:isolate-patch / isolate_patch.dart:173:5)
ドキュメントを更新して、32ビットおよび64ビットのバイナリでAPKを構築する方法を示しました。 https://flutter.dev/docs/deployment/android#building-the-app-for-release 。
dev
チャネルを使用してください: v1.7.9
以上。 チームは、今週の金曜日(2019年6月28日)までにベータ版への最新の変更を宣伝するために取り組んでいます。
コンパイラメッセージ:
file:///Users/systemgnk/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flare_flutter-1.5.2/lib/flare。 dart:1033 :18:エラー:引数タイプ「Int32List」をパラメータタイプ「Uint16List」に割り当てることができません。
失敗:ビルドは例外で失敗しました。
どこ:
スクリプト '/Users/systemgnk/Desktop/flutter/packages/flutter_tools/gradle/flutter.gradle'行:631
何が悪かったのか:
タスク ': app:compileflutterBuildReleaseArm 'の実行に失敗しました。
プロセス 'コマンド' / Users / systemgnk / Desktop / flutter / bin / flutter ''がゼロ以外の終了値1で終了しました
試す:
--stacktraceオプションを指定して実行し、スタックトレースを取得します。 --infoまたは--debugオプションを指定して実行すると、より多くのログ出力が得られます。 --scanを指定して実行すると、完全な洞察が得られます。
https://help.gradle.orgでさらにヘルプを入手して
22秒でビルドに失敗しました
Gradleタスクの実行 'assembleRelease' .. ..
Gradleタスク 'assembleRelease'を実行しています...完了23.3s
GradleタスクassembleReleaseが終了コード1で失敗しました
[✓] Flutter(Channel dev、v1.7.10、Mac OS X 10.13.6 17G65、ロケールen-US)
•/ Users / systemgnk / Desktop / flutterにあるFlutterバージョン1.7.10
•フレームワークリビジョン9a3a7490c8(2日前)、2019-06-25 15:59:15 +0200
•エンジンリビジョンae8e6d9f46
•Dartバージョン2.4.0
[✓] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
•/ Users / systemgnk / Library / Android / sdkにあるAndroidSDK
•AndroidNDKの場所が構成されていません(オプション。ネイティブプロファイリングのサポートに役立ちます)
•プラットフォームandroid-28、build-tools 28.0.3
•Javaバイナリ:/ Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1248-b01)
•すべてのAndroidライセンスが受け入れられました。
[✓] Xcode-iOSおよびmacOS用に開発(Xcode 10.1)
•/ Applications / Xcode.app / Contents / DeveloperのXcode
•Xcode10.1、ビルドバージョン10B61
•CocoaPodsバージョン1.6.0
[✓] iOSツール-iOSデバイス用に開発
•ios-deploy1.9.4
[✓] Chrome-Web用に開発
•/ Applications / GoogleChrome.app/Contents/MacOS/GoogleChromeのChrome
[✓] Android Studio(バージョン3.3)
•/ Applications / AndroidStudio.app/ContentsにあるAndroidStudio
•Flutterプラグインバージョン33.3.1
•Dartプラグインバージョン182.5215
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1248-b01)
[✓]接続されたデバイス(4つ利用可能)
•x86用に構築されたAndroidSDK•エミュレーター-5554•android-x86•Android7.0(API 24)(エミュレーター)
•システムのiPhone•73145c33ee6d180a2db3d4a96b908ceb4c49065b•ios•iOS12.3.1
•macOS•macOS•darwin-x64•MacOS X 10.13.6 17G65
•Chrome•chrome•web-javascript•GoogleChrome 75.0.3770.100
•問題は見つかりませんでした。
私はまだapkの構築に問題があります。
私は安定したチャネルで32ビットapkを構築するためにのみ利用可能でした。
devやmasterchannel sdkを使用するのではなく、フラッターチームがこのバグを修正するまで待つ必要があると思います。
ありがとう。
@JaeyoungChu 2d-inc / Flare-Flutter#79を参照
@ctrysbitaリンクをありがとう。 チャネルをmasterに変更し、_indicesのタイプをInt32ListからUint16Listに変更しました。
Playストアにアップロードされたapkは64ビットの警告がなく、Playストアのテストページからインストールした後に実行されます。
場所の許可ダイアログがポップアップしない、GoogleマップがiOSに表示されない、http(キャッシュされたネットワークイメージ)で大きな画像ファイルを表示できないなど、開発チャネルフラッターsdkに他の問題があります。 これらの問題は開発チャネルが原因でわかりませんが、安定状態に戻って再度ビルドすると、すべての問題が解消されます。 私はこの問題を掘り下げる時間があまりないので、100%確実ではありません。 申し訳ありませんが、おそらく誰かがこの問題からヒントを得ています。
これが私の解決策でした:
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
flutter build apk --release --target-platform=android-arm
実行しますapp-armeabi-v7a-release.apk
をPlayストアにアップロードするversionCode
インクリメントflutter build apk --release --target-platform=android-arm64
実行しますapp-arm64-v8a-release.apk
をPlayストアにアップロードするGoogle Playストアは、デバイスアーキテクチャに従ってアプリを提供します。 32ビットデバイスは満足しています。64ビットデバイスは満足しています。両方のアーキテクチャに対応しながら、APKサイズが比較的小さいままであることを知って満足しています。
同じAPKに両方のアーキテクチャのサポートを含める場合、アプリのサイズは10MB以上になると予想されます
どこ? 分割セクションをgradleファイルのどこに追加しますか? フラッター{}と依存関係{}の間に追加しましたが、次のように最初のAPKはビルドされません。
android /フォルダーにあるGradleプロジェクトの設定を確認してください。
前回のビルド以降にプロジェクトに加えた変更はこれだけなので、明らかにこれは正しくありません。
@ ArtfulDodgerB92解決策をありがとう。 APKとバージョンを作成するためにどのチャネルを使用しましたか?
どこ? 分割セクションをgradleファイルのどこに追加しますか? フラッター{}と依存関係{}の間に追加しましたが、次のように最初のAPKはビルドされません。
android /フォルダーにあるGradleプロジェクトの設定を確認してください。
前回のビルド以降にプロジェクトに加えた変更はこれだけなので、明らかにこれは正しくありません。
@ ArtfulDodgerB92ここに書かれているように、 android{}
セクション内にある必要があります: https : //developer.android.com/studio/build/configure-apk-splits.html
参考までに、64ビットサポートに関して次の発表が
https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc
今後のベータリリースに関するニュースはありますか?
@nohli https://github.com/flutter/flutter/issues/35291への修正(コミットを元に戻す)を取得するために、ベータリリースを数日遅らせました。 ベータ版へのリリースをできるだけ早くリリースするよう取り組んでいます。
これは現在、リリースv1.7.8+hotfix.2
のベータチャネルで公開されています
これは現在、リリース
v1.7.8+hotfix.2
のベータチャネルで公開されています
リリースapkを生成する方法を教えてください。
これは現在、リリース
v1.7.8+hotfix.2
のベータチャネルで公開されていますリリースapkを生成する方法を教えてください。
これは現在、リリース
v1.7.8+hotfix.2
のベータチャネルで公開されていますリリースapkを生成する方法を教えてください。
私は試しましたが、32で働いていません
私は試しましたが、32で働いていません
32
とはどういう意味ですか? 「ファットAPKを生成でき、そのAPKは64ビットデバイスでは機能しますが、32ビットデバイスではクラッシュします」のように?
flutter doctor
の結果をステップバイステップで投稿できますか(たとえば、これはprogard https://flutter.dev/docs/deployment/android#step-2---enable-のステップ2です)難読化および縮小化)、APKまたはAABを生成していますか?また、どのデバイスをテストしていますか?
まだ置く必要がありますか
ベータ版の修正後、gradleのndk {
abiFilters 'armeabi-v7a' , 'x86', 'armeabi'
}
は不要になりましたか?
必要のない@ksamj 。
私は試しましたが、32で働いていません
32
とはどういう意味ですか? 「ファットAPKを生成でき、そのAPKは64ビットデバイスでは機能しますが、32ビットデバイスではクラッシュします」のように?
flutter doctor
の結果をステップバイステップで投稿できますか(たとえば、これはprogard https://flutter.dev/docs/deployment/android#step-2---enable-のステップ2です)難読化および縮小化)、APKまたはAABを生成していますか?また、どのデバイスをテストしていますか?
ドクターサマリー(すべての詳細を表示するには、フラッタードクター-vを実行します):
[✓]フラッター(チャンネルベータ版、v1.7.8 + hotfix.2、Mac OS X 10.14.5 18F132、ロケールru-RU)
[✓] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
[✓] Xcode-iOSおよびmacOS用に開発(Xcode 10.2.1)
[✓] iOSツール-iOSデバイス用に開発
[✓] Android Studio(バージョン3.4)
[✓]接続されたデバイス(1つ利用可能)
•問題は見つかりませんでした。
ドクターサマリー(すべての詳細を表示するには、フラッタードクター-vを実行します):
[✓]フラッター(チャンネルベータ版、v1.7.8 + hotfix.2、Mac OS X 10.14.5 18F132、ロケールru-RU)
[✓] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
[✓] Xcode-iOSおよびmacOS用に開発(Xcode 10.2.1)
[✓] iOSツール-iOSデバイス用に開発
[✓] Android Studio(バージョン3.4)
[✓]接続されたデバイス(1つ利用可能)
•問題は見つかりませんでした。
ドクターサマリー(すべての詳細を表示するには、フラッタードクター-vを実行します):
[✓]フラッター(チャンネルベータ版、v1.7.8 + hotfix.2、Mac OS X 10.14.5 18F132、ロケールru-RU)
[✓] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
[✓] Xcode-iOSおよびmacOS用に開発(Xcode 10.2.1)
[✓] iOSツール-iOSデバイス用に開発
[✓] Android Studio(バージョン3.4)
[✓]接続されたデバイス(1つ利用可能)
•問題は見つかりませんでした。
APKをビルドする
指示どおりにすべてを実行しましたが、32ビットにはインストールされません
指示どおりにすべてを実行しましたが、32ビットにはインストールされません
32ビットデバイスへの32ビットapkのインストールが成功しなかったことを示すスクリーンショット/ログ、およびそれはどのデバイスモデルですか?
こんにちは、みんな、
v1.7.8+hotfix.2
が安定したチャンネルにリリースされたため、この修正はすべてのチャンネルで利用できるようになりました。 皆さんの忍耐と支援に感謝します!
指示どおりにすべてを実行しましたが、32ビットにはインストールされません
32ビットデバイスへの32ビットapkのインストールが成功しなかったことを示すスクリーンショット/ログ、およびそれはどのデバイスモデルですか?
助けてくれてありがとう、私はappbundleを構築しようとしました、そしてそれはうまくいきました。
@tvolkert同じ問題を確認してください。 https://github.com/flutter/flutter/issues/31962#issuecomment -509458960
@ nimesh1997その問題はこれとは何の関係もありません。 リンクされた問題で提供されている回答が役に立たなかった場合は、問題を含むStackoverflowの質問を投稿することを検討してください。
@ tvolkert-明確にするために-上記の修正プログラムは、フラッタードキュメントの指示に従って個別のapkを構築するために使用できます、正しいですか?
したがって、以前の部分的な解決策で説明したように、gradleファイルに他の変更を加える必要はありません。
あなたとチームの他のメンバーに素晴らしい仕事と時間通りの配達をありがとう!
最新のホットフィックスを使用してアプリの1つをコンパイルしました。 その結果、コンパイルされたapp-production-armeabi-v7a-release.apk
はGalaxy S3 mini(Android OS 4.1.2)で実行できません。スプラッシュ画面の後、アプリは通知なしに閉じます。
ただし、GalaxyS8などの64台の電話でまったく同じapkを正常に実行できます。
コマンドラインからフラッターを実行する方法は次のとおりです。
flutter build apk --target = "lib / config / main_production.dart" --flavor = product --split-per-abi
これが私のflutter doctor -v
[√]フラッター(チャネル安定版、v1.7.8 + hotfix.2、Microsoft Windows [バージョン10.0.17763.557]、ロケールen-US)
•E:\ DevToolsflutterのFlutterバージョン1.7.8+ hotfix.2
•フレームワークリビジョン2e540931f7(7日前)、2019-07-02 09:31:07 -0700
•エンジンリビジョンb1cb0d9e9b
•Dartバージョン2.4.0
[√] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン28.0.3)
•E:\ DevTools \ Android \ SdkにあるAndroidSDK
•AndroidNDKの場所が構成されていません(オプション。ネイティブプロファイリングのサポートに役立ちます)
•プラットフォームandroid-28、build-tools 28.0.3
•ANDROID_SDK_ROOT = E:\ DevTools \ Android \ Sdk
•Javaバイナリ:E:\ DevTools \ android-studio \ jre \ bin \ java
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1343-b01)
•すべてのAndroidライセンスが受け入れられました。
[√] Android Studio(バージョン3.4)
•E:\ DevTools \ android-studioのAndroidStudio
•Flutterプラグインバージョン37.0.1
•Dartプラグインバージョン183.6270
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1343-b01)
[√]接続されたデバイス(1つ利用可能)
•x86用に構築されたAndroidSDK•エミュレーター-5554•android-x86•Android8.1.0(API 27)(エミュレーター)
•問題は見つかりませんでした。
さらに-脂肪APKも実行することはできません- (同じ腕-32デバイス上で)インストール&だけが閉じ、それを実行した後。
問題の処理方法と解決方法を教えてください。ありがとうございます。
@ angel1stここでAABやAPKファイルを共有して、トラブルシューティングに役立てることができますか?
@ truongsinh-確かに、ここにあります:
私は両方のAPKをアップロードしましたが、申し立てられた問題は上記のようにarm-32バージョンにあります。
それまでの間、誰かがとても親切で、8月1日以降にGoogle Playストアで何が起こるかを教えてくれますか?あなたがarm-64バージョンのアプリを持っていない場合-apkは停止しますarm64デバイスに提供されますか、それともarm32のみのバージョンまたはその両方をアップロードできなくなりますか?
@ angel1st Android 4.4.2 Galaxy S4でアプリ(app-production-armeabi-v7a-release.apk)を実行できました。 素敵なアプリ!
これはGalaxyS3 mini / Android OS4.1.2に非常に固有のものだと思います。 その間に、問題を再現できるかどうかを確認するために、この構成を要求しました。
@ angel1stは、最も有益な情報源です: https : //android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
要件[64ビットのもの]は適用されません:
- 現在64ビットコードをサポートしていないフォームファクタであるWearOSまたはAndroidTVを明示的にターゲットとするAPKまたはアプリバンドル。
- Android 9Pie以降を実行しているデバイスに配布されていないAPKまたはアプリバンドル。
2019年8月1日以降:
- Google Playに公開する場合、32ビットバージョンに加えて64ビットバージョンを提供するには、ネイティブコードを含むすべての新しいアプリとアプリのアップデートが必要です。
つまり、既存のアプリの新しいバージョンをアップロードしたり、コンプライアンスなしで新しいアプリを公開したりすることはできませんが、アプリは引き続き配布されます。
@ angel1st Android OS4.1.2を再現することができました。
logcatは次のとおりです。
[ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library 'libapp.so' due to error 'Cannot load library: load_library[1093]: Library 'libapp.so' not found'.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library 'libapp.so' due to error 'Cannot load library: load_library[1093]: Library 'libapp.so' not found'.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(238)] Could not setup VM data to bootstrap the VM from.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
07-10 00:16:50.298 8739-8739/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
その間にhttps://github.com/flutter/flutter/issues/35838を提出しました。
cc @ jason-simmons
@ truongsinh-概要をありがとう。
@ blasten-迅速なフィードバックに感謝します。 私の知る限り、ATMでできることは何もありませんが、指を交差させたモニター#35838は、今月のある時点で解決されるのでしょうか。 最新のホットフィックスでコンパイルされたAndroid4.1.2の他のapkにも同じ問題が発生すると思いますか?
参考までに-以前のフラッター安定バージョンでコンパイルされたアプリapkにはこの問題はありません(Android4.1.2を搭載したS3miniは私のテストデバイスの1つです)。
今日、他の誰かがグーグルからメールを受け取った。
「必要なアクション:2019年8月1日までにアプリを64ビット準拠に更新してください」
すでに32ビットバージョンと64ビットバージョンの両方を公開していますが?
それは言う
2019年8月1日までに、ネイティブコードを使用するすべてのアプリは、アップデートを公開するために64ビットバージョンを提供する必要があります。 このメールの送信時点で、少なくとも1つのアプリ*がまだ要件を満たしていません
*注:このアプリのリストは、このメールの送信時点でのGoogleの最善の見積もりを反映しています。 (...)
グーグルの「最良の見積もり」は正しくないと思いますか?
Flutterチームに感謝します。 Flutterをアップグレードし、安定したチャネル上に構築すると、警告が消えます。
テスターにバグがないことを望んでいますが、これまでのところ、実際のデバイスにはまだバグは見つかりませんでした。
Team Flutterに感謝します。修正プログラムを使用してFlutterをアップグレードすると、.aabをビルドするときにこの問題が修正されます。
この成果を上げてくれたフラッターチームに感謝します。 プログラムを続行します。
@ angel1st一部のSamsungデバイスでも問題が発生しています。
@ abdullayev007-ありがとう! #35838をご覧になることをお勧めします。何らかの形で関連している可能性があります。
指示どおりにすべてを実行しましたが、32ビットにはインストールされません
32ビットデバイスへの32ビットapkのインストールが成功しなかったことを示すスクリーンショット/ログ、およびそれはどのデバイスモデルですか?
デバイスはSamsungM10です
@tvolkert次の問題を修正するための解決策を教えてください。
https://github.com/flutter/flutter/issues/36063
ありがとう
開発チャネルからの最新バージョンのフラッター(v1.8.4)を試しました。 私も新しいプロジェクトを作成しました-バニラフラッタープロジェクトとそれからリリース署名されたバージョンを構築しようとしました。 ビルドされ、アプリのサイズはわずか10.4mbです。 しかし、このトレイルで上記のすべての手順を試しましたが、何の役にも立ちませんでした。 誰かがビルドを実行するための一連の明確な手順を示し、それをaabまたはapkを使用してエミュレーターとローカルデバイスを使用して、フラッターからプレイストアにプッシュできますか? 1週間以上経ちましたが、Androidではprodに移行せず、フラッターに基づいてプロジェクトを構築しましたが、iOSでappstoreに公開することはできます。 いくつかの助けは素晴らしいでしょう。
`[✓] Flutter(Channel dev、v1.8.4、Mac OS X 10.14.5、ロケールen-US)
•/ Users / muthu / muthu / devapps / flutterにあるFlutterバージョン1.8.4
•フレームワークリビジョン954714c967(7日前)、2019-08-02 10:10:39 -0700
•エンジンリビジョン26368225b5
•Dartバージョン2.5.0(ビルド2.5.0-dev.1.0 bd049f5b53)
[!] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン29.0.1)
•../ Library / Android / sdkにあるAndroidSDK
•AndroidNDKの場所が構成されていません(オプション。ネイティブプロファイリングのサポートに役立ちます)
•プラットフォームandroid-29、build-tools 29.0.1
•Javaバイナリ:/ Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1343-b01)
✗Androidライセンスのステータスは不明です。
Android SDKManagerを再インストールまたは更新してみてください。
https://developer.android.com/studio/#downloadsを参照するか、 https: //flutter.dev/setup/#android-setupにアクセスして
詳細な手順については。
[✓] Xcode-iOSおよびmacOS用に開発(Xcode 10.3)
•/ Applications / Xcode.app / Contents / DeveloperのXcode
•Xcode10.3、ビルドバージョン10G8
•CocoaPodsバージョン1.7.3
[✓] Android Studio(バージョン3.4)
•/ Applications / AndroidStudio.app/ContentsにあるAndroidStudio
•Flutterプラグインバージョン38.2.1
•Dartプラグインバージョン183.6270
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1343-b01)
[✓] VS Code(バージョン1.36.1)
•/ Applications / Visual StudioCode.app/ContentsのVSコード
•Flutter拡張バージョン3.3.0
[✓]接続されたデバイス(3つ利用可能)
•x86用に構築されたAndroidSDK•エミュレーター-5554•android-x86•Android9(API 28)
(エミュレータ) `
@muthufmass 、機能していないものと障害を再現する方法の詳細を記載した新しい問題を提出してください。 ありがとう!
誰かが、プレイストアにプッシュできるビルドを実行するための一連のステップを明確に示すことができますか?
誰かが、プレイストアにプッシュできるビルドを実行するための一連のステップを明確に示すことができますか?
これらの手順はすでに実行されており、prodリリースビルドでは機能しません。 デバッグビルドは機能します! デバッグビルドでは、フラッターの.soファイルは存在しますが、リリースバージョンには存在しないという違いがはっきりとわかります。 それらは、apkをエミュレーターまたは署名されたapkを持つデバイスにインストールする際に問題を引き起こすものです。
@muthufmass 、機能していないものと障害を再現する方法の詳細を記載した新しい問題を提出してください。 ありがとう!
上記のクリアされた手順を共有したことを願っています。 fluttercreateを使用した新鮮なアプリの作成-最新のfluttersdkを使用したバニラコード。 デバッグバージョンはスムーズに実行されますが、リリースバージョンをビルドできません。 サイズに関するapkのprodバージョンとdevバージョンの大きな違い。 上記のすべての手順を試しましたが、実行するリリースバージョンをビルドできませんでした。 ビルドは非常に高速に行われ、ファイルはリリース時に11 mb未満になりますが、debugapkでは約40mb以上になります。 デバッグapkは機能しますが、prodリリースに署名されたapkはインストールされません。
@muthufmass新しい問題を提出するときは、Android SDKのバージョン、デバイスモデル、医師の出力、およびflutter create
から始まる手順を含めてください。
@muthufmassおよびadblogcat出力。
この問題は解決されました。適切に追跡できるように、新しい問題を提出してください。
今すぐ別のチケットを調達しましたhttps://github.com/flutter/flutter/issues/37935
プロジェクトにフレーバーがあり、x64とx32の両方をサポートしたい場合は、jniLibsフォルダーをフレーバーフォルダーに追加するだけで、次のように機能します。
adobe animateccでこれを行うにはどうすればよいですか
詳細情報が必要
Google Play Consoleは最近、さまざまな警告のためにロールアウトボタンの無効化を開始しました。 そして、それらの警告の1つは、.aabファイルの代わりにapkを使用しています。 プロジェクトがAndroidStudioまたはUnityで作成されている場合は、.aabファイルを作成するためのソリューションがあります。 しかし、apkがAnimateCCまたはHaxe / Flash Developによって作成された場合はどうなりますか? 変換する方法はありますか?
@newapproachあなたのコメントがFlutterと関係があるかどうかは私にはわかりませんか? 詳細を記載した新しい問題を提出していただけませんか? ありがとう!
同じ問題がありますが、flutter.soは「armeabi-v7aフォルダー」に含まれていません。
x86およびarmeabi-v7a用のサードパーティライブラリのみがありますが、arm64はありません。
「armeabi-v7awith
ndk {
abiFilters "armeabi-v7a" //動作しません "armeabi"、 "x86"、
}
@ mravn-googleがandroid-armに提案するようにtarget-platformとして設定します。アーチを指定せず、ライブラリを含まないAPK
ライブラリがあり、アームスペックがないAPK
アーチを指定してライブラリを含めるAPK
さらなるステップをデバッグする方法について何か提案はありますか?
私もこのエラーを見つけました、それは修正されましたか? 私を助けることができますか?
Stack Overflowで質問するか、新しいバグを開くことをお勧めします。 このクローズされたバグが、上記の問題の解決を支援する人々にとって適切な場所になるとは思えません。 ありがとう!
これが私の解決策でした:
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
flutter build apk --release --target-platform=android-arm
実行しますapp-armeabi-v7a-release.apk
をPlayストアにアップロードするversionCode
インクリメントflutter build apk --release --target-platform=android-arm64
実行しますapp-arm64-v8a-release.apk
をPlayストアにアップロードするGoogle Playストアは、デバイスアーキテクチャに従ってアプリを提供します。 32ビットデバイスは満足しています。64ビットデバイスは満足しています。両方のアーキテクチャに対応しながら、APKサイズが比較的小さいままであることを知って満足しています。
同じAPKに両方のアーキテクチャのサポートを含める場合、アプリのサイズは10MB以上になると予想されます
動作しません..ピクセル2のプレイストアで表示すると、このデバイスではサポートされていないと表示されます
それは機能します。多くの有名なアプリがこの方法で複数のAPKをデプロイし、Playストアが適切なAPKを適切なデバイスに長い間提供できるようにしています。
ただし、アプリバンドルはこれを行うための最新の方法です。
それは機能します。多くの有名なアプリがこの方法で複数のAPKをデプロイし、Playストアが適切なAPKを適切なデバイスに長い間提供できるようにしています。
ただし、アプリバンドルはこれを行うための最新の方法です。
なぜそれがピクセル2のプレイストアに表示されないのかわかりません...念のために、正確に2回フォローします。
アプリバンドルを使用しましたが、アプリがクラッシュするため、代替手段を探しています
このスレッドは、閉じられた後、最近のアクティビティがないため、自動的にロックされています。 それでも同様の問題が発生する場合は、 flutter doctor -v
の出力や問題の最小限の再現など、新しいバグを開いてください。
最も参考になるコメント
同じ問題があります。32ビット用にビルドすると64ビットデバイスが除外されますが、それらで実行されます。
--target-platform android-arm64
指定して64用にビルドすると、64ビットデバイスでは機能しますが、32ビットデバイスではクラッシュします。 また、Googleは2019年にapkのアップロードを64ビットに制限します。Flutterチーム、この基本的な問題を解決してください!