自定义库上的java.lang.ClassNotFoundException

时间:2018-03-02 11:27:46

标签: android shared-libraries aar

我创建了一个库,这个库使用另一个外部库(只有一个)。

这是我的库的配置:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    compile ('com.github.Paroca72:sc-gauges:3.0.1') {
        transitive=true
    }
}

使用gradle导出库,如.aar - > :library - > assembleRelease。 现在使用“import .JAR / .AAR package”将库包含在一个新项目中,并将其包含在“模块依赖”中。

在编码阶段我没有错误,但是当我尝试启动应用程序时,我有这种例外:

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sccomponents.codes.gauges.ScArcGauge" on path: DexPathList[[zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/base.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_dependencies_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_0_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_1_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_2_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_3_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_4_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_5_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_6_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_7_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_8_apk.apk", zip file "/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.test.test-oKxgn-etFOgh1n6SqKQU5Q==/lib/x86, /system/lib, /vendor/lib]]

引用包含在我自己的库中的外部库“com.sccomponents.codes.gauges.ScArcGauge”..

有什么不对?

我正在使用Android Studio(最新版本)

2 个答案:

答案 0 :(得分:0)

最有可能的是,当您通过Android Studio包含库时,最终会出现类似

的内容
compile 'yourlibrary":1.0.0@aar'

所以这意味着只有aar会被拉入而不是你的依赖。您需要将其更改为

compile ('yourlibrary":1.0.0@aar'){ transitive=true }

答案 1 :(得分:0)

请按照以下步骤操作。

  1. 右键单击您的项目,然后选择“属性”。
  2. 从左侧菜单中选择Java Build Path。
  3. 选择“订购和导出”选项卡。
  4. 从列表中确保选中您添加到项目中的库或外部jar。
  5. 最后,清理您的项目&运行。
  6. 可能是因为它没有在运行时添加库。