java - Flutter App 在启动时和通过 java.lang.ClassNotFoundException 在生产中崩溃
问题描述
我正在使用颤振开发应用程序。调试 apk 工作正常,但是当我为发布构建 apk 时,它崩溃了。我将应用程序上传到 Playstore,并在 ANR/崩溃报告页面中找到了它。
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3029)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3266)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1957)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7099)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateActivity (AppComponentFactory.java:69)
at android.app.Instrumentation.newActivity (Instrumentation.java:1219)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3017)
我的android/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.1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.1'
}
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.android.application'
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 {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.eduhomepro.students"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
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'
}
我想知道是什么错误导致了故障,在调试模式下一切正常。
解决方案
感谢大家的努力和支持。我终于得到了解决方案。
实际上我正在尝试更改包名称并将其更改为 1) AndroidManifest.xml 2) build.gradle
但在我的版本中,我需要更新MainActivity.kt
下面的app/src/main/kotlin
.
现在它工作正常。
推荐阅读
- html - 作为开发者如何使用 Chrome 的 Password Suggester
- elasticsearch - 在 ElasticSearch 中,创建自定义字段类型的等价物是什么?
- html - 打印友好的网络简历
- javascript - 页面加载后加载外部脚本
- r - 按部门分组,然后按财政年度汇总
- css - 你如何将最后一个 'div' 设置在 flexbox 末尾的另一个 'div' 中?
- django - 我们如何在 django 中更改现有用户表中的字段名称
- travis-ci - 成功 travisci 后部署 pypi
- java - HTTPS:如何支持所有 SSL/TLS 协议和密码套件?
- python - 在 Flask 应用程序中使用 zerorpc 会引发错误“操作将永远阻塞”