簡體   English   中英

自定義庫上的java.lang.ClassNotFoundException

[英]java.lang.ClassNotFoundException on custom library

我創建了一個庫,此庫使用另一個外部庫(僅一個)。

這是我的庫的配置:

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->:library-> assembleRelease將庫導出為.aar。 現在,使用“ import .JAR / .AAR包”將庫包含在新項目中,並將其包含在“模塊依賴項”中。

在編碼階段,我沒有錯誤,但是當我嘗試啟動應用程序時,我遇到了這種異常:

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(最新版本)

最有可能的是,當您通過Android Studio包含庫時,最終會遇到類似

compile 'yourlibrary":1.0.0@aar'

因此,這意味着只有aar會被拉入而不是您的依賴項。 您需要將其更改為

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

請按照以下步驟操作。

  1. 右鍵單擊您的項目,然后選擇“屬性”。
  2. 從左側菜單中選擇Java Build Path。
  3. 選擇訂單和導出標簽。
  4. 從列表中,確保選中了添加到項目中的庫或外部jar。
  5. 最后,清理您的項目並運行。

可能是因為它沒有在運行時添加庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM