Дротик / флаттер: приложение вылетает при запуске - PullRequest
0 голосов
/ 11 мая 2018

У меня есть очень интересная проблема, когда я могу нормально запустить свое приложение на эмуляторе, flutter build apk прошла успешно, я могу либо выпустить новую версию в Google Play, либо просто установить apk на свой телефон (Pixel2 XL, в настоящее время на апрельском патче безопасности).

Но когда я запускаю его на своем телефоне, он мгновенно падает.Я еще не пробовал установить debug apk, сначала я хочу применить исправление в мае.

Я уже несколько раз пытался обновить флаттер, но там тоже не возникает никаких проблем:

C:\Android\osszefogasaszanhuzokert>flutter upgrade
Upgrading Flutter from c:\Android\flutter...
From https://github.com/flutter/flutter
   3d3673a34..23098dde5  master     -> origin/master
Already up to date.

Upgrading engine...
Already up-to-date.

Flutter 0.3.6-pre.81 • channel beta • https://github.com/flutter/flutter.git
Framework • revision 2849bc04ff (10 days ago) • 2018-05-01 20:07:45 -0700
Engine • revision d5c1117170
Tools • Dart 2.0.0-dev.52.0.flutter-011676641a

Running "flutter packages upgrade" in osszefogasaszanhuzokert... 14.4s

Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, v0.3.6-pre.81, on Microsoft Windows [Version 10.0.15063], locale en-GB)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[√] Android Studio (version 3.1)
[√] Connected devices (1 available)

• No issues found!

Я недавно переключил ноутбуки и проверил хранилище git моего кода на этом новом.Были некоторые проблемы, но я в итоге исправил их.Единственное отличие состоит в том, что имя проекта теперь просто osszefogasaszanhuzokert, а имя пакета osszefogasaszanhuzokert2 - но я не думаю, что это должно вызывать какие-либо проблемы.

Я предполагаю, что проблема будетгде-то в моем AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zgyorkei.osszefogasaszanhuzokert2">

    <!-- The INTERNET permission is required for development. Specifically,
         flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>

    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="Összefogás A Szánhúzókért"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name="com.zgyorkei.osszefogasaszanhuzokert2.MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

Студия Android помечает некоторые атрибуты как недопустимые, но, как вы можете видеть, я почти все оставил по умолчанию - за исключением того, что я изменил android:label по понятным причинам.

РЕДАКТИРОВАТЬ: Я установил apk отладки, и он работает отлично.Тем не менее, я смог получить adb logcat для аварийного завершения релиза apk, и проблема, кажется, заключается в следующем:

05-12 07:38:23.341 29595 29595 I crash_dump32: performing dump of process 29560 (target tid = 29560)
05-12 07:38:23.341 29595 29595 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-12 07:38:23.341 29595 29595 F DEBUG   : Build fingerprint: 'google/taimen/taimen:8.1.0/OPM2.171019.029.B1/4720900:user/release-keys'
05-12 07:38:23.341 29595 29595 F DEBUG   : Revision: 'rev_10'
05-12 07:38:23.341 29595 29595 F DEBUG   : ABI: 'arm'
05-12 07:38:23.341 29595 29595 F DEBUG   : pid: 29560, tid: 29560, name: saszanhuzokert2  >>> com.zgyorkei.osszefogasaszanhuzokert2 <<<
05-12 07:38:23.342 29595 29595 F DEBUG   : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
05-12 07:38:23.343 29595 29595 F DEBUG   : Abort message: '[FATAL:flutter/runtime/dart_vm.cc(409)] 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 no-error_on_bad_override arm-eabi hardfp' but the VM has 'product no-type_checks no-asserts no-error_on_bad_type no-error_on_bad_override arm-eabi softfp'

Как я могу изменить Dart VM, чтобы использовать hardfp вместоsoftfp

Ответы [ 5 ]

0 голосов
/ 01 марта 2019

Была такая же проблема с некоторыми телефонами с другой архитектурой. Приложение начало зависать, когда я его открываю. Вот исправление, которое сработало для меня:

defaultConfig {
    ...
    multiDexEnabled true
    ndk {
        abiFilters 'x86', 'armeabi-v7a'
    }
}

Пришлось добавить ndk в android/app/build.gradle файл, и это сработало как шарм.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 11 февраля 2019

Это не прямой ответ на этот вопрос, но у меня была похожая проблема, и я оказался здесь. Другие тоже могут прийти.

МОЯ ПРОБЛЕМА: приложение рушится при первом запуске на эмуляторе

МОЕ РЕШЕНИЕ: очистить кеш, запустив flutter clean

0 голосов
/ 13 декабря 2018

У меня была такая же проблема.Для меня это произошло после того, как я переименовал свое приложение и изменил имя пакета.Я не сделал это правильно для Android.

После этого руководства о том, как изменить имя пакета , все работало нормально для Android.

Убедитесь, что имя пакетав AndroidManifest.xml и android/app/build.gradle и android/app/src/.../MainActivity.java то же самое.

0 голосов
/ 22 января 2019

Вот решение:

В файле build.gradle есть следующее:

buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
     //       signingConfig signingConfigs.debug
            // colocado isso para release
            signingConfig signingConfigs.release

            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

просто измените minifyEnabled и используйтеProguard в false и снова запустите сборку флаттера.

0 голосов
/ 02 декабря 2018

Я столкнулся с той же проблемой после обновления флаттера.

В моем приложении multiDexEnabled true был включен в файл build.gradle, и до обновления он работал нормально. Я добавил его ранее, чтобы исправить еще один сбой.

См. Также: Приложение Flutter android падает при запуске, если я включаю определенный пакет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...