运行我的应用程序时,出现以下错误:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name.app/com.name.app.MainActivity}:
java.lang.ClassNotFoundException: Didn't find class "com.name.app.MainActivity" on path:
DexPathList[[zip file "/data/app/com.name.app-2/base.apk"],
nativeLibraryDirectories=[/vendor/lib, /system/lib]]
我使用了android studio apk分析器(build>analyze apk)来分析我的apk(app/build/outputs/apk/debug/app debug.apk)和
classes.dex
是
java/
lang/*
util/*
io/*
com/google/devtools/build/...
我注意到我自己的课程,也就是主要活动,都不见了。
据我所知,dex文件
this
所以问题)我自己的课程也应该在那里。
因为他们不在那里,我明白为什么我会犯错误,我的课找不到。
我在自己的设备上得到这个错误:三星、棒棒糖5.0.2、API 21,在虚拟设备上得到这个错误:谷歌像素、Oreo 8.0.0、API 26。
我试过的
我在谷歌上找到了很多建议,但都不管用。
这些建议是:
-
禁用即时运行。文件>设置>生成、执行、部署>即时运行>取消选中即时运行。
-
清理项目。构建>干净。然后重新生成项目,build>rebuild。
-
使缓存无效/重新启动。
-
从设备中卸载应用程序,然后重试。
-
在中使用不同的路径命名
Manifest
是的。改变
android:name=".MainActivity"
进入之内
android:name="com.name.app.MainActivity"
在
activity
标签。
-
禁用前德兴,如
this
回答。
将以下内容添加到
build.gradle
dexOptions {
preDexLibraries false
}
-
启用多索引,跟随
this
链接。首次启用多索引
平地
,然后添加
MultiDexApplication
我的清单。我的
MainActivity
延伸
AppCompatActivity
(因此,它不扩展
Application
)中。
启用multidex会产生类似的错误:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication:
java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path:
DexPathList[...]
下面是启用多重索引的附加项。
平地
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
显示
(仅相关部分)
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
备注
还有一个关于图书馆的建议,参见
this
回答。
但是,这是针对eclipse的,我不确定它是否能解决我的问题。
格雷德应该处理所有的依赖关系,对吧?
以防万一,下面是我在Gradle(Kotlin版本1.2.51)中列出所有依赖项的方式:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-simplexml:2.3.0'
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testImplementation 'org.junit.platform:junit-platform-engine:1.2.0'
testImplementation 'org.jetbrains.spek:spek-api:1.1.5'
testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.5'
}
更新
我正在使用android studio 3.1.3。我尝试使用另一台笔记本电脑(通过版本控制,使用android studio 3.1.3)运行我的应用程序,但没有出现错误。由于文件完全相同,我怀疑我的android工作室设置有问题。
删除android studio及其所有设置,然后从下载并安装android studio
here
没有解决问题。