使用Maps api v2,它与4.4,5.0,5.1,5.1.1,6完美配合,但是当我尝试4.2.2时应用程序崩溃.我一直在做很多研究,但似乎没有任何效果.这是完整的日志.
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.common.
at com.google.android.gms.measurement.internal.zzk$zza.get(
at com.google.android.gms.measurement.internal.zzc.zzkG(
at com.google.android.gms.measurement.internal.zzr.<init>(
at com.google.android.gms.measurement.internal.zzx.zzb(
at com.google.android.gms.measurement.internal.zzt.<init>(
at com.google.android.gms.measurement.internal.zzx.zzBQ(
at com.google.android.gms.measurement.internal.zzt.zzaU(
at com.google.android.gms.measurement.ource)
at android.content.ContentProvider.attachInfo(ContentProvider
at android.app.ActivityThread.installProvider(ActivityThread.
at android.app.ActivityThread.installContentProviders(
at android.app.ActivityThread.handleBindApplication(
at android.app.ActivityThread.access$1300(ActivityThread.
at android.app.ActivityThread$H.handleMessage(ActivityThread.
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
at com.android.internal.os.ZygoteInit.main(ZygoteInit.
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这是我的build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories { …Run Code Online (Sandbox Code Playgroud) android noclassdeffounderror google-maps-api-2 android-studio android-multidex
当我运行我的应用程序时,它说
无法立即运行:Dalvik运行时的传统multi-dex
这是否意味着我在使用multi-dex时无法使用Instant Run?
我正在使用Android Studio beta4.
当我们在Android Studio项目的gradle文件中添加新库作为依赖项时,找出我们添加到方法计数的方法的最简单方法是什么,例如:
compile 'com.github.jkwiecien:EasyImage:1.2.1'
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中遇到了一些multidex支持问题,实际上应用程序正常安装,但是通过这个过程,一些活动崩溃了,应用程序重新启动了主要活动.在logcat中我发现了这个:
I/MultiDex: install
I/MultiDex: VM has multidex support, MultiDex support library is disabled.
Run Code Online (Sandbox Code Playgroud)
但我遵循建议来启用Multidex支持:
Gradle:
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "com..company.package"
minSdkVersion 15
targetSdkVersion 25
multiDexEnabled true
versionCode 21
versionName "2.1.3"
}
dexOptions {
javaMaxHeapSize "4g"
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//compile project(':rangebar')
compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') { transitive = true }
compile('com.weiwangcn.betterspinner:library-material:1.1.0') {
exclude group: 'com.android.support', module: 'appcompat-v7'
}
compile files('libs/itextpdf-5.5.9.jar')
compile 'com.android.support:multidex:1.0.1'
...
Run Code Online (Sandbox Code Playgroud)
应用程序类扩展了Multidex:
public class MyApplication extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) { …Run Code Online (Sandbox Code Playgroud) 我创建了一个multidex应用。但是关于proguard,我在build.gradle中有以下内容:
android {
defaultConfig {
...
multiDexEnabled true
}
productFlavors {
dev {
// Enable pre-dexing to produce an APK that can be tested on
// Android 5.0+ without the time-consuming DEX build processes.
minSdkVersion 21
}
prod {
// The actual minSdkVersion for the production version.
minSdkVersion 14
}
}
buildTypes {
release {
minifyEnabled true
*** proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
Run Code Online (Sandbox Code Playgroud)
我的问题是关于progardFiles与使用multiDexKeepProguard的比较。该文档指出:
文件multiDexKeepProguard
带有附加ProGuard规则的文本文件,用于确定将哪些类编译到主dex文件中。
如果设置了该文件中的规则,则将其与构建系统使用的默认规则结合使用。
因此,如果我不使用multiDexKeepProguard,那么我的类仍会被编译,但可能不会出现在主dex文件中,这是正确的吗?我不清楚这与proguardFiles有何不同。
Android文档也引用了这个。
由于Fabric Crashlytics,我遇到了奇怪的崩溃。我正在使用Fabric的crashlytics。但是,当我在S5 5.0 API 21上运行应用程序时,它将使整个应用程序崩溃。
请参阅以下报告:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/crashlytics/android/core/CrashlyticsCore;
at com.crashlytics.android.Crashlytics.<init>(Crashlytics.java:29)
at com.projectname.application.AppData.onCreate(AppData.java:162)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5010)
at android.app.ActivityThread.access$1600(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1482)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5835)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.crashlytics.android.core.CrashlyticsCore" on path: DexPathList[[zip file "/data/app/com.projectname-2/base.apk", zip file "/data/app/com.projectname-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.projectname-2/split_lib_slice_8_apk.apk", …Run Code Online (Sandbox Code Playgroud) android crashlytics android-multidex crashlytics-android google-fabric
我正在尝试构建项目,我收到以下错误:
运行后--stackrace这是我得到的错误:
这是log我得到的:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目.这适用于Android studio 2.3.3,但是当我更新我的Android Studio 3.0并打开我的项目然后它无法组装并且它发送给我下面的错误日志时会发生什么.
错误日志
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase;
Error:com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase;
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase;
Run Code Online (Sandbox Code Playgroud)
请不要重复,因为我已经尝试过以下所有的事情
我在生产版本中面临ClassNotFoundException。
请在下面找到异常日志。
java.lang.RuntimeException:
at android.app.LoadedApk.makeApplication (LoadedApk.java:578)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:4680)
at android.app.ActivityThread.access$1600 (ActivityThread.java:150)
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:
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:982)
at android.app.LoadedApk.makeApplication (LoadedApk.java:573)
Run Code Online (Sandbox Code Playgroud)
我已经在项目中正确设置了 progaurd 和 Multidex,这个问题出现在从 4.2 到 6.0 的多个 android 版本中。
有人能帮忙吗!
提前致谢..
android classnotfoundexception android-multidex android-proguard
我正在使用'androidx.multidex:multidex:2.0.0',我使用以下命令从清单中指向MultiDexApplication类:
<application
android:name="androidx.multidex.MultiDexApplication"
...
Run Code Online (Sandbox Code Playgroud)
在build.gradle上,我还添加了以下条目:
defaultConfig {
...
multiDexEnabled true
...
Run Code Online (Sandbox Code Playgroud)
在早于5.0(Android 21)的Android版本中运行应用程序时,我收到以下异常:
java.lang.RuntimeException: Unable to instantiate application androidx.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication" on path [...]
Run Code Online (Sandbox Code Playgroud)
我用APK浏览器,我看到MultiDexApplication类和其他MultiDex辅助类,其中在classes2.dex文件.这可能就是为什么它找不到这个课程.
我必须强制这些类在主classes.dex文件上吗?怎么解决这个问题?
android-multidex ×10
android ×9
gradle ×2
androidx ×1
apache ×1
crashlytics ×1
instant-run ×1
proguard ×1