没有';“找不到类”;“android.support.multidex.MultiDexApplication”;在路径上:DexPathList
我正在我的应用程序上尝试新的应用程序,到目前为止,我已经成功地正确编译了我的应用程序,但在运行它时,我遇到以下异常:没有';“找不到类”;“android.support.multidex.MultiDexApplication”;在路径上:DexPathList,android,gradle,dex,android-multidex,Android,Gradle,Dex,Android Multidex,我正在我的应用程序上尝试新的应用程序,到目前为止,我已经成功地正确编译了我的应用程序,但在运行它时,我遇到以下异常: java.lang.RuntimeException:无法实例化应用程序android.support.multidex.MultiDexApplication:java.lang.ClassNotFoundException:在NativeLibrary目录的路径:DexPathList[[zip文件”//data/app/me.myapp.main-2.apk]上未找到类“a
java.lang.RuntimeException:无法实例化应用程序android.support.multidex.MultiDexApplication:java.lang.ClassNotFoundException:在NativeLibrary目录的路径:DexPathList[[zip文件”//data/app/me.myapp.main-2.apk]上未找到类“android.support.multidex.MultiDexApplication”=[/data/app lib/me..main-2,/vendor/lib,/system/lib]]
在android.app.LoadedApk.makeApplication(LoadedApk.java:507)上
位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382)
在android.app.ActivityThread.access,售价1500美元(ActivityThread.java:139)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5086)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”//data/app/me.myapp.main-2.apk“],NativeLibraryDirectory=[/data/app-lib/me.myapp.main-2,/vendor/lib,/system/lib]上未找到类“android.support.multidex.MultiDexApplication”
位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:497)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:457)
位于android.app.Instrumentation.newApplication(Instrumentation.java:998)
在android.app.LoadedApk.makeApplication(LoadedApk.java:502)上
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 21
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:21.0.0'
compile 'com.android.support:support-v13:21.0.0'
compile 'com.android.support:appcompat-v7:21.0.0'
}
以及我的AndroidManifest.xml:
我不明白问题出在哪里。我想我正在按照文档做所有事情。我还缺少什么吗?我确保已从SDK管理器安装了最新的支持库和repo。我的配置:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.+' // 0.14.1, 2014-11-6
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
android {
compileSdkVersion = 21
buildToolsVersion = "21.1.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled true
}
}
不幸的是,我也有同样的问题。但我发现了一个奇怪的情况:
构建/中间产品/索引/调试:
-rw-rw-r-- 1 andrew andrew 2221176 Nov 6 20:18 classes2.dex
-rw-rw-r-- 1 andrew andrew 8357596 Nov 6 20:18 classes.dex
解压apk,生成/输出/apk:
-rw-rw-r-- 1 andrew andrew 8357596 Nov 6 20:18 classes2.dex
-rw-rw-r-- 1 andrew andrew 2221176 Nov 6 20:18 classes.dex
在apk中,classes.dex的主要类应该比classes2.dex大,但不是。我也会使用dex2jar&解压jar来检查类,应用程序类不在classes.dex中,相反,它在classes2.dex中
不过,我应该已经修复了它。这是我修补的android gradle插件,你可以试试:
buildscript {
repositories {
mavenCentral()
maven { url 'https://github.com/yongjhih/android-gradle-plugin.m2/raw/master/' }
}
dependencies {
classpath 'com.infstory.tools.build:gradle:0.14.+'
}
}
该修补程序位于:
或
问题:
官方补丁已经被合并,我想它可能会在下一个版本中修复
已被修正为0.14.2(2014/11/10)。(从)
我使用了最新的Android Studio并按照官方文档添加了对multidex的支持。但我仍然遇到了同样的异常。我花了很多时间解决它。最后,我发现原因是我启用了“Java异常断点-任何异常”和“异常断点-当抛出任何异常时”.我禁用它们后,应用程序运行没有问题
只需遵循有关multidex的官方文档即可。它是有效的。设置应用程序项目以使用multidex配置需要对应用程序项目进行以下修改,具体取决于应用程序支持的最低Android版本 如果minSdkVersion设置为21或更高,则只需在模块级build.gradle文件中将multiDexEnabled设置为true,如下所示:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
但是,如果minSdkVersion设置为20或更低,则必须按如下方式使用multidex支持库:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
public class MyApplication extends MultiDexApplication { ... }
- 修改模块级build.gradle文件以启用multidex,并将multidex库添加为依赖项,如下所示:
android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 26 multiDexEnabled true } ... }
android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.1' }
- 根据是否重写应用程序类,执行以下操作之一:
- 如果不重写应用程序类,请编辑清单文件以在标记中设置android:name,如下所示:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application android:name="android.support.multidex.MultiDexApplication" > ... </application> </manifest>
public class MyApplication extends MultiDexApplication { ... }
- 或者,如果确实重写了应用程序类,但无法更改基类,则可以重写attachBaseContext()方法并调用MultiDex.install(此)以启用MultiDex:
public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
- 如果不重写应用程序类,请编辑清单文件以在标记中设置android:name,如下所示:
最后清理项目并重新运行,然后它工作了。解决方案对我没有帮助,因为我使用的是jetpack版本的ie androidx.libraries 跟随官方。
和
我不得不把名字改成androidx…Multidex
<application
android:name="androidx.multidex.MultiDexApplication" >
...
</application>
...
希望它能帮助其他希望在jetpack中添加multidex的人。非常奇怪,我收到了相同的错误消息,但在我修复了一些渐变线后,它起了作用。也许它能帮助某些人: Project build.gradle: 发件人: 致: 在模块build.gradle中: 发件人: 致:
我的代码中没有其他更改,但固定版本也适用于4.x模拟器。只更改了**标记的行。在我的情况下,通过在清单中的代码下方进行更改来解决此问题
android:name="android.support.multidex.MultiDexApplication"
到
这对我有用
文件->将项目与Grandle文件同步对我来说,答案是切换到androidx版本
android:name=“androidx.multidex.MultiDexApplication”
implementation“androidx.multidex:m
android:name="android.support.multidex.MultiDexApplication"
android:name="androidx.multidex.MultiDexApplication"
Delete ./gradle .idea and build directory
Clean project
Uninstall app if already install on device and again install
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
}
}
android:name=".MainApplication"
android:name="android.support.multidex.MultiDexApplication"