我通过导入外部库超过了65k方法限制.我启用了ProGuard,但仍然遇到同样的错误.
[2015-01-12 15:13:39 - Dex Loader] Unable to execute dex: method ID not in [0, 0xffff]: 65536
[2015-01-12 15:13:39 - MyFirstGame] Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Run Code Online (Sandbox Code Playgroud)
阅读官方Google文档后,似乎我应该配置MultiDex支持.我正在使用Eclipse Indigo IDE构建我的项目,并且没有build.gradle文件.使用SDK Manager我安装了"Android Support Repository"Rev. 11和"Android Support Library"Rev.21.0.3.我添加了
android:name="android.support.multidex.MultiDexApplication"
Run Code Online (Sandbox Code Playgroud)
属于我的清单文件,现在我正在尝试实现
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
MultiDex.install(this);
}
Run Code Online (Sandbox Code Playgroud)
但是,'MultiDex'类无法解析.根据Google官方文档,这个jar应该位于/ extras/android/support/multidex// support /目录下没有/ multidex /目录.
我如何下载和安装MulitDex支持库?
[2015-07-16 17:32:14 - Loneous] Dx
trouble writing output: Too many method references: 107085; max is 65536.
You may try using --multi-dex option.
Run Code Online (Sandbox Code Playgroud)
我有这个错误,我已经使用MultiDexApplication扩展了我的Application类,但我仍然收到此错误.
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
Run Code Online (Sandbox Code Playgroud)
还在我的应用程序中添加了attachBaseContext方法.
请指导我如何避免此编译错误并成功运行我的应用程序.
所以我现在面对这个问题一段时间了.调试时我正在使用运行Android 5.1(L)的设备.当我完成后,我app-debug.apk从中获取/app/build/output/apk并通过Beta(由Fabric)将其转发给测试部门.
所以在测试人员方面,当安装在运行Android 4.4(K)的设备上时,应用程序在打开时会崩溃.这不是Fabric的问题,因为其他渠道如松弛,电子邮件等也会发生同样的事情.
如果我在运行Android K的模拟器上再次构建应用程序并发送apk,它将在测试设备上正常运行.是的,应用程序在运行Android 4.4的多个设备上崩溃了.
我在SO上找不到与此有关的内容,所以想想把它放好.这是Android Studio的已知问题还是我错过了什么?
我正在使用:
如果这不是一个错误,这是否意味着我们必须在较低的Android版本上生成签名的apk,以便它可以在所有设备上运行?
有谁知道这个问题?
更新: Android K上崩溃的版本在Android L及更高版本上运行正常.
更新:我能够获得Logcat:
FATAL EXCEPTION: mainProcess: com.myapp.qa, PID: 3570 java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.ClassNotFoundException: Didn't find class "com.android.tools.fd.runtime.BootstrapApplication" on path: DexPathList[[zip file "/data/app/com.myapp.qa-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.myapp.qa-2, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused …Run Code Online (Sandbox Code Playgroud) java android android-gradle-plugin android-multidex android-studio-2.1
我在为 paypal 添加另一个包后收到此错误,但我已删除此错误,但仍然收到相同的错误,我已针对此问题检查了多个解决方案,但尚未解决。gradle 代码已附在下面。
Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
Run Code Online (Sandbox Code Playgroud)
com.android.build.api.transform.TransformException:生成主 dex 列表时出错。
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "mainproject.mainroject.story"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
aaptOptions
{
cruncherEnabled = false
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
//noinspection GradleCompatible
implementation 'com.google.firebase:firebase-config:11.0.4'
implementation 'com.google.firebase:firebase-database:11.0.4'
implementation 'com.google.firebase:firebase-auth:11.0.4' …Run Code Online (Sandbox Code Playgroud) 我通过以下堆栈跟踪遇到此崩溃:
Caused by java.lang.ClassNotFoundException
Didn't find class "java.time.Month" on path: DexPathList[[zip file "/data/app/com.my.app/base.apk"],nativeLibraryDirectories=[/data/app/com.my.app/lib/arm, /data/app/com.my.app/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass + 56(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass + 380(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass + 312(ClassLoader.java:312)
at com.my.app.root.path.to.my.Class$disableDays$1.onMonthChanged + 37(Class.java:37)
at com.applikeysolutions.cosmocalendar.view.CalendarView.containsFlag(CalendarView.java:77)
at com.applikeysolutions.cosmocalendar.view.CalendarView.onSnap + 1073(CalendarView.java:1073)
at com.applikeysolutions.cosmocalendar.utils.snap.GravityDelegate$1.onScrollStateChanged + 33(GravityDelegate.java:33)
at androidx.recyclerview.widget.RecyclerView.dispatchOnScrollStateChanged + 4998(RecyclerView.java:4998)
at androidx.recyclerview.widget.RecyclerView.setScrollState + 1545(RecyclerView.java:1545)
at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run + 5134(RecyclerView.java:5134)
at android.view.Choreographer$CallbackRecord.run + 910(Choreographer.java:910)
Run Code Online (Sandbox Code Playgroud)
我认为我的应用程序可能没有被多重索引,但它已经在我的清单中被多重索引(java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDate; error);甚至以编程方式对我的应用程序进行多重索引仍然会使此问题在某些设备上回归。
有什么理由怀疑我com.applikeysolutions.cosmocalendar.view.CalendarView(https://github.com/ApplikeySolutions/CosmoCalendar)和我的 Proguard 之间的关系有问题吗?到目前为止,我的 Proguard 规则中还没有该库的条目。
谢谢你!