我有一个具有minSdkVersion API 16的应用程序,当我添加新的jar文件激活,附加,邮件,itextpdf 用于发送pdf文件抛出电子邮件。以下为以前添加的模块库抛出异常:
引起:java.lang.ClassNotFoundException:找不到类" com.viewpagerindicator.TabPageIndicator" on path:DexPathList [[zip file" /data/app/com.inbridge.avakaash-1.apk"],nativeLibraryDirectories = [/ data / app-lib / com.inbridge.avakaash-1,/ vendor / lib,/ system / lib]]
如果我删除这些新的jar文件,那么它的工作正常...
这是我的傻瓜:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.inbridge.avakaash"
minSdkVersion 16
targetSdkVersion 23
multiDexEnabled true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
buildTypes {
release {
minifyEnabled false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':library')
compile files('libs/YouTubeAndroidPlayerApi.jar')
compile project(':payUMoneysdk')
compile files('libs/httpclient-win-4.4.1.jar')
compile files('libs/httpmime-4.2.3.jar')
compile files('libs/gcm.jar')
compile 'com.android.support:appcompat-v7:23.0.0-alpha2'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-auth:8.4.0'
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
compile files('libs/mail.jar')
compile files('libs/itextpdf-5.5.9.jar')
compile 'com.android.support:multidex:1.0.1'
}
这是我的settings.gradle
include ':library'
include ':payUMoneysdk'
include ':avakaash'
请任何人帮我解决此错误......
答案 0 :(得分:0)
问题在于,当您定位超过5.0 Lollipop的设备时multiDexEnabled true
还不够。如果你想支持KitKat及更早版本,那么除了这个标志之外,你还必须按照in the official docs的说明部署辅助dexes来制作你的主要Application
课程。
有多种方法可以做到这一点:
您可以从Application
MultiDexApplication
课程
public class MyApplication extends MultiDexApplication {
您可以将以下行添加到Application
类:
public void onCreate(Bundle arguments) {
MultiDex.install(getTargetContext());
super.onCreate(arguments);
}
如果您不使用自定义Application
课程,可以通过AndroidManifest.xml启用它:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<application
...
android:name="android.support.multidex.MultiDexApplication">
</application>
</manifest>