工程 A 在 Build Path 中添加了工程 B,編譯無錯,但運行時點擊按鈕調用 B 中類拋出:
java.lang.NoClassDefFoundError: org.videolan.vlc.audio.AudioServiceController
Eclipse 的 Build Path → Projects 僅解決編譯期依賴,打包 APK 時 不會自動將工程 B 的類打入 dex。Android 打包機制要求:被依賴的 Java 模塊必須導出為 JAR 或配置為 Library Project 並勾選 Export。
B.jar。B.jar。在 settings.gradle 引入 :moduleB,moduleA 的 dependencies { implementation project(':moduleB') }。Gradle 會自動處理打包與依賴傳遞,彻底解決此類問題。
打包 APK 後,用 unzip -l app.apk | grep AudioServiceController 或 Android Studio Analyze APK 確認該類是否存在於 classes.dex 中。