簡體   English   中英

Flutter android 簽名發布后嘗試調試時應用程序崩潰

[英]Flutter android App crashes when trying to debug after signing release

我是 flutter 的新手,我正在構建一個 flutter 應用程序作為學校項目的一部分。 我和我的團隊正在構建 ios、android 和 web 應用程序版本,我的任務是生成和簽署我的應用程序包以在 google play 中發布。 我能夠成功簽署捆綁包並上傳項目。 我無法在模擬器上測試發布版本,但這是另一個可能相關的問題。

關於這一點,我現在在調試我的應用程序時遇到了問題。 在重命名和配置構建類型之前沒有問題,我只是使用默認應用程序 ID 並在 VScode 中運行調試器。 我的應用程序似乎構建成功(我認為是因為我沒有收到錯誤),但它沒有正確安裝在模擬器上。 我收到一個關於仿真的彈出通知,不幸的是應用程序不斷關閉。 在捕獲日志中,我看到“等待天文台端口可用......”。

我已經重置了模擬器,flutter 清理並重建。 我曾嘗試在 android 工作室(調試)中運行/清理/構建,但無濟於事。

這是捕獲日志。 我沒有將它們全部包括在內,因為看起來應用程序正在正確構建。

                   A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementReceiver" (Raw: "com.google.android.gms.measurement.AppMeasurementReceiver")
                   A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
                   A: android:exported(0x01010010)=(type 0x12)0x0
                 E: receiver (line=177)
                   A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver" (Raw: "com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver")
                   A: android:permission(0x01010006)="android.permission.INSTALL_PACKAGES" (Raw: "android.permission.INSTALL_PACKAGES")
                   A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
                   A: android:exported(0x01010010)=(type 0x12)0xffffffff
                   E: intent-filter (line=182)
                     E: action (line=183)
                       A: android:name(0x01010003)="com.android.vending.INSTALL_REFERRER" (Raw: "com.android.vending.INSTALL_REFERRER")
                 E: service (line=187)
                   A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementService" (Raw: "com.google.android.gms.measurement.AppMeasurementService")
                   A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
                   A: android:exported(0x01010010)=(type 0x12)0x0
                 E: service (line=191)
                   A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementJobService" (Raw: "com.google.android.gms.measurement.AppMeasurementJobService")
                   A: android:permission(0x01010006)="android.permission.BIND_JOB_SERVICE" (Raw: "android.permission.BIND_JOB_SERVICE")
                   A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
                   A: android:exported(0x01010010)=(type 0x12)0x0
                 E: provider (line=197)
                   A: android:name(0x01010003)="com.google.firebase.provider.FirebaseInitProvider" (Raw: "com.google.firebase.provider.FirebaseInitProvider")
                   A: android:exported(0x01010010)=(type 0x12)0x0
                   A: android:authorities(0x01010018)="com.sensationalscience.sensational_science.firebaseinitprovider" (Raw: "com.sensationalscience.sensational_science.firebaseinitprovider")
                   A: android:initOrder(0x0101001a)=(type 0x10)0x64
                 E: meta-data (line=203)
                   A: android:name(0x01010003)="com.google.android.gms.version" (Raw: "com.google.android.gms.version")
                   A: android:value(0x01010024)=@0x7f080004
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [   +6 ms] Stopping app 'app.apk' on Android SDK built for x86.
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [        ] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am force-stop com.sensationalscience.sensational_science
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [  +44 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell pm list packages com.sensationalscience.sensational_science
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +215 ms] package:com.sensationalscience.sensational_science
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [   +2 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell cat /data/local/tmp/sky.com.sensationalscience.sensational_science.sha1
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [  +24 ms] 2ef7da51e6c1f4f4170671be4372471e59f61ee6
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [        ] Installing APK.
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [   +1 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe version
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [  +16 ms] Android Debug Bridge version 1.0.41
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <==            Version 29.0.6-6198805
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <==            Installed as C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [        ] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [{"event":"app.progress","params":{"appId":"bc8e3997-0174-4387-ae07-3b6f69cdc04d","id":"1","progressId":null,"message":"Installing build\\app\\outputs\\apk\\app.apk..."}}]
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [  +17 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 install -t -r C:\Users\Lauren\Documents\School\467\sensational_science\build\app\outputs\apk\app.apk
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [+3493 ms] Performing Streamed Install
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <==            Success
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [{"event":"app.progress","params":{"appId":"bc8e3997-0174-4387-ae07-3b6f69cdc04d","id":"1","progressId":null,"finished":true}}]
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [   +1 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell echo -n cc0ff10c7a448e68c958b5ace7858fca4554ee4e > /data/local/tmp/sky.com.sensationalscience.sensational_science.sha1
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [  +31 ms] Android SDK built for x86 startApp
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [   +2 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true --ez verify-entry-points true --ez start-paused true com.sensationalscience.sensational_science/com.sensationalscience.sensational_science.MainActivity
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [  +95 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.sensationalscience.sensational_science/.MainActivity (has extras) }
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [        ] Waiting for observatory port to be available...
Tue May 05 2020 [12:23:20 GMT-0600 (Mountain Daylight Time)] Log file ended

這是我的應用程序級別 build.gradle。 請注意我的構建類型。 我不確定這些配置是否正確。 我關注了 https://flutter.dev/docs/deployment/android但他們對如何設置構建類型的解釋有限。

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

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.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // connection to firebase 
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

 def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }
android {


    compileSdkVersion 28

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {

        applicationId "com.sensationalscience.sensational_science"
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true
        versionCode = flutterVersionCode.toInteger()
        versionName flutterVersionName
    }


//**Note in my app I have the correct key info I just replaced the information here.
    signingConfigs {
        release {
            keyAlias keystoreProperties['xx']
            keyPassword keystoreProperties['xx']
            storeFile keystoreProperties['C:\\Keystore\\xx'] ? file(keystoreProperties['xx']) : null
            storePassword keystoreProperties['xx']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }

        debug {

            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}



flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.google.firebase:firebase-analytics:17.2.2' // connect to firebase analytics
    implementation 'com.google.firebase:firebase-auth:19.3.0' // connect to firebase authentication
    implementation 'com.google.firebase:firebase-firestore:21.4.2' // connect to firebase coud firestore
    implementation 'com.android.support:multidex:1.0.3' // allow more than 64k methods with multidex enabling
}

這是我的 android 清單。 我想知道 MainActivy 是否是問題所在。 我不太確定該文件在哪里/究竟是什么,並且在捕獲日志的末尾有一個在啟動 Intent 時對其的引用。 ``

package="com.sensationalscience.sensational_science">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 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="sensational_science"
    android:icon="@mipmap/ic_launcher">
    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">

        <!-- Specifies an Android theme to apply to this Activity as soon as
             the Android process has started. This theme is visible to the user
             while the Flutter UI initializes. After that, this theme continues
             to determine the Window background behind the Flutter UI. -->
        <meta-data
          android:name="io.flutter.embedding.android.NormalTheme"
          android:resource="@style/NormalTheme"
          />
        <!-- Displays an Android View that continues showing the launch screen
             Drawable until Flutter paints its first frame, then this splash
             screen fades out. A splash screen is useful to avoid any visual
             gap between the end of Android's launch screen and the painting of
             Flutter's first frame. -->
        <meta-data
          android:name="io.flutter.embedding.android.SplashScreenDrawable"
          android:resource="@drawable/launch_background"
          />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <!-- Add UCrop Activity for image cropping (MPJ 4/21/20)-->
    <activity
        android:name="com.yalantis.ucrop.UCropActivity"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>

    <!-- Don't delete the meta-data below.
         This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
    <meta-data
        android:name="flutterEmbedding"
        android:value="2" />
</application>

這是我的 build.gradle。 I am getting this error Could not run phased build action using Gradle distribution ' https://services.gradle.org/distributions/gradle-5.6.2-all.zip '. 無法啟動守護進程。 此問題可能是由於守護程序配置不正確造成的。 例如,使用了無法識別的 jvm 選項。 請參閱https://docs.gradle.org/5.6.2/userguide/gradle_daemon.html的守護進程用戶手冊章節

處理命令行:C:\Program Files (x86)\Java\jdk1.8.0_172\bin\java.exe -Xmx1536M -Dfile.encoding=utf8 -Duser.country=US -Duser.language=en -Duser.variant - cp C:\Users\Lauren.gradle\wrapper\dists\gradle-5.6.2-all\9st6wgf78h16so49nn74lgtbb\gradle-5.6.2\lib\gradle-launcher-5.6.2.jar org.gradle.launcher.daemon.bootstrap .GradleDaemon 5.6.2 請閱讀以下進程 output 以了解更多信息:VM 初始化時出錯,無法為 1572864KB 預留足夠的空間 object heapJava(0)

       buildscript {
            ext.kotlin_version = '1.3.50'
            repositories {
                google()
                jcenter()
            }

            dependencies {
                classpath 'com.android.tools.build:gradle:3.5.0'
                classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
                classpath 'com.google.gms:google-services:4.3.3' // for connecting to firebase
            }
        }

        allprojects {
            repositories {
                google()
                jcenter()
            }
        }

        rootProject.buildDir = '../build'
        subprojects {
            project.buildDir = "${rootProject.buildDir}/${project.name}"
        }
        subprojects {
            project.evaluationDependsOn(':app')
        }

        task clean(type: Delete) {
            delete rootProject.buildDir
        }

編輯:我添加到捕獲日志

編輯:添加 android 工作室崩潰細節:

  --------- beginning of crash
2020-05-05 13:37:49.148 13524-13524/com.sensationalscience.sensational_science E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sensationalscience.sensational_science, PID: 13524
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.sensationalscience.sensational_science/com.sensationalscience.sensational_science.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.sensationalscience.sensational_science.MainActivity" on path: DexPathList[[zip file "/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/lib/x86, /data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk!/lib/x86, /system/lib, /vendor/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2718)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sensationalscience.sensational_science.MainActivity" on path: DexPathList[[zip file "/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/lib/x86, /data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk!/lib/x86, /system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1173)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6541) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

我已經解決了這個問題。 當我更改應用程序名稱/ID 時,我不小心更改了 MainActivity.java class 名稱。 我將 Sensational Science 中的 class 名稱更改為 MainActivity。

package com.sensationalscience.sensational_science

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM