API 14-API 19(Android 4.X)和targetSdkVersion 27上的多索引问题
我用过API 14-API 19(Android 4.X)和targetSdkVersion 27上的多索引问题,android,android-4.4-kitkat,android-multidex,android-4.0.3-ice-cream-sandwich,Android,Android 4.4 Kitkat,Android Multidex,Android 4.0.3 Ice Cream Sandwich,我用过 compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 14 targetSdkVersion 23 ... multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.1' ... } 在应用程序级别的build.gradle和 <
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
...
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
...
}
在应用程序
级别的build.gradle
和
<manifest package="com.example"
...
<application
android:name=".AppContext"
...
>
>
在所有可用的安卓4.X设备上安装时,该应用程序开始崩溃。大多数崩溃的原因如下:
java.lang.RuntimeException:
at android.app.ActivityThread.installProvider (ActivityThread.java:5236)
at android.app.ActivityThread.installContentProviders (ActivityThread.java:4828)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:4711)
at android.app.ActivityThread.access$1600 (ActivityThread.java:175)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1368)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:146)
at android.app.ActivityThread.main (ActivityThread.java:5602)
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:1283)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
at dalvik.system.NativeStart.main (Native Method)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:67)
at java.lang.ClassLoader.loadClass (ClassLoader.java:497)
at java.lang.ClassLoader.loadClass (ClassLoader.java:457)
at android.app.ActivityThread.installProvider (ActivityThread.java:5221)
我发现解决这个问题的唯一办法就是排除
// compile 'com.android.support:multidex:1.0.3'
从app
-级别build.gradle
和更改
public class AppContext extends Application {
...}
到
这是构建工具27.x.x
中的错误还是什么 你可以这样试试
1) 除去
多索引启用真
来自应用程序gradle
并且只添加
实现'com.android.support:multidex:1.0.3'
添加到您的应用程序依赖项
像这样
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.heizolscout.itclanbd.heizolscout"
minSdkVersion 18
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:support-v4:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
我的一个应用程序也有同样的问题。像这样使用app extensing
MultiDexApplication
:
public class AppContext extends MultiDexApplication {
...
}
compile 'com.android.support:multidex:1.0.3'
import android.support.multidex.MultiDex;
public class AppContext extends Application {
...
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
并使用如下所示的多索引依赖项:
public class AppContext extends MultiDexApplication {
...
}
compile 'com.android.support:multidex:1.0.3'
import android.support.multidex.MultiDex;
public class AppContext extends Application {
...
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
没用
我通过在应用程序类中使用MultiDex.install
来解决这个问题。大概是这样的:
public class AppContext extends MultiDexApplication {
...
}
compile 'com.android.support:multidex:1.0.3'
import android.support.multidex.MultiDex;
public class AppContext extends Application {
...
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
可能重复的可能是您是对的,但解决方案不存在,而且当应用程序使用的方法少于64K时,他们似乎正在使用
multidex
。错误您的应用程序的minSdkVersion
是什么,崩溃设备的API是什么?您是否同时使用了extends multidex应用程序
和com.android.support:multidex:1.0.3
,或者您尝试了一种又一种方法?我已经尝试了所有的可能性。首先扩展多索引应用程序。其次,在AndroidManifest.xml中使用android:name=“android.support.multidex.MultiDexApplication”。并使用MultiDex.install()<代码>仅MultiDex.install()适用于我们的测试设备(三星s3、s4、小米、维梧、华为、熔岩等)。我的应用程序正在使用android 14作为minSdkVersion
是否所有崩溃的设备都有API<21?是的,所有低于21的设备都会崩溃。尤其是Android版本为4.4的设备。你需要自己尝试确认。我已经在谷歌开发者控制台收到了很多用户的确认:)我已经给谷歌写过信了。请启动它。结果:org.gradle.api.tasks.TaskExecutionException:task执行失败:应用程序:transformDexArchiveWithExternalLibsDexMergerForDebug'
原因:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:合并dex存档时出错
从android studio菜单重试使缓存无效并重新启动@伊莎森特