打开应用程序时,在Flutter中发布的“ flutter build apk”崩溃了

时间:2019-09-13 07:43:24

标签: flutter install release

我已经设置了用于构建应用发布的版本,例如pro-guard,图标,清单等,而没有flavor。我将目录/android迁移到AndroidX是因为如果没有,运行flutter build apk时将无法构建应用程序版本。因此,我将其迁移并获得了成功。如下所示:

rifafauzi6@Anonymous-X456UR:/media/rifafauzi6/NM/Materi/BackUp Aplikasi Android/Flutter Project/vallery$ flutter build apk
You are building a fat APK that includes binaries for android-arm, android-arm64.
If you are deploying the app to the Play Store, it's recommended to use app bundles or split the APK to reduce the APK size.
    To generate an app bundle, run:
        flutter build appbundle --target-platform android-arm,android-arm64
        Learn more on: https://developer.android.com/guide/app-bundle
    To split the APKs per ABI, run:
        flutter build apk --target-platform android-arm,android-arm64 --split-per-abi
        Learn more on:  https://developer.android.com/studio/build/configure-apk-splits#configure-abi-split
Initializing gradle...                                              1.3s
Resolving dependencies...                                           2.9s
Running Gradle task 'assembleRelease'...                                
Running Gradle task 'assembleRelease'... Done                      59.6s
Built build/app/outputs/apk/release/app-release.apk (16.1MB).

然后,成功后,我通过两种方式安装它:

使用flutter安装

rifafauzi6@Anonymous-X456UR:/media/rifafauzi6/NM/Materi/BackUp Aplikasi Android/Flutter Project/vallery$ flutter install
Initializing gradle...                                              1.3s
Resolving dependencies...                                           2.5s
Installing app.apk to SM A600G...
Installing build/app/outputs/apk/app.apk...                        16.4s

使用手册,转到该目录并安装。

enter image description here

我已经尝试过flutter build apk --split-per-abi,然后像上面一样,我也通过两种方式进行安装。但是当我在显示初始屏幕之前打开应用程序时仍然崩溃。这是发布应用程序在清单main中的清单:

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

    <!-- 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. -->
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="Vallery"
        android:usesCleartextTraffic="true"
        android:icon="@mipmap/ic_vallery">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            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>

这是flutter doctor -v的输出:

[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Linux, locale en_US.UTF-8)
    • Flutter version 1.7.8+hotfix.4 at /media/rifafauzi6/NM/Materi/flutter
    • Framework revision 20e59316b8 (8 weeks ago), 2019-07-18 20:04:33 -0700
    • Engine revision fee001c93f
    • Dart version 2.4.0


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /home/rifafauzi6/Android/Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /opt/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Android Studio (version 3.5)
    • Android Studio at /opt/android-studio
    • Flutter plugin version 39.0.3
    • Dart plugin version 191.8423
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] VS Code (version 1.38.0)
    • VS Code at /usr/share/code
    • Flutter extension version 3.3.0

[✓] Connected device (1 available)
    • SM A600G • 5200e3e7f01e45f3 • android-arm • Android 9 (API 28)

• No issues found!

有人可以帮助我吗?因为在上传到Play商店之前,我需要先将其安装(发布apk)到真实设备中。

5 个答案:

答案 0 :(得分:10)

尝试

[1-9][0-9]{7}  <-- seven digits, for a total of 8 digits
^^^ one digit

更新

flutter build apk --no-shrink

这解决了我的问题

答案 1 :(得分:1)

如果您生成的发行版本在Android设备上安装apk时崩溃,请确保按照https://flutter.dev/docs/deployment/android中所述正确地遵循了说明。

这涉及在app/build.gradle

中进行所需的更改

添加key.properties文件

,然后最终生成您的发行版APK。

答案 2 :(得分:0)

由于诸如proguard之类的发布应用的安装项目而导致崩溃。

答案 3 :(得分:0)

尝试一下,为我工作!!

flutter clean 

答案 4 :(得分:0)

对我来说是 gradle 版本。我变了

classpath 'com.android.tools.build:gradle:4.1.1'

classpath 'com.android.tools.build:gradle:3.5.0'

android/build.gradle