- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决运行具有超过 65k 方法的 Android 应用程序的问题。
我已经关注了有关 Multidex 支持的 Google 文档,但是我仍然无法成功运行它。似乎问题只出现在小于 21 的 SDK 上,因为当我指定 minSdkVersion 21
时,它运行良好,但是一旦我将它设置为 minSdkVersion 15
,我就得到了以下异常。
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application custom.package.name.MyApplication: java.lang.ClassNotFoundException: Didn't find class "custom.package.name.MyApplication" on path: DexPathList[[zip file "/data/app/custom.package.name-2/base.apk"],nativeLibraryDirectories=[/data/app/custom.package.name-2/lib/arm, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:578)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "custom.package.name.MyApplication" on path: DexPathList[[zip file "/data/app/custom.package.name-2/base.apk"],nativeLibraryDirectories=[/data/app/custom.package.name-2/lib/arm, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newApplication(Instrumentation.java:981)
at android.app.LoadedApk.makeApplication(LoadedApk.java:573)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Suppressed: java.io.IOException: Failed to open dex files from /data/app/custom.package.name-2/base.apk
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:295)
at dalvik.system.DexFile.<init>(DexFile.java:80)
at dalvik.system.DexFile.<init>(DexFile.java:59)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:279)
at dalvik.system.DexPathList.makePathElements(DexPathList.java:248)
at dalvik.system.DexPathList.<init>(DexPathList.java:120)
at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:65)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:58)
at android.app.LoadedApk.getClassLoader(LoadedApk.java:376)
at android.app.LoadedApk.makeApplication(LoadedApk.java:568)
... 9 more
Suppressed: java.lang.ClassNotFoundException: custom.package.name.MyApplication
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
致命异常前的 Logcat
W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/custom.package.name-2/base.apk --oat-file=/data/dalvik-cache/arm/data@app@custom.package.name-2-2@base.apk@classes.dex) because non-0 exit status
W/art: Failure to verify dex file '/data/app/ccustom.package.name-2-2/base.apk': Invalid method name: '_clinit@1433781298707#0'
W/System: ClassLoader referenced unknown path: /data/app/custom.package.name-2-2/lib/arm
这是我到目前为止所做的:
创建了名为 MyApplication 的类,它扩展了 Application 并在 AndroidManifest.xml 文件中指定了它
添加对 build.gradle 文件的依赖
编译 'com.android.support:multidex:1.0.1'
在 build.gradle 中启用 multidex
multiDexEnabled true
在 MyApplication 类中启用 multidex
@覆盖
protected void attachBaseContext(上下文基础){
super.attachBaseContext(基础);
MultiDex.install(这个);
}
在此先感谢您的帮助!
最佳答案
试试这个,这对我有用,几乎是从当前项目中复制的....
build.gradle
android {
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "my.package.name"
minSdkVersion 16
targetSdkVersion 23
multiDexEnabled = true
versionCode 3
versionName "0.1.2"
renderscriptTargetApi 14
renderscriptSupportModeEnabled true
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:multidex:1.0.1'
}
应用类
public class MyApp extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
list
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
...
<application
android:name=".MyApp"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
...
值得注意的是,在我添加 READ 权限并扩展 MultiDexApplication 之前,我遇到了类似的问题
关于java - Android Multidex 运行时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214755/
我想在我的应用程序中使用 multidex,起初我使用 depedencies :'com.google.android:multidex:0.1',但是编译后出现这个错误: Error:Execut
我的应用程序在 pre-21 上崩溃并出现 java.lang.NoClassDefFoundError app.module.SomeClass 错误。 我已经启用了 Multidex: build
按照以下位置提到的说明进行操作:https://developer.android.com/studio/build/multidex.html#mdex-gradle 我遇到错误找不到符号 clas
我收到以下错误。 致命异常:main 2.1.0 版的 VM 支持 multidex 安装 VM 支持 multidex,MultiDex 支持库被禁用。 安装 VM 支持 multidex,Mult
我已经尝试了互联网上的所有解决方案,但其中任何一个都有效,这是我的 gradle: android { compileSdkVersion 25 buildToolsVersion '
> Could not resolve all files for configuration ':app:debugCompileClasspath'. > Could not find co
为了启用多索引,我在 CustomApplication 类中有以下代码: @Override public void onCreate() { MultiDex.install(this);
找不到 multidex.jar (com.android.support:multidex:1.0.2)。在以下位置搜索: https://jcenter.bintray.com/com/andro
这是我的build.gradle,当我运行应用程序时,它报告这个错误消息: 错误:任务 ':app:transformClassesWithJarMergingForDebug' 执行失败。 com.
我正在尝试启用 MultiDex。我添加了 multiDexEnabled true和 compile 'com.android.support:multidex:1.0.3'构建.gradle。我做
我曾经在几天前收到 DexIndexOverflowException,我所做的是: a) 在我的 build.gradle 文件中将 multiDexEnabled true 添加到 default
我有以下争吵: 因此,对于一个较大的项目,我需要有多个应用程序,其中包含一个可重用的库模块,用于多种用途。不幸的是,我的库模块中的类和库的基本数量似乎超出了项目的 dex 限制具有以下 gradle
我下载了 SugarORM 源代码以将其用作库模块(因此我可以覆盖应用程序的“attachBaseContext”方法。 我已经看到问题SugarORM and multidex ,问题是我不知道
我在启用 multidex 时遇到问题。我正在使用 Android Studio,我在 DrawerLayoutWidget 上收到“找不到类”。这是设置 build.gradle apply plu
我在我的应用程序中遇到了 multidex 支持的问题,实际上应用程序安装正常,但在此过程中,一些 Activity 崩溃了,应用程序重新启动了主要 Activity 。在 logcat 中我发现了这
我有这个错误。 Error:Execution failed for task ':myApp:createDebugMainDexClassList'. com.android.ide.common
我正在创建一个新的 android 项目,并决定使用新的 AndroidX 替代支持库,可以在此处找到相关文档:https://developer.android.com/jetpack/androi
我最近发现了 Android 的新 MultiDex 功能,可用于处理具有超过 65,000 个引用的应用程序。请参阅:https://developer.android.com/tools/buil
我更新了所有内置工具、支持库和 google Play 服务。但我仍然收到以下错误: Error:Execution failed for task ':app:shrinkReleaseMultiD
我正在使用 CircledImageView 库。它在 lollipop+ android 版本上运行良好。但是在 kitkat 中它崩溃了。所以在谷歌搜索之后。我发现我必须在我的应用程序中实现 mu
我是一名优秀的程序员,十分优秀!