Подписанный APK падает при установке на устройство - PullRequest
0 голосов
/ 27 января 2019

По окончании работы приложения-флаттера, без проблем запускающегося на устройстве ADB, проблем с Flutter Doctor нет, генерируется подписанный APK, устанавливаемый на устройство перед загрузкой в ​​Google Play.Установил приложение на устройстве, щелкнул, чтобы открыть приложение на устройстве, получил сообщение «К сожалению, приложение перестало работать».Удар головой о стену.

Что я сделал, чтобы исправить проблемы, которые вызывали ошибки при попытке создать подписанный APK: Исправлены все проблемы сборки (не удалось найти AndroidManifest, не удалось прочитать свойство @string, вещь android: configChanges,направил в файл MainActivity в структуре проекта, скачал зависимости во вкладке «Проблемы» в структуре проекта; все исправлено).Приложение скомпилировалось с ошибками 0.

Очищенный проект с использованием Flutter Clean (Инструменты, Flutter) и Очистка кода (на вкладке «Анализ») перед созданием подписанного APK.

Другие вопросы stackoverflow по этой теме, ноне решил эту проблему: Почему мой подписанный apk падает? Почему мой подписанный apk падает?

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

Я не знаю, какой частью моего кода поделиться, потому что я понятия не имею, в чем проблема flippinявляется.Я воссоздал проблему со стандартным приложением, которое создается при создании нового приложения в IntelliJ.Таким образом, даже приложение по умолчанию, без нового кода, создает ту же проблему, что и аварийный сбой подписанного APK при установке.

Еще одна странная вещь: при установке на устройство приложение занимает около 54 мБ.Что происходит в священном холерине?Размер APK составляет около 7 мБ.

Это logcat:

--------- начало аварии 01-25 22: 30: 48.093 27488-27488/?E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.nothing2, PID: 27488 java.lang.RuntimeException: Невозможно создать экземпляр действия. ComponentInfo {com.example.nothing2 / com.example.nothing2.MainActivity}: java.lang.ClassNotFoundException: не найден класс «com.example.nothing2.MainActivity» по пути: DexPathList [[zip-файл »/data/app/com.example.nothing2-1/base.apk"],nativeLibraryDirectories=[/data/app / com.example.nothing2-1 / lib / arm, /data/app/com.example.nothing2-1/base.apk!/lib/armeabi-v7a, / vendor / lib, / system / lib]] вandroid.app.ActivityThread.performLaunchActivity (ActivityThread.java:2345) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2500) в android.app.ActivityThread.access $ 900 (ActivityThread.java:163) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1362) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main(ActivityThread.java:5585) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:730) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:620) вызваноby: java.lang.ClassNotFoundException: Не удалось найти класс "com.example.nothing2.MainActivity" по пути: DexPathList [[zip-файл "/data/app/com.example.nothing2-1/base.apk"],nativeLibraryDirectories = [/ data / app / com.example.nothing2-1 / lib / arm, /data/app/com.example.nothing2-1/base.apk!/lib/armeabi-v7a, / vendor / lib, /system / lib]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass (ClassLoader.java:511) в java.lang.ClassLoader.loadClass (ClassLoader.java:469)на android.app.Instrumentation.newActivity (Instrumentation.java:1068) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2335) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2500)на android.app.ActivityThread.access $ 900 (ActivityThread.java:163) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1362) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread.java:5585) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:730) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:620) Подавлено: java.lang.ClassNotFoundException: com.example.nothing2.MainActivity в java.lang.Class.classForName (собственный метод) в java.lang.BootClassLoader.findClass (ClassLoader.java:781) в java.lang.BootClassLoader.loadClass (ClassLoader.java:841) в java.lang.ClassLoader.loadClass (ClassLoader.java:504) ... еще 12 Причина: java.lang.NoClassDefFoundError: Класс не найден с помощью загрузчика загрузочного класса; нет трассировки стека 01-25 22: 30: 48.099 1200-3616 /? W / ActivityManager: принудительно завершить действие com.example.nothing2 / .MainActivity 01-25 22: 30: 48.126 1200-27502 /? W / DropBoxManagerService: удаление: data_app_crash (2388> 0 байт)

app / build.gradle исходный код:

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 from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 27

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.nothing2"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    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
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
...