我有一个应用程序,其 minSdkVersion API 16,当我添加新的 jar 文件激活、附加、邮件、itextpdf 用于发送 pdf 文件时,会抛出电子邮件。对于先前添加的模块库,其抛出异常如下:
原因:java.lang.ClassNotFoundException:在路径上找不到类“com.viewpagerindicator.TabPageIndicator”:DexPathList[[zip文件“/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'
请任何人帮助我解决此错误...
最佳答案
问题在于,当您的目标设备版本早于 5.0 Lollipop 时,multiDexEnabled true
还不够。如果您想支持 KitKat 及更早版本,那么除了此标志之外,您还必须部署辅助 dexes 来创建您的主 Application
类,如所述 in the official docs .
有多种方法可以做到这一点:
您可以使您的
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>
关于java - 将新的 jar 文件添加到 lib 文件夹时,在 studio 中未找到先前模块 lib 的类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37922366/