首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ClassNotFoundException: android.view.fragment1 依賴包缺失

     編輯:程式設計綜合問答

錯誤信息

Caused by: java.lang.ClassNotFoundException: 
Didn't find class "android.view.fragment1" on path: DexPathList[[zip file "/data/app/com.jxust.jxthelp-2.apk"],nativeLibraryDirectories=[...]]

原因分析

類 `android.view.fragment1` 未在 APK 或依賴庫中找到。 可能原因:

  1. 類名拼寫錯誤:Android 官方無 `android.view.fragment1` 類。標準 Fragment 為 `android.app.Fragment`(API 11+)或 `androidx.fragment.app.Fragment`(AndroidX)。
  2. 缺少 Fragment 依賴:使用 AndroidX 時未添加 androidx.fragment:fragment 依賴。
  3. ProGuard/R8 混淆誤刪:釋放版構建時未保留 Fragment 相關類。
  4. 多 Dex 問題:方法數超限且未啟用 MultiDex,導致部分類未打包。

排查步驟

  1. 確認類名:檢查代碼/布局 XML 中是否寫錯為 `fragment1`,應為 `Fragment`。
  2. 檢查依賴(build.gradle):
    dependencies {
        implementation "androidx.fragment:fragment:1.6.2" // 或較新版本
        // 如果用舊 support library
        // implementation "com.android.support:support-fragment:28.0.0"
    }
    
  3. 清理重建:Build → Clean Project → Rebuild Project。
  4. 檢查混淆規則(proguard-rules.pro):
    -keep class androidx.fragment.app.Fragment { *; }
    -keep class android.app.Fragment { *; }
    
  5. 啟用 MultiDex(若方法數 > 64K):
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    dependencies {
        implementation "androidx.multidex:multidex:2.0.1"
    }
    

常見誤區

  • 以為 `android.view.fragment1` 是系統類 → **不存在**,極大概率是拼寫錯誤或自定義類包名寫錯。
  • 只更新一個 Module 的依賴 → 確保所有用到 Fragment 的 Module 都引入依賴。

總結

ClassNotFoundException: android.view.fragment1 本質是**類未打包進 APK**。優先檢查**類名拼寫**(應為 `Fragment`)及 **Fragment 依賴是否正確添加**,其次排查混淆、MultiDex 配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved