Flutter: 支持其中包含 32 位和 64 位二进制文​​件的应用程序包

创建于 2019-05-01  ·  194评论  ·  资料来源: flutter/flutter

警告

此版本不符合 Play 64 位要求。

以下 APK 或 App Bundle 可用于 64 位设备,但它们只有 32 位本机代码:{版本代码}。

从 2019 年 8 月 1 日起,所有版本都必须符合 Play 64 位要求。

除 32 位本机代码外,还应在您的应用中包含 64 位本机代码。 使用 Android App Bundle 发布格式自动确保每个设备架构只接收它需要的本机代码。 了解更多

此警告在尝试将flutter build appbundle创建的aab发布到Play Store 时出现

这是我需要担心的事情还是 Flutter 会自动解决这个问题,即这是否已经计划及时解决?

crowd engine waiting for PR to land (fixed)

最有用的评论

你好 Flutter 团队,
我想强调一下这个话题的状态。 从我的角度来看,有两个严重的问题:

  • 当前稳定的flutter 版本1.7.8+hotfix.3无法构建稳定的 apk - 至少split-per-abi无法正常工作 - arm32 存在回归问题,无法在某些 arm32 设备上运行。 目前尚不清楚何时修复;
  • 8 月 1 日截止日期——大约一周后,我们作为开发人员将无法向 Google Play 商店更新或发布新的 Flutter 应用程序——就这么简单。 考虑到当前的 flutter 版本问题(如上所述)和剩余时间,我认为在本月底之前在稳定频道中进行修复是不可行的(除非你们中的某个人有魔杖:- ))

考虑到以上两个问题,我想建议以下应急计划,IMO最适合我们作为开发人员:

  • 将 flutter稳定通道回滚到hotfix.2之前的版本
  • 将 8 月 1 日的截止日期推迟几个月 - 我知道这将需要对这个问题进行一些升级,但我希望你们能理解如果开发人员由于 Flutter 框架问题而无法在 8 月 1 日之后发布可靠的Flutter 应用程序会产生多么严重的影响。

我只能代表我发言,但我有合同的客户,我决定从 React Native 转向 Flutter,因为我相信 Google 会为他们自己的产品提供更好的支持。 我有正在进行的项目和需要支持的应用程序。
现在我发现自己陷入了一个荒谬的境地,当谷歌强迫我发布 64 位 apk 版本,同时谷歌没有为我提供这样做的工具(是的,我知道 Flutter 团队与 Google Play 不同团队,但我的立场 - 你们是同一个商业实体)。
如果谷歌不能按时交付,这将导致 Flutter 的强烈反击,因为 8 月 1 日之后的每一天都会降低框架的可信度。
如果我的话听起来有点强,我很抱歉,我只希望你能暂时接受我的意见。

任何人 -请对此投票,希望我们能听到我们的声音!

所有194条评论

我有同样的警告。 Flutter 团队的某个人是否可以评论或解释相同的内容,我们可以做些什么来确保使用flutter build appbundle --release生成的 appbundle 也具有 64 位代码。 @zoechi你能告诉我们一些关于它的事情吗?

我也在看这个。 这是一个屏幕截图:
Screen Shot 2019-05-02 at 12 25 57 PM

“了解更多”文档在这里: https :

我期待着 Flutter 团队的回复。

我今天也收到了这个警告信息。

同样的问题在这里。

我也是

我也是

有解决方案吗?

看看这个: https :

它对我有用。

在 Google Play Console 的应用发布页面(出现上述 64 位警告消息的屏幕)中的 [start rollout to internal test] 按钮被禁用

64 位捆绑包要求现在是 flutter 项目的阻碍。

/ cc @mklim @cbracken

Play 商店似乎已经开始发出警告,如果使用 Flutter 的默认发布指令,则会触发该警告。
https://flutter.dev/docs/deployment/android

可以使用 Flutter 为 32 位和 64 位 ARM 提交 APK,目前只需要几个额外的步骤。 解决此类问题的各种方法讨论如下:
https://github.com/flutter/flutter/issues/18494#issuecomment -477502287

我们现在也在考虑如何最好地更新默认模板/工具/发布步骤以避免此警告。

谢谢你的耐心。

@eseidelGoogle如果我错了,应用程序包的全部意义在于将所有内容打包到一个文件中,并让 Play 商店只向每个用户发送必要的apk

正如我在最初的问题中指出的那样,我使用的是flutter build appbundle 。 在这种情况下,您提出的解决方案不适用,对吗?

我们昨天尝试了 flutter build appbundle 并且从 Play 商店收到错误消息,它是一个调试版本......

当然,它还需要在不使用 flutter.dev 指令而是使用 android studio build->Generate Signed APK 的 add2app 场景中工作

感谢您将其标记为关键

我们只是亲自讨论过这个问题。 @tvolkert会找人来帮助关闭它。

我也收到这个警告,有没有办法默认为 64 位?

build.gradle小修改可以强制在发行版 apk 和 aab 中包含 64 位本机库 - 看看这里的解决方法

为了谷歌的缘故,请让我们了解有多少手机仍在使用 32 位。
如果添加 64 位和 32 位库,则会增加最终的 apk 大小。

我有一个非颤振项目,我通过 ABI 拆分 APK,所以我有单独的 32 位和 64 位 apk 以减小大小。 现在这一步似乎迫使我向前增加 apk 大小。
但为什么 ?

我没有关于印度/非洲有多少 32 位手机的统计数据……我确信在欧洲、美国和亚洲部分地区几乎没有。
x86 / x86_64 vs armeabi / arm64-v8a 怎么样? 我们是否需要将所有 4 个 ABI 的 libflutter.so 添加到最终的生产 apk 中?
..还有mips ......是否有任何手机仍在使用mips? 只有谷歌知道。

@VarolOkan使用 AAB 并让谷歌为其需要的所有 ABI 和屏幕 dpi 组合生成 APK。

在 Google Play Console 的应用发布页面(出现上述 64 位警告消息的屏幕)中的 [start rollout to internal test] 按钮被禁用

64 位捆绑包要求现在是 flutter 项目的阻碍。

@eseidelGoogle或任何人 - 任何人都可以确认这是否是
a) 表演塞子
或 b) 直到八月的警告
见: https :
他表示左侧有一些框可以检查以使其正常工作,如果警告显示为 8 月,如果实际上是 5 月初,这似乎是一个大问题。

另外 - 了解实际上是否几乎没有 32 位机器并且对 64 位 arm 使用单行 abiFilter 是支持 99.5% 用户或其他东西的可行选项,这非常有用; 一整年前我看到有人在清理“市场上的所有手机”都是 64 位的……也许这意味着有很多旧手机?

我的理解是这不是一个表演障碍,而是一个常见的警告。 我们已经要求@blasten看看我们可以在这里做些什么来使默认的 Flutter 设置避免此警告。 我希望我们会在接下来的几天内有一些更新。

正如@eseidelGoogle所说,我会处理这个问题。 同时,您是否尝试过遵循以下步骤https://github.com/flutter/flutter/issues/18494#issuecomment -489807239?

这不再是问题了吗? https://github.com/flutter/flutter/issues/18494#issuecomment -482795450

这不是一个表演者。 我收到警告但能够将我的应用程序发布到
游戏店。

克尔莫腾

2019 年 5 月 7 日星期二 17 点 46 分,Audrius Karosevicius通知@github.com
写道:

这不再是问题了吗? 第18494章(评论)
https://github.com/flutter/flutter/issues/18494#issuecomment-482795450


您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/flutter/flutter/issues/31922#issuecomment-490135779
或静音线程
https://github.com/notifications/unsubscribe-auth/AA4B4J5BY3BJVIELNEPC4N3PUGP7BANCNFSM4HJU7TZA
.

>

;-)
/莫腾

网址: http :
美孚:51 21 90 79

总结一下:

1) 今年早些时候,Play 向开发者表示,从 8 月起,它将要求上传到商店的应用程序提供 64 位版本 (https://android-developers.googleblog.com/2019/01/get-your-apps-ready -for-64-bit.html)。 本周,Play 商店已开始为上传的应用程序显示一条信息性消息,以警告即将到来的要求。 但是,Play 商店的要求目前没有改变。

2) 警告引用的 64 位 APK 要求现在可以通过一些手动修改 Flutter 项目中的 gradle 文件来满足: https :

3) 我们正在努力使 Flutter 的默认行为符合即将到来的关于 64 位支持的 Play 指南更新,而无需用户做任何额外的努力。 我预计这项工作将在接下来的几天/几周内完成,比 8 月的截止日期还早。

如果我遗漏了上述内容,请随时发表评论或联系。 很抱歉我们没有在 Play 打开警告之前更新此内容。 感谢大家的帮助和反馈!

@seidelGoogle

  1. 我无法发布由flutter build apk创建的应用程序。 Play 商店不接受我的个人资料中仅 32 位的版本。
  2. #18494(评论)中的解决方案在 32 位设备(如 OnePlus One)上失败。

在我看来,这是一个表演者。

@seidelGoogle

  1. 解决。 如果未配置评级和国家/地区,Google Play 不接受任何构建。 只是消息具有误导性。

警告引用的 64 位 APK 要求现在可以通过一些手动修改 Flutter 项目中的 gradle 文件来满足:#18494(评论)关于如何操作的一个示例。

经过几个小时的反复试验,我 __not__ 能够生成包含 64 位 libflutter.so 的签名 apk 或 appbundle

包中唯一包含的 libflutter.so 是
armeabi-v7a(32 位)
,当使用
安卓工作室 3.4
Build #AI-183.5429.30.34.5452501,建于 2019 年 4 月 10 日

菜单:构建 > 生成签名包/APK


flutter build apk --release --target-platform=android-arm64 -v
flutter build appbundle --release --target-platform=android-arm64 -v

都失败@> 任务: app:validateSigningRelease FAILED

@ciez这为我生成了仅 64 位的 apk:

$ flutter build apk --release --target-platform=android-arm64
Initializing gradle...                                              1.1s
Resolving dependencies...                                           1.8s
Running Gradle task 'assembleRelease'...                                
Running Gradle task 'assembleRelease'... Done                       9.0s
Built build/app/outputs/apk/release/app-release.apk (7.5MB).

@adriank
是的,它有效。
找出问题所在:keystore.jks 路径中的“~”需要替换为 /home/user

对误报感到抱歉。

看起来像这样构建的每个包最多只能针对 1 个拱门?

等待 Flutter 更新,因为解决方法刚刚破坏了我的构建。

@mulderpf您应用了哪种解决方法,您的构建是如何中断的?

有关 Flutter 团队的最新更新,请参阅此评论

我得到了一个更新:我在我的分支中有这个工作!
建议是在未来版本中使用flutter build appbundle --release --target-platform=android-arm-all (建议将 APK 拆分开来)或flutter build apk --release --target-platform=android-arm-all

PST 时区有人愿意尝试吗? 如果是这样,请联系 Gitter 或 Slack :)

@blasten遗憾的是,我无法使用您的分支生成 appbundle。 Gradle 以某种方式在app:properties上失败,但查看代码看起来很有希望。
您是否设法验证flutter/engine会从./lib/目录加载 AOT 快照? 查看引擎代码,它在任何地方都使用资产......如果这行得通,它将解决整个 App Bundles 问题,因为现在它们缺乏 ABI 对资产目录定位的支持。

@SPodjasek正确,它还需要引擎的本地构建,因此 APK 中的类会寻找新的快照。

@blasten我已经设法修复了我的构建树,现在我可以成功构建包含base/lib/${abi}/中的 AOT 快照的 App Bundle

  4649616  2019-05-13 20:52   base/lib/arm64-v8a/isolate_snapshot_data.so
  6296768  2019-05-13 20:52   base/lib/arm64-v8a/isolate_snapshot_instr.so
  8472736  2019-05-13 20:52   base/lib/arm64-v8a/libflutter.so
    32352  2019-05-13 20:52   base/lib/arm64-v8a/vm_snapshot_data.so
    19200  2019-05-13 20:52   base/lib/arm64-v8a/vm_snapshot_instr.so
  3700504  2019-05-13 20:52   base/lib/armeabi-v7a/isolate_snapshot_data.so
  6019680  2019-05-13 20:52   base/lib/armeabi-v7a/isolate_snapshot_instr.so
  6036116  2019-05-13 20:52   base/lib/armeabi-v7a/libflutter.so
    23520  2019-05-13 20:52   base/lib/armeabi-v7a/vm_snapshot_data.so
    12640  2019-05-13 20:52   base/lib/armeabi-v7a/vm_snapshot_instr.so

我想知道修改这个就足够了......

https://github.com/flutter/engine/blob/1b649a57d18a8c41ae017d79cf9bdb999a2276ac/shell/platform/android/io/flutter/view/FlutterMain.java#L334 -L336

类似于:

getContext().getApplicationInfo().nativeLibraryDir;

当然,这不会那么简单,但要了解总体思路......

以下是在 32 位和 64 位支持下尝试flutter build appbundle

  1. https://drive.google.com/open?id=1yAkfhPKfhdd8MwW39qfkZDePc66SMA_z下载flutter.jar并将其放在{flutterInstallationPath}/bin/cache/artifacts/engine/android-arm-release 。 查看Flutter安装路径,使用which flutter

如果您想查看 FlutterMain.java 的更改,请参阅: https :

  1. 查看这个分支的补丁:
$ cd {flutterInstallationPath}
$ git remote add arm-all https://github.com/blasten/flutter
$ git fetch arm-all apk_defaults
$ git checkout apk_defaults

$ git build appbundle --release --target-platform=android-arm-all

让我知道你发现了什么。

+1

@danysz而不是写+1,如果你对这个问题投了赞成票,那会更有意义(对你没有苛刻的感觉)。 对于其他人,如果他们阅读了此消息,请不要写“我也是”、“在这里相同”、“+1”,而是为这个问题点赞。

谢谢!

@blasten应用程序无法启动:

05-14 10:50:35.979  3445 28828 I ActivityManager: Start proc 30019:xxx/u0a262 for activity xxx/com.example.flutterapp.MainActivity
05-14 10:50:36.067 30019 30019 I FirebaseInitProvider: FirebaseApp initialization successful
05-14 10:50:36.108 30019 30019 E flutter : [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
05-14 10:50:36.108 30019 30019 E flutter : [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
05-14 10:50:36.108 30019 30019 E flutter : [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
05-14 10:50:36.108 30019 30019 F flutter : [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
05-14 10:50:36.108 30019 30019 F libc    : Fatal signal 6 (SIGABRT), code -6 in tid 30019 (xxx), pid 30019 (xxx)

这适用于我的物理设备和 9/10 测试实验室设备 - 我们对 Pixel-Q-beta 的结果不一致。

@danysz而不是写+1,如果你对这个问题投了赞成票,那会更有意义(对你没有苛刻的感觉)。 对于其他人,如果他们阅读了此消息,请不要写“我也是”、“在这里相同”、“+1”,而是为这个问题点赞。

谢谢!

完毕

@blasten查看您的更改,我发现对于现有应用程序需要修改AndroidManifest.xml

diff --git a/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/
app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
index 4778a2080..f3492835e 100644
--- a/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
+++ b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
@@ -24,6 +24,11 @@
             <meta-data
                 android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                 android:value="true" />
+            <!-- If true, the snapshots are read from lib instead of the assets 
+                 directory in the APK. -->
+            <meta-data
+                android:name="io.flutter.view.FlutterMain.snapshot-in-lib"
+                android:value="${snapshotInLib}" />
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.LAUNCHER"/>

尽管如此,它仍然失败......

@blasten

git build
$ git build appbundle --release --target-platform=android-arm-all
"git build" or "flutter build" ? :-)

遗憾的是,我无法按照您的说明制作 appbundle。 Gradle 在app:properties 上以某种方式失败(在“构建颤振工具...”和一些 android-arm-*.... 下载之后)。

似乎下载过程覆盖了flutter.jar

@MoacirSchmidt我也遇到过类似的问题,但是清理构建目录( flutter clean )和 gradle 缓存( ~/.gradle/caches${projectRoot}/android/.gradle )有帮助

对于在构建 64 位 apk 时遇到问题的人。
这个设置对我有用。

构建.gradle

运行flutter build apk --release --target-platform=android-arm

递增版本代码

运行flutter build apk --release --target-platform=android-arm64

flutter build appbundle现在在master,有没有自愿的人想试一试?

对于像我这样害怕更改 gradle 文件的人——如果你只想要 64 位版本,即使不修改 build.gradle, flutter build apk --release --target-platform=android-arm64工作。

@blasten我在beta频道中尝试了flutter build appbundle 。 当我尝试上传到 Play 商店时,我仍然收到 32 / 64 错误。

我知道你说的是master但我仍然在那个分支上处理一些错误。 只是想给你那个信息!

我也收到这个警告!

有没有办法为所有架构构建应用程序包?

关于如何修复它的任何更新?

我正在关闭此错误,因为它指的是应用程序包。 如果切换到 master 分支,则可以使用flutter build appbundle生成支持 32 位和 64 位 CPU 架构的应用程序包。 如果您喜欢或不能使用应用程序包,请关注此线程以通过胖 APK 获得额外支持。

@blasten - 您能否提供一种如何在 Android Studio 中使用它的说明?
这是我当前的颤振配置:

医生摘要(要查看所有详细信息,请运行 flutter doctor -v):
[√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.17763.503], locale en-US)
[√] Android 工具链 - 为 Android 设备开发(Android SDK 版本 28.0.3)
[√] Android Studio(3.4版本)

此更改何时会转到stable分支?

@blasten是否适用于 Add2App?

@blasten如何对 flutter build appbundle 创建的 app bundle 进行签名?

@blasten是将 master 分支用于生产应用程序的好方法吗?

@dblokhin您可以使用flutter channel master切换到主频道。 请注意,这现在也可以在开发频道上使用。

@tvolkert - 何时将其合并到stable分支?

@angel1st我会在大约 3 个月后做客。

@truongsinh - 考虑到 8 月 1 日距现在大约两个月后,我预计采用速度会更快,实际上......

@angel1st它已经稳定了! 我会发现更多...

@angel1st它已经稳定了!

你确定吗? 当前的稳定版是 1.5.4-hotfix 2 ant,它不会生成 32 和 64 的捆绑包。还是我遗漏了什么?

@shinayser还没有,抱歉。 我会了解更多信息并更新线程。 正如 Todd 所提到的, master频道是此时唯一的选择。

我尝试了应用程序包。 我在 master 中有 1.6.1-pre 版本的 Flutter
渠道。

捆绑包的输出约为 12 MB,但未生成警告
并且单个 APK 大小约为 7。到目前为止一切都很好。

但是当我通过 Play 商店更新后打开应用程序时,我的应用程序得到了
卡在启动画面。

我没有选择恢复到 flutter build apk ,它运行良好,idk 如何
为什么。

所以我认为这个问题还没有结束,因为即使警告
appbundle 消失了,应用程序本身也消失了。 应用程序包是
使应用程序无法使用,因为它卡在启动画面中。

在这种情况下,请随时直接在 Gitter 上与我联系: https : .aab文件会很有帮助。

我相信我们需要以一种或另一种方式记录使用情况。 此外,我相信如果 Flutter 团队想要留住开发人员,在 6 月底之前将其合并到stable是至关重要的。

@angel1st我们正在努力在 6 月底之前将这项工作提升到stable

一些更新:

在从应用程序包(使用flutter build appbundle从主通道生成)部署 APK 后,我们能够重现卡在启动屏幕中的应用程序。

这似乎是由于我们将 AOT 快照( vm-snapshot-datavm-snapshot-instrisolate-snapshot-dataisolate-snapshot-instr )放置/lib/{abi}/lib_{snapshot}.so获取应用程序包的 ABI 拆分。

编辑: 根本原因原来是 Android 嵌入器中的代码期望在这一行中有一个名为flutter_assets的目录,但我最近对支持应用程序包的更改禁止创建此类目录,这导致应用程序永远不会启动。 @jason-simmons https://github.com/flutter/engine/compare/7f4f52f95294...e8db5dfd52ee 的这个提交修复了这个问题。

结论

目前的计划是允许flutter工具生成ELF共享库而不是AOT快照。 此功能刚刚添加到 https://github.com/dart-lang/sdk/commit/af93ebcf4cb55ae5f0f39a183ad2d42ca13ae51f 中的 Dart SDK。

这意味着我们将使用真实库为应用程序包和胖 APK进行 ABI 拆分。

一旦问题得到解决,我将更新此错误和 https://github.com/flutter/flutter/issues/18494。 同时,将--target-platform传递给build appbundle将使您无需将 AOT 快照移动到lib/即可构建应用程序包。

一些更新:

在从应用程序包(使用flutter build appbundle从主通道生成)部署 APK 后,我们能够重现卡在启动屏幕中的应用程序。

这似乎是由于我们将 AOT 快照( vm-snapshot-datavm-snapshot-instrisolate-snapshot-dataisolate-snapshot-instr )放置/lib/{abi}/lib_{snapshot}.so获取应用程序包的 ABI 拆分。 毕竟,快照不是真正的库,我们用来获得这种行为的技巧也不起作用。

目前的计划是允许flutter工具生成ELF共享库而不是AOT快照。 此功能刚刚添加到dart-lang/ sdk@af93ebc 中的 Dart SDK。

这意味着我们将使用真实库为应用程序包和胖 APK进行 ABI 拆分。

一旦问题得到解决,我将更新此错误和#18494。 同时,将--target-platform传递给build appbundle将使您无需将 AOT 快照移动到lib/即可构建应用程序包。

@blasten当您有另一个使用本机代码的库时,这会正常工作吗? 例如:VLC。 当我们构建 APK 时,它会产生一些.so

是的 - 您可以在 APK 中使用其他本机代码库。

在新的打包格式中,Flutter 应用程序将包含libflutter.so引擎库以及另一个.so包含从应用程序的 Dart 代码编译的 AOT 快照数据。 如果需要,应用程序可以添加其他与 Flutter 无关的.so库。

仅供参考,卡在闪屏问题的修复应该在(即将推出的)1.7.0 开发频道版本中(https://github.com/flutter/flutter/wiki/Bad-Builds#v161--- v167)

大家好。 卡在启动画面问题的修复已经登陆开发频道 - 如果你flutter upgrade到 v1.7.0,你应该看到它。 请尝试一下,如果您遇到flutter build appbundle问题,请告诉我们。

@tvolkert以前对我不起作用,现在对我不起作用。 不在频道 dev (1.7.0) 和频道主 (1.7.1) 上。 使用flutter build appbundle构建的应用程序在通过 Play 商店发布并在真实设备上运行后崩溃。
编辑:从设备上删除应用程序并从 Play 商店重新安装后,它现在可以在频道 dev (1.7.0) 上运行。
Edit2:它不起作用。 Play 商店在分发正确版本时比正常情况慢一点。 我可以做些什么来帮助繁殖?

@masewo你能从设备上收集墓碑,以及当时在设备上运行的是什么版本的 Flutter?

@jason-simmons @blasten你还有什么想帮助追踪的吗?

@tvolkert

墓碑:

2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: Build fingerprint: 'samsung/crownltexx/crownlte:9/PPR1.180610.011/N960FXXS2CSDJ:user/release-keys'
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: Revision: '28'
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: ABI: 'arm64'
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: pid: 8261, tid: 8261, name: asewo.myfirstapp  >>> net.masewo.myfirstapp <<<
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG: Abort message: '[FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
    '
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x0  0000000000000000  x1  0000000000002045  x2  0000000000000006  x3  0000000000000008
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x4  0000000000000000  x5  0000000000000000  x6  0000000000000000  x7  0080000000000000
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x8  0000000000000083  x9  000000767c1f9890  x10 fffffff87ffffbdf  x11 0000000000000001
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x12 00000075ded1c000  x13 0000000000000008  x14 ffffffffffffffff  x15 0000402003ff3b02
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x16 000000767c2302b0  x17 000000767c16f958  x18 0000007fdd2251da  x19 0000000000002045
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x20 0000000000002045  x21 0000000000000083  x22 00000075edde02e0  x23 00000075dec79fc0
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x24 00000075de3a6150  x25 0000000000000000  x26 00000075f7614ca0  x27 0000000000000003
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x28 0000000000000000  x29 0000007fdd225b00
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     sp  0000007fdd225ac0  lr  000000767c162da0  pc  000000767c162dcc
2019-06-04 08:32:44.377 8326-8326/? A/DEBUG: backtrace:
2019-06-04 08:32:44.377 8326-8326/? A/DEBUG:     #00 pc 0000000000021dcc  /system/lib64/libc.so (abort+124)
2019-06-04 08:32:44.377 8326-8326/? A/DEBUG:     #01 pc 0000000000e4a6a0  /data/app/net.masewo.myfirstapp-J4PFXKn_O2diLnKpCeu2eg==/split_config.arm64_v8a.apk (offset 0xe2d000)

扑:

D:\Programme\Android\flutter\bin\flutter.bat doctor --verbose
[√] Flutter (Channel dev, v1.7.0, on Microsoft Windows [Version 10.0.18362.145], locale de-DE)
    • Flutter version 1.7.0 at D:\Programme\Android\flutter
    • Framework revision f36a35d20a (3 days ago), 2019-05-31 15:27:56 -0400
    • Engine revision a32df2c928
    • Dart version 2.3.2 (build 2.3.2-dev.0.0 445a23a9bc)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at D:\Programme\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: D:\Programme\Android\Android Studio Dev\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
    • All Android licenses accepted.

[√] Android Studio (version 3.5)
    • Android Studio at D:\Programme\Android\Android Studio Beta
    • Flutter plugin version 36.0.7
    • Dart plugin version 191.7221
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b02)

[√] Connected device (1 available)
    • SM N960F • xxxxxxxxxxxxxxxx • android-arm64 • Android 9 (API 28)

@jason-simmons @blasten正是这个断言导致了@masewo案例中的崩溃

@masewo我们无法在没有应用程序的情况下重现我们这边的崩溃 - 您是否愿意从 1.7.1 版本构建一个未签名的 .aab 文件来演示此行为并通过电子邮件将其发送给我(tvolkert@google .com)? 如果是这样,那将是非常有帮助的!

仅供参考,以下公告已发送至[email protected]有关我们的 64 位支持。

https://groups.google.com/forum/#!topic/flutter -announce/oIzwT9EDczc

@tvolkert团队是否也在致力于使https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps与您列出的所有要点兼容?

  1. 提供一种方法(默认情况下)来构建支持 32 位和 64 位的应用程序包。 (已经可以在开发频道上测试)

  2. 提供一种方法(默认情况下)来构建同时支持 32 位和 64 位的 APK。 (进行中)

@truongsinh是的,请参阅未决 PR 中的此评论: https :

@masewo和其他所有人:我们已经能够复制https://github.com/flutter/flutter/issues/31922#issuecomment -498541765 中描述的崩溃并且正在追踪它。

tldr:坚持住 - 我们在努力🙂

大家好,

域名注册地址:

我们已经确定了从 Play 商店下载时崩溃的问题,并正在修复,将在与上述https://github.com/flutter/flutter/issues/31922#issuecomment 中概述的相同时间范围内交付-498880614

高层解释

对于那些感兴趣的人来说,有点长的解释是,对于运行 Android Marshmallow 或更高版本的设备,Play Store 将检测打包为包含多个 ABI 的 App Bundle 的应用程序——它会以“拆分”的形式在设备上安装这些应用程序APK”。 执行此操作时,其中包含的 .so 文件不会从 APK zip 存档中提取,这与非拆分 APK 的行为不同。 由于 Flutter 引擎当前查找 .so 文件的机制假定它们是从 APK 中提取的,因此在拆分 APK 的情况下它会失败。

解决方案只是dlopen库,Android 抽象出库所在的位置(即在存档中与否)。 然而,必要的 .so 文件从来都不是真正的库——它们只是我们加载到 Dart VM 中的二进制数据块。 因此,作为其中的一部分,我们正在使它们成为 ELF 库(例如 https://github.com/dart-lang/sdk/commit/6d608fb52bc1926a73d986d73ab228b77cfb7ca2 和 https://github.com/flutter/flutter/pull/33696)。

大家好,

我们相信所有修复都已在master频道的树尖上完成。 如果您想尝试一下,方法如下:

  • flutter build appbundle

    默认情况下,App Bundle 包含您的 Dart 代码和为armeabi-v7a (32 位)和arm64-v8a (64 位)编译的 Flutter 运行时

  • flutter build apk --split-per-abi

    此命令将生成两个 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 的大小将大于其拆分对应项,从而导致用户下载不适用于其设备架构的本机二进制文件。

flutter build appbundle现在为我工作。 谢谢@tvolkert

可以确认这在多个 android 设备上工作(切换到 master 后)。 多么救命啊,谢谢。

伟大的! 感谢@ blasten 、@jason-simmons 和@rmacnak-google - 我只是信使🙂

感谢 Flutter 团队的所有成员和贡献者如此快速的响应。 希望这个可以在 1.5 个月内进入测试版渠道 :)

@tomaszpolanski计划是在 6 月底之前将其进行测试,并在 7 月初之前稳定下来🙂

@tvolkert是否有一个flutter build appbundle命令标志我们可以传递给也包括 x86?

@athornz不在发布模式 atm 中。 请参阅: https : x86_64添加 AOT 快照。

切换到主分支给了我以下错误。 稳定版本但未能在发布包中包含 64 位。

Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.7.4-pre.108, on Mac OS X 10.14.5 18F132, locale nl-NL)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
[✓] iOS tools - develop for iOS devices
[✓] Android Studio (version 3.4)
[✓] IntelliJ IDEA Community Edition (version 2018.2.7)
[✓] Connected device (1 available)

• No issues found!
MacBook-Pro-van-Wendel:zaira wendel$ flutter build appbundle --build-name=1.0.6 --build-number=6 -t lib/main_prod.dart --flavor=prod
Initializing gradle...                                              0,9s
Resolving dependencies...                                           2,2s
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Running Gradle task 'bundleProdRelease'...                              
Running Gradle task 'bundleProdRelease'... Done                    78,6s
Gradle task bundleProdRelease failed with exit code 1

@xinoxapps ,您能否发送flutter build appbundle -v的完整输出(请作为 gist.github.com 链接,以便该线程的可读性🙂)?

@xinoxapps ,我无法在本地重现此问题。 现在,查看您收到的警告,似乎有一些自定义的build.gradle配置逻辑,这可能会也可能不会导致问题。 有可能达到最小的重现案例吗? 例如,尝试删除一些自定义 Gradle 配置,直到它工作为止,然后分享究竟是什么导致了问题。 这就是我定义风味的方式:

android {
  flavorDimensions "version"
    productFlavors {
        prod { }
    }
}

大家好,

这些修复现在在dev频道中,在v1.7.4版本或更高版本中。

我切换到应用程序包并推送到 Play 商店,大多数用户似乎很高兴。 但是,我有两个报告称该应用程序根本无法在支持 ARM 仿真的 x86 设备 Asus ZenFone 2 ZE551ML 上启动: https ://www.gsmarena.com/asus_zenfone_2_ze551ml-6917.php

Screen Shot 2019-06-16 at 11 55 54 PM

切换到masterdev频道给我这个错误flutter build appbundle

* What went wrong:
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForProductionRelease'.
> More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'

@darioielardi您能否在flutter build appbundle -v的输出中包含 gist.google.com 链接,以及android/build.gradleandroid/app/build.gradle文件的内容?

@tvolkert当然, https: //gist.github.com/darioielardi/f7497398a39b2c12d4ea1767ca6b6e69

我切换到应用程序包并推送到 Play 商店,大多数用户似乎很高兴。 但是,我有两个报告称该应用程序根本无法在支持 ARM 仿真的 x86 设备 Asus ZenFone 2 ZE551ML 上启动: https ://www.gsmarena.com/asus_zenfone_2_ze551ml-6917.php

Screen Shot 2019-06-16 at 11 55 54 PM

是的,我有同样的问题。 它适用于 flutter build appbundle 并且大多数设备都可以很好地运行我的应用程序。 但不是为了这个华硕

回复:x86: https :

@blasten是的,我知道不支持原生 x86,但我认为这里的问题是 Google Play 将 ARM/ARM64 应用程序包安装到 x86 设备上,这些设备通过翻译宣传支持 ARM,但新的应用程序包不知何故不支持在此类设备上正常工作(可能是因为新的 ELF 格式混淆了 ARM 转换器)。 然而,原始的 ARM(非 ARM64)APK 似乎对它们有效,这通过恢复到两周前的 master 分支(具体来说是 e1a784ae)并注意到看到问题的两个用户现在拥有我的应用程序而得到证实再次在他们的 ZenFone 2 设备上运行。 这将阻止我升级到 v1.7.4。

@xinoxapps ,您能否发送flutter build appbundle -v的完整输出(请作为 gist.github.com 链接,以便该线程的可读性🙂)?

它现在在开发频道上对我有用。 你还需要一些信息吗?

@xinoxapps不-很高兴听到它对您

@darioielardi该问题现在已在 master 中修复。 请在主频道中运行flutter upgrade

@darioielardi该问题现在已在 master 中修复。 请在主频道中运行flutter upgrade

@blasten我已切换到 master 并在执行flutter build appbundle时出现此错误
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.

这是我的 gradle 和完整输出https://gist.github.com/julindra/80cd2e588cf11bdd0df3f34239b07409

大家好,

我们的目标是为添加到应用程序和口味获得更多错误修复 - 并削减v1.7.5开发版本。 因此,我们将推迟升级到测试版以获取这些修复程序。 我们仍然预计这会在 7 月初保持稳定。

flutter build appbundle为我工作。 非常感谢@tvolkert

@julindra添加-ignorewarnings'proguard-rules.pro解决这个问题。 我们目前不包括包 android.arch.*。 另一种选择是编辑您的android/app/build.gradle并添加以下内容:

.gradle dependencies { implementation "android.arch.lifecycle:common-java8:1.1.1" implementation 'android.arch.lifecycle:extensions:1.1.1' }

抄送@马修-卡罗尔

我将捆绑包app.aab上传到 Play 商店。 缺少 64 位的警告消失了,但从 Play 商店安装后,该应用程序在启动时崩溃了。 有什么建议?

使用flutter build appbundle在生产中发布是否安全?

@sulaysumaria你能发布运行flutter doctor吗?

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale en-IN)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✗] iOS toolchain - develop for iOS devices
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
      Download at: https://developer.apple.com/xcode/download/
      Or install Xcode via the App Store.
      Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
    ✗ libimobiledevice and ideviceinstaller are not installed. To install with Brew, run:
        brew update
        brew install --HEAD usbmuxd
        brew link usbmuxd
        brew install --HEAD libimobiledevice
        brew install ideviceinstaller
    ✗ ios-deploy not installed. To install:
        brew install ios-deploy
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        brew install cocoapods
        pod setup
[!] Android Studio (version 3.4)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.35.1)
[✓] Connected device (1 available)

! Doctor found issues in 2 categories.

@truongsinh

我还尝试从应用程序包生成 apk 并安装它。 它也会在启动时崩溃。

$ bundletool build-apks --bundle=build/app/outputs/bundle/app.aab --output=app.apks
$ bundletool install-apks --apks app.apks

尝试切换到dev频道并检查。

我尝试在dev通道中构建,但它破坏了我的依赖项之一。 我会尝试将其注释掉并构建以查看应用程序是否有效。

使用dev频道进行生产发布是否安全?

哎呀,对不起。 如果是用于生产,我会更加小心。

我现在正在构建 APK。 尽管 Google 建议上传 bundle 而不是 apk,所以如果在稳定分支的下一个版本中修复这个问题会很好。

我使用 adb logcat 发现了这个:

[FATAL:flutter/runtime/dart_vm.cc(389)] Error while initializing the Dart VM: Snapshot not compatible with the current VM configuration: the snapshot requires 'product use_bare_instructions no-"asserts" causal_async_stacks no-bytecode arm-eabi softfp' but the VM has 'product use_bare_instructions no-"asserts" causal_async_stacks no-bytecode arm64-sysv'

我在stable频道。

来自https://github.com/flutter/flutter/issues/19865 的解决方案有效。

我还必须从 build.gradle 中删除splits部分。

通过 bundletool 安装时,应用程序现在可以正常工作。 我会尝试上传到 Playstore 并检查是否一切正常。

@sulaysumaria该修复程序仅在主分支上可用。 如果您处于稳定状态 – 如您的flutter doctor输出所示

[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale en-IN)

未应用此修复程序。 如果您想使用稳定版进行构建,则需要等到修复版稳定版。 看起来它在1.7.x直到那时您需要单独上传 apk。

哦...谢谢@pythoneer 。 你知道什么时候可以在稳定频道上使用吗?

@sulaysumaria没问题。 在这个线程中多次提到

我们仍然预计这会在 7 月初保持稳定。

它适用于dev频道。 我使用flutter build appbundle --target-platform android-arm,android-arm64并将捆绑包上传到 Play 商店,效果很好。

@sulaysumaria - 你应该使用已经准备好的说明,无论是频道还是开发频道。

@julindra添加-ignorewarnings'proguard-rules.pro解决这个问题。 我们目前不包括包 android.arch.*。 另一种选择是编辑您的android/app/build.gradle并添加以下内容:

dependencies {
  implementation "android.arch.lifecycle:common-java8:1.1.1"
  implementation 'android.arch.lifecycle:extensions:1.1.1'
}

抄送@马修-卡罗尔

谢谢。 我只是使用 dev 频道并添加-ignorewarnings ,它完美无缺。

为我工作flutter build appbundle
https://github.com/flutter/flutter/issues/18494#issuecomment -489807239

@blasten在这一点上可以关闭,还是还有工作

@cbracken ,我认为这可以在现在或下一个稳定版本之后关闭。

您是否仍打算解决 ZenFone 2 设备和允许从 Play 商店安装 ARM 应用程序并使用 libhoudini 运行它们的类似 x86 设备的不兼容问题?

我尝试在dev通道中构建,但它破坏了我的依赖项之一。 我会尝试将其注释掉并构建以查看应用程序是否有效。

使用dev频道进行生产发布是否安全?

我从来没有使用过任何分支而不是 dev,我的应用程序可以无缝运行。 所以请相信它永远不会让人失望的分支。 @sulaysumaria

@matthewlloyd我们从 Play 商店团队那里听说,最好添加一个明确的 x86 二进制文件,而不是试图使我们现有的二进制文件与 arm->x86 转换器很好地配合使用。 - 然而,该团队最近改进了 Dart 编译器生成的代码,我想知道这是否可能使翻译工作。 试一试,让我知道。 否则,根据情况,您可能需要为 x86 构建 JIT 版本,该版本通常用于在模拟器中进行调试/分析。

@blasten感谢您提供信息。 这让我有点困惑,因为我自己没有这些设备之一——只有来自心怀不满的 ZenFone 2 用户的两个匿名 Play 商店评论——所以我没有办法进行测试。 破坏东西的风险太大了,无法推出另一个 appbundle 构建,直到有人确认改进的代码实际上可以在这些设备上运行。 除非有办法告诉 Play 商店排除此类设备,否则我将继续发布使用旧版 Flutter(和 32 位 APK)创建的构建,直到它经过 Google 测试和确认修复,或者确认不再是问题。 我想直到更多的应用程序使用新的 appbundle/.so 格式推送到商店后才会出现这种情况。 我将等待...

对于那些仍在寻找的人,这是对我有用的解决方案:

flutter build apk --split-per-abi
没有工作,即使在编辑构建 gradle 之后
来自https://flutter.dev/docs/deployment/android#build -an-apk

相反,使用:

  1. 颤振构建应用程序包
  2. 然后上传app.aab

已针对 32 位和 64 位修复了问题,并且警告“版本不符合 Play 64 位要求。”已消失。

谢谢@juliengit2flutter build appbundle确实有效。

也值得一提的是flutter版本,因为我之前有v1.5.0,但它不起作用。
我必须更新(当前到 v1.7.9)才能使其工作。

@PerechicK ,最近你指的是稳定频道还是开发频道?

DEV 频道,正如它今天出现在此处: https :

我仍然不知道从哪个版本开始修复此问题。

当使用稳定分支以外的任何东西时,我遇到了我的一个插件抛出错误“必须在主线程上执行标记为https://github 中引入的

有没有办法在使用 1.5.4-hotfix.2 稳定分支的同时构建 64 位 appbundle?

@uj这个问题https://github.com/flutter/flutter/issues/33562可能使用是否涉及到你的错误firebase_database

根据Flutter Docs ,1.7.4+ 中没有引入 64 位

不,它不是firebase_database,它实际上是OneSignal,但他们唯一的解决方案是“使用Flutter的稳定分支”

有没有办法在使用 1.5.4-hotfix.2 稳定分支的同时构建 64 位 appbundle?

@uj即使您无法使用1.5.4-hotfix.2构建 64 位 appbundle,您也可以构建 2 个 apk,一个是 32 位,一个是 64 位,将两个 apk 上传到 Google 商店以解决警告。

Flutter 1.5.4-hotfix.2 appbundle 目前针对仅构建 32 位本机代码 ( flutter build appbundle -h ) 的 android-arm。 要更改此运行flutter build appbundle --target-platform=android-arm64以更改默认目标。

现在已在测试版频道上线,发布v1.7.8+hotfix.2

@tvolkert - 好消息,谢谢。 当我们预计修复会在stable 中出现时,您是否会更具体,例如发生这种情况的日期?

@angel1st https://en.wikipedia.org/wiki/Forward-looking_statement 🙂

(我们正在努力让它尽快发生)

@tvolkert - 考虑到我们距离 64 位 apk 的 Google 截止日期大约有三周的时间,我希望您也有一个截止日期。 此外,作为开发人员,我们在您的发布和上述截止日期之间需要一些时间缓冲,以便我们可以在不打扰客户的情况下构建、测试和发布我们的应用程序。
除此之外,我真的很感谢过去几个月的努力和成果,但我希望你能够站在我们的立场上,从这个角度看看事情的样子。 感谢您的理解和迄今为止的所有努力!

@angel1st绝对。 根据早先的公告,我们的目标是在 7 月初(很快)稳定下来——我只是无法预测确切的日期。

我在 unity 2017.4.20 或 2019.1.2 中有这个问题,我该如何解决? 这个
正在打击链接: https :

希望尽快解决这个问题。 截止日期很紧

@DoubleHub您可以更改为 beta 频道来解决它。
或者等到 7 月 8 日发布稳定版。

@abc873693我读过它,我想我会等待稳定版本。 我很高兴这个问题终于正式解决了!

@abc873693我在尝试使用 _beta_ 频道将 Android 应用发布到 Play 商店时遇到了问题。 预发布报告显示可访问性警告。 该应用程序似乎没有通过启动画面。 所有设备的所有屏幕截图都停留在初始屏幕上。

我的解决方案是简单地切换到 STABLE 频道并使用 --target-platform 标志构建应用程序包。

大家好,

v1.7.8+hotfix.2已发布到稳定频道,因此此修复现已在所有频道中可用。 感谢大家一路以来的耐心和帮助!

@tvolkert谢谢! 我刚刚确认我在这里提到的观察不再存在于稳定频道!

@tvolkert如何将此v1.7.8+hotfix.2应用于现有项目? 我需要重新创建吗?

@jaasaria这个问题是关于构建你的应用程序以供发布。 如果您处于稳定状态,则需要升级您的颤振安装。 此处报告的问题是根据此链接构建应用程序包

@jaasaria只是执行: $ flutter channel stable && flutter upgrade

@MaikuB我一个月前创建了我的 src 文件,每次我构建我的项目时,我都需要执行flutter build appbundle --target-platform=android-arm64命令而不是flutter build appbundle以避免 playstore x64 错误。

@dblokhin刚刚升级,幸运的是我的项目没有中断。 :) 感谢您

谢谢@juliengit2flutter build appbundle确实有效。

也值得一提的是flutter版本,因为我之前有v1.5.0,但它不起作用。
我必须更新(当前到 v1.7.9)才能使其工作。

谢谢你的提醒!

我已经安装了 1.7.8+hotfix.3 版本的 flutter 版本,“flutter build appbundle”会产生 32 位和 64 位的 app.aab 吗?

奇怪的是,我尝试使用 1.7.8+hotfix.3 且频道稳定,但我再次收到 Playstore 警告:

“此版本不符合 Google Play 64 位要求...”

在上传包后:_flutter build appbundle_

我也尝试升级颤振,但结果相同。
并使用新的 Flutter 安装:相同的结果

这是我的conf:
m

任何的想法??

@juliengit2打开.aab文件作为普通 zip,进入base/lib文件夹并检查是否有armeabi-v7aarm64-v8a文件夹

尝试使用我的应用程序“flutter build appbundle”lib 文件夹包含 v8a 和 v7a。 我现在可以推送更新吗,我不希望在我的头脑中收到另一个警告。

另一个类似的远程 APK 收到警告的案例https://github.com/flutter/flutter/issues/18494#issuecomment -509937209

对于那些有同样问题的人,我在 build.gradle 中删除了:

ndk {
    abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
}

并且警告消失了。

(如果您保留 abifilters,即使使用 _flutter build appbundle_,您仍然会得到“发布不合规”

嗨,我成功构建了我的 appbundle,但是当我尝试将它上传到 Play 商店时,我收到了这个错误...
要上传 Android App Bundle,您必须注册 Google Play 的 App Signing。
从 Android Studio 导出您的密钥。 从 Build 菜单中,选择 Generate Signed Bundle/APK。 选择捆绑选项,然后按下一步。 选择导出加密密钥,然后按下一步。

我尝试直接从 android 模块导出这样的加密密钥,但我无法完成该过程,因为我收到此错误

进程 'command'/Users/oaacelasu/Documents/flutter/bin/flutter'' 以非零退出值 1 结束

bref 我认为这不是正确的方法......是否有另一种解决方法可以直接从 flutter build appbundle 命令获取用于注册应用程序的加密密钥?

我尝试在 Playstore 中使用 appbundle,
但是在android 6.0 arm 64中,由于找不到libflutter.so,它在启动时崩溃了,在我检查了libflutter.so之后被包含在aab arm 64中

@matthewlloyd ,我已经用本地的 chromebook 复制了这个(尽管那个 chromebook 可能会在周一旅行三周。我必须检查一下)。 我认为它_应该_针对大多数 x86 chromebook 进行复制——我认为这些可能比 x86 手机还多。

该团队最近改进了 Dart 编译器生成的代码,我想知道这是否可能使翻译工作。 试一试,让我知道。 否则,根据情况,您可能需要为 x86 构建 JIT 版本,该版本通常用于在模拟器中进行调试/分析。

@blasten ,您是否想到了特定版本的 Dart? 我用 2.3.1 复制(使用 flutter 1.7.8+hotfix.2)我要用 2.4.0 测试吗?

此外,我在发布 alpha 版本时进行了复制。 我仍然需要研究如何在不通过 Play 商店的情况下测试 appbundle。

@wreppun感谢

@matthewlloyd这是 Play 商店崩溃日志中显示的内容:

java.lang.UnsatisfiedLinkError: 
  at java.lang.Runtime.loadLibrary0 (Runtime.java:984)
  at java.lang.System.loadLibrary (System.java:1530)
  at io.flutter.view.FlutterMain.startInitialization (FlutterMain.java:122)
  at io.flutter.view.FlutterMain.startInitialization (FlutterMain.java:99)
  at io.flutter.app.FlutterApplication.onCreate (FlutterApplication.java:22)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1024)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:5549)
  at android.app.ActivityThread.-wrap2 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1595)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6320)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:891)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:781)

如果您的任何用户选择共享统计信息,这可能会显示在您的某些(旧)崩溃日志中。

该设备是 HP Chromebook x360。

很抱歉,这不适用于 100% 的配置。 我们正在努力在各种 SDK 和设备上获得更好的测试覆盖率。 同时,我将在 Firebase 测试实验室设置一些测试。

在这一点上,我认为我们解决所有这些问题的最有效方法可能是提交新问题并链接回这个问题。 @tvolkert和我将确保每个人都得到查看,但如果我们可以将它们分类到单独的存储桶中并单独跟踪它们的修复,这将对我们有所帮助。

我们很有可能需要对 Dart 编译器进行一些小的调整,我们过去曾对具有特定处理器特性的 CPU 或模拟器进行过调整。 如果我自己没有在 x86 Chromebook 上进行测试(我还没有),我不能肯定地说。

那些遇到问题的人能否通过为每个问题提交新问题来帮助我们解决剩余的问题? 这将有助于确保我们解决每一个问题。 谢谢!

@wreppun谢谢 - 我检查了我的应用程序的崩溃报告,受影响的华硕 ZenFone 2 用户都没有发送任何内容。

@blasten不用担心,那太好了。 如果有人可以在华硕 ZenFone 2 设备上展示新的 appbundle 工作,这足以让我继续前进。 不幸的是,我没有访问权限,但我希望 Google 的移动测试实验室可以。

@matthewlloyd在 Firebase 测试实验室中没有“Asus ZenFone”。 什么SDK版本? 大多数情况下,只需运行特定版本的 Android SDK 即可重现该问题。

什么SDK版本? 大多数情况下,只需运行特定版本的 Android SDK 即可重现该问题。

😂

你好 Flutter 团队,
我想强调一下这个话题的状态。 从我的角度来看,有两个严重的问题:

  • 当前稳定的flutter 版本1.7.8+hotfix.3无法构建稳定的 apk - 至少split-per-abi无法正常工作 - arm32 存在回归问题,无法在某些 arm32 设备上运行。 目前尚不清楚何时修复;
  • 8 月 1 日截止日期——大约一周后,我们作为开发人员将无法向 Google Play 商店更新或发布新的 Flutter 应用程序——就这么简单。 考虑到当前的 flutter 版本问题(如上所述)和剩余时间,我认为在本月底之前在稳定频道中进行修复是不可行的(除非你们中的某个人有魔杖:- ))

考虑到以上两个问题,我想建议以下应急计划,IMO最适合我们作为开发人员:

  • 将 flutter稳定通道回滚到hotfix.2之前的版本
  • 将 8 月 1 日的截止日期推迟几个月 - 我知道这将需要对这个问题进行一些升级,但我希望你们能理解如果开发人员由于 Flutter 框架问题而无法在 8 月 1 日之后发布可靠的Flutter 应用程序会产生多么严重的影响。

我只能代表我发言,但我有合同的客户,我决定从 React Native 转向 Flutter,因为我相信 Google 会为他们自己的产品提供更好的支持。 我有正在进行的项目和需要支持的应用程序。
现在我发现自己陷入了一个荒谬的境地,当谷歌强迫我发布 64 位 apk 版本,同时谷歌没有为我提供这样做的工具(是的,我知道 Flutter 团队与 Google Play 不同团队,但我的立场 - 你们是同一个商业实体)。
如果谷歌不能按时交付,这将导致 Flutter 的强烈反击,因为 8 月 1 日之后的每一天都会降低框架的可信度。
如果我的话听起来有点强,我很抱歉,我只希望你能暂时接受我的意见。

任何人 -请对此投票,希望我们能听到我们的声音!

我也同意这一点...但作为应急计划,我建议不要回滚到以前的版本,而是切换到dev频道....

根据我的个人经验,我最初也不太习惯使用dev频道。 我想坚持使用stable频道,因为你知道,它很稳定!...但现在我一直在使用dev频道并在 Play 商店使用应用程序包发布应用程序,没有任何问题.. ..

这种情况不应该发生,因为两者都是谷歌产品......

我提出的只是一个更简单的解决方法,因为您可以使用aab s 而不是 Google 建议的apk s 开始推送更新......

@angel1st同样的问题,同样的问题,同样的鞋子
@sulaysumaria如果我们切换到开发频道,libapp.so 问题会解决吗?
因为主频道似乎都不起作用

我提出的只是一个更简单的解决方法,因为您可以开始使用 aabs 而不是 apks 来推送更新,这是 Google 建议的...

@sulaysumaria - 它并不像看起来那么简单,相信我......此外,重新切换到开发频道似乎会导致第三方软件包和插件出现一些复杂情况,这将导致不同的问题。

@campioncino我认为是的,因为我从来没有遇到过这个问题......我只是构建了发布应用程序包并将其上传到 Play 商店......它从不显示任何警告......并且从 Play 商店安装时应用程序工作正常(至少我的客户目前使用的是什么......)

@angel1st ,我能理解……在那种情况下,回滚是唯一的选择……但是需要升级依赖项,否则你永远无法升级到更新的版本……我也遇到了一个插件的那种问题我在用,还好他们在beta发布了一个新版本来支持新版本的flutter...也许如果插件不维护,我们不应该使用它..

@sulaysumaria我也从来没有遇到过这个问题......直到最后一次构建。
我会尝试,但测试并不那么简单,因为它只发生在某些设备上。

例如在三星 Galaxy Tab 2 7.0 P3110、Android 4.2.2 和其他一些带有 android 4.1.2 的旧平板电脑上

哦...我的应用程序肯定不适用于平板电脑...如果您测试一次会更好...

大家好,

这是目前的状态:

  1. 迹象表明https://github.com/flutter/flutter/issues/35838会影响 Android 4.2 及更早版本,这意味着它会影响约 3% 的 Android 手机。 我们正在与受影响的人员合作解决该错误,以确定修复的范围并追踪可能仅影响某些应用程序的可能的辅助问题(例如Dart VM中可能不相关的错误,但并未在所有应用程序上出现)。 基于该调查及其结论,我们将决定是修补当前的稳定版本更好还是通过渠道将新版本推送到稳定版本更好。

  2. 如果有人更喜欢从较早的 Flutter 版本构建并手动构建 32 位和 64 位 APK,他们可以通过在此处下载较早版本的 Flutter

  3. 如果有人在为 Android 构建 _other_ 时遇到问题而不是https://github.com/flutter/flutter/issues/35838 ,请提交一个单独的问题并抄送我,因为我们非常想跟踪任何此类问题。

  4. 另外,我们正在积极努力增加我们的测试矩阵,以便在此过程的早期更好地检测更多设备/Android 版本上的问题(因此错误报告不是我们的第一道防线)。

@tvolkert - 感谢您的反馈。 只是为了确保我们在同一页面上 - 在8 月 1 日截止日期推迟之前回滚到以前的 Flutter 版本是没有意义的,因为 Google Play 不允许我在 8 月 1 日之后上传 32 个应用程序版本。

@angel1st这个选项适合你的情况吗?

  1. 将 flutter SDK 恢复到 v1.5.4-hotfix.2 ( flutter version v1.5.4-hotfix.2 )
  2. 构建 2 个单独的 APK(一个在 32 位flutter build apk --target-platform android-arm ,一个在 64 位flutter build apk --target-platform android-arm64
  3. 在 Google Play 商店上传这两个 APK

我知道这是一种解决方法,但至少它解决了稳定性问题和“警告”问题。

@truongsinh - 感谢您的建议 - 值得考虑。 您能否确认上述建议中的第 2 步不需要像之前的建议那样进行app gradle修正?

@angel1st只要你有整个应用程序(即不是 https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps),并且你没有在 Gradle 中修改任何东西文件(即来自flutter create原始文件),我相信我们不必做任何事情。

您可以自己进行快速检查(假设版本“3.4.5”,遵循 https://github.com/flutter/flutter/issues/31922#issuecomment-512292798,我个人选择的“内部版本号”格式是bbxxyyzz ,其中bb只是用来识别 32 位或 64 位, xx是主要的, yy是次要的, zz是patch ,但还有其他推荐的格式,请参阅 https://developer.android.com/google/play/publishing/multiple-apks#using-a-version-code-scheme):

  • flutter create hello_world
  • flutter build apk --target-platform android-arm --build-number 32030405 --build-name=3.4.5
  • mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-32.apk
  • flutter build apk --target-platform android-arm64 --build-number 64030405 --build-name=3.4.5
  • mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-64.apk

我在这里包含了 2 个 APK。 它们适用于我的 Pixel 2。同时查看 APK 分析,我们可以清楚地看到每个 APK 都有不同的libflutter.so和 4 个快照/aot 文件

Screen Shot 2019-07-17 at 1855 27

app-release-32.apk.zip
app-release-64.apk.zip

上传两个apk时的注意事项......谷歌不允许上传具有相同内部版本号的多个文件,因此您可能需要在为64位创建apk之前更改内部版本号。

上传两个apk时的注意事项......谷歌不允许上传具有相同内部版本号的多个文件,因此您可能需要在为64位创建apk之前更改内部版本号。

啊,确实如此(参考 https://developer.android.com/google/play/publishing/multiple-apks#Rules)。 只需确保对于每个版本,64 位的内部版本号高于 32 位(我更新了我之前的示例 https://github.com/flutter/flutter/issues/31922#issuecomment-512223030)。

嘿,当我尝试使用appbundle构建时收到一条错误消息。 flutter build apk工作正常,但我想发布一个新版本来播放商店。 有人可以帮助我可能是什么原因吗?

运行flutter build appbundle --target-platform android-arm,android-arm64 --flavor my_flavor --release -t "bin/main.dart的输出如下:

Initializing gradle...                                              0,6s
Resolving dependencies...                                           2,0s
Running Gradle task 'bundleMy_AppRelease'...                   
Running Gradle task 'bundleMy_AppRelease'... Done          1,9s
Gradle build failed to produce an Android bundle package.

可悲的是,错误消息并没有真正的帮助。 还有颤振医生的输出:

[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X 10.14.5 18F132, locale de-DE)
    • Flutter version 1.7.8+hotfix.3 at /Users/tom/development/flutter
    • Framework revision b712a172f9 (2 weeks ago), 2019-07-09 13:14:38 -0700
    • Engine revision 54ad777fd2
    • Dart version 2.4.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/tom/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 10.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.3, Build version 10G8
    • CocoaPods version 1.6.1

[✓] iOS tools - develop for iOS devices
    • ios-deploy 1.9.4

[✓] Android Studio (version 3.4)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 36.1.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[✓] Connected device (1 available)
    • iPhone Xʀ • 095B1A07-E138-4A80-9783-8CA36DC8049A • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-4 (simulator)

• No issues found!

编辑
如果我尝试使用--split-per abi构建失败, flutter build apk也是如此。

@wreppun谢谢 - 我检查了我的应用程序的崩溃报告,受影响的华硕 ZenFone 2 用户都没有发送任何内容。

@blasten不用担心,那太好了。 如果有人可以在华硕 ZenFone 2 设备上展示新的 appbundle 工作,这足以让我继续前进。 不幸的是,我没有访问权限,但我希望 Google 的移动测试实验室可以。

甚至我也面临着华硕 Zenfone 的问题。 当我使用flutter build apk运行时,应用程序会在手机上运行。 但是当我使用 appbundle 将它上传到 App Store 时,它​​不会在启动画面之前移动。

有什么解决办法??

我试图在“Play Store”中编译和发布我的应用程序(应用程序)的一个新版本,但我遇到了一些麻烦。

1-) 当我上传 32 位和 64 位时,站点会因为 32 位版本而回避。

2-) 当我只上传 32 位时,网站会回避,因为我需要 64 位。

3-) 当我只上传 64 位时,网站可以工作,但我的客户可能没有 64 位 Android。 以我的手机为例,我使用相同的应用程序,但在我的手机中,当我使用 32 位 apk 时才可以使用。 当我在手机中安装 64 位 apk 时,它会在闪屏中停止。

我现在必须怎么做才能释放?

Tigerclaw1980 使用 flutter appbundle 选项

Tigerclaw1980 使用 flutter appbundle 选项@MoacirSchmidt

我使用 Delphi Beta 制作了 32 位和 64 位的 apk 文件。 不知道有没有这个选项

我试图在“Play Store”中编译和发布我的应用程序(应用程序)的一个新版本,但我遇到了一些麻烦。

1-) 当我上传 32 位和 64 位时,站点会因为 32 位版本而回避。

2-) 当我只上传 32 位时,网站会回避,因为我需要 64 位。

3-) 当我只上传 64 位时,网站可以工作,但我的客户可能没有 64 位 Android。 以我的手机为例,我使用相同的应用程序,但在我的手机中,当我使用 32 位 apk 时才可以使用。 当我在手机中安装 64 位 apk 时,它会在闪屏中停止。

我现在必须怎么做才能释放?

@Tigerclaw1980你修复了这个错误吗?

此页面是否有帮助?
0 / 5 - 0 等级