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

Android Studio XML 自定義屬性 `app:` 不識別:AAR 依賴正確接入姿勢

     編輯:程式設計綜合問答

現象

布局根標簽已宣告 `xmlns:app="https://schemas.android.com/apk/res-auto"`,但輸入 `app:` 無提示,第三方庫屬性 (如 `app:layout_percent`) 無效。

根本原因

**庫未正確作為依賴接入**,導致 Gradle 未合併其 `attrs.xml` 到 `R.attr`,AS 無法解析自定義屬性。

兩種正確接入方式

方式一:AAR 文件放入 `libs` 目錄 (適用無 Maven 庫)


// settings.gradle 或 build.gradle (Project)
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOSITORIES)
    repositories {
        google()
        mavenCentral()
        flatDir { dirs 'libs' } // 關鍵:聲明本地平目錄倉庫
    }
}

// app/build.gradle
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    // 關鍵:按文件名引用 AAR (不含擴展名)
    implementation(name: 'percent-support-extends-1.0.1', ext: 'aar')
    // 或通配符 (Gradle 7.0+)
    // implementation fileTree(dir: 'libs', include: ['*.aar'])
}

方式二:作為 Module 導入 (推薦,支持源碼調試)

  1. **File → New → Import Module** → 選擇庫源碼目錄 (含 `build.gradle`)。
  2. Gradle 同步後,在 `app/build.gradle`:

dependencies {
    implementation project(':percent-support-extends') // 模塊名 = settings.gradle 中 include 的名字
}
  • `settings.gradle` 需包含:
  • 
    include ':app', ':percent-support-extends'
    

    驗證步驟

    1. Gradle Sync 成功。
    2. 布局 XML 輸入 `app:` 出現提示列表。
    3. Build → Rebuild Project 無錯誤。
    4. 運行 App,屬性生效 (如百分比佈局正確顯示)。

    常見坑點

    坑點現象解決
    未加 `flatDir`AAR 找不到Project build.gradle 加 `flatDir { dirs 'libs' }`
    AAR 文件名含版本號`implementation(name: 'lib-1.0.1', ext: 'aar')` 需精確匹配改名 `lib.aar` 或精確寫全名
    Module 導入後包名衝突編譯錯誤 duplicate class確保庫模塊 `applicationId` 不同或不設
    庫需傳遞依賴缺少 support-v4 等庫 `build.gradle` 用 `api` 而非 `implementation` 導出依賴

    原回答補充

    原最佳回答給出兩種方式代碼片段,上文補充 `flatDir` 必須性、Gradle 7+ 寫法、驗證步驟、常見坑點表,可直接落地解決。

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