По окончании работы приложения-флаттера, без проблем запускающегося на устройстве 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'
}