完成flutter应用程序后,在ADB设备上运行没有问题,没有Flutter Doctor问题,生成了已签名的APK,然后将其安装到设备上,然后再上传到Google Play。 在设备上安装了应用程序,单击以打开设备上的应用程序,得到“不幸的是,该应用程序已停止工作。”撞在墙上的头。
我为解决在尝试构建带符号的APK时出现错误的问题所做的操作: 修复了所有构建问题(找不到AndroidManifest,无法读取@string属性,android:configChanges东西,定向到项目结构中的MainActivity文件,在项目结构“问题”选项卡中下载了依赖项;已修复)。应用程序确实生成了0个错误。
在生成签名的APK之前,先使用Flutter Clean(工具,Flutter)和Code Cleanup(在“ Analyze”标签下)清理项目。
有关此主题的其他stackoverflow问题,但未解决此问题: Why my signed apk crashes? Why my signed apk crashes?
我在互联网上搜寻了好几天,发现自己的额头仍然反复地从坚固的墙壁上反弹,这表明没有迹象表明很快就会出现任何结构性故障。
我不知道共享代码的哪一部分,因为我不知道翻转问题是什么。当您在IntelliJ中创建新应用时,我用flutter创建的默认应用重新创建了问题。因此,即使是没有新代码的默认应用,安装后签名的APK崩溃也会产生同样的问题。
另一个奇怪的事情是:该应用程序在设备上安装时约为54 mB。神圣的霍勒林式烈火正在发生什么? APK约为7 mB。
这是logcat:
---------崩溃开始 01-25 22:30:48.093 27488-27488 /? E / AndroidRuntime:致命异常: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) 原因:java.lang.ClassNotFoundException:在路径:DexPathList [[zip文件“ /data/app/com.example.nothing2-1/base.apk”]上找不到类“ com.example.nothing2.MainActivity” ,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'
}