準備要發布的程式庫

本頁將說明準備 GCP 專案所需的屬性和選項 發布 Android 程式庫專案 使用 Android Gradle 外掛程式 (AGP)。 即使您在建立 請查看下列指引 可以管理叢集設定,像是節點 資源調度、安全性和其他預先設定項目

選擇命名空間

Android 程式庫必須宣告命名空間,才能產生不重複的命名空間 R 類別。這個命名空間應密切符合 程式庫的根類別套件,可避免使用者匯入一般 類別及其 R 類別中的類別。

從 AGP 7.0 開始,您可以將 命名空間 在應用程式的 build.gradle 檔案中,如以下程式碼範例所示:

Groovy

android {
  namespace = 'com.example.library'
}

Kotlin

android {
  namespace = "com.example.library"
}

命名空間是向開發人員顯示的程式庫屬性,不 應用程式身分的相關訊息,這個 ID 是使用 applicationId敬上 資源。

在舊版 AGP 中,兩者都有 applicationId 屬性 (用於 應用程式) 和 namespace 屬性 (適用於程式庫) 可以使用 資訊清單的 package 造成混淆。

選擇 minSdkVersion

在程式庫發布程序中,選取程式庫的 minSdkVersion 值是相當重要的環節。minSdkVersion 值應反映程式碼可支援的最低 Android 版本。

選擇 minSdkVersion 值時,請注意下列事項:

  • 一般而言,選擇較低的 minSdkVersion 值可讓 媒體庫

    通常只有在應用程式才能執行程式庫的程式碼 會明確呼叫該物件應用程式仍可在符合下列條件的 Android 版本上執行 低於程式庫依附元件所需的值 (如果不是,該程式庫) 對應用程式核心功能來說至關重要 - 呼叫前都要進行執行階段檢查 程式庫。因此,為程式庫設定夠低的 minSdkVersion 值, 這個程式庫可嵌入應用程式中,並盡可能呼叫,這樣您就能觸及更多 使用者。

  • 選擇較高的 minSdkVersion 值可能會導致應用程式無法納入 資源庫。

    資訊清單合併工具,這是 AGP 中的一個步驟,可合併資訊清單檔案 應用程式及其依附元件會強制執行 依附元件的 minSdkVersion 高於應用程式。

  • 選擇較高的 minSdkVersion 值可能會促使應用程式開發人員停用 資訊清單合併工具安全檢查,導致後續建構程序發生問題。

    使用資訊清單合併工具會導致應用程式專案無法納入 minSdkVersion 高於應用程式本身的程式庫 (應用程式開發人員) 可能會停用資訊清單合併工具的安全檢查功能,盡量避免 發生錯誤。不過,這可能導致下游實際發生不相容的問題。

  • 在特殊情況下,建議您選擇較高的 minSdkVersion 值, 程式庫的資訊清單,其中包含廣播接收器或 系統會自動觸發其程式碼

    在這種情況下,請選擇較高的 minSdkVersion 值,確保程式碼能順利執行。 或者,您也可以停用該自動行為,讓應用程式選擇不採用 完成適當的檢查後 才執行程式庫

如要允許嵌入應用程式,請使用 RequiresApi 註解 程式庫,向呼叫端發出執行階段檢查。Android 版 Lint 會使用 RequiresApi 資訊檢查程式碼。其他資源 請參閱這篇文章 含有註解進行檢查

設定 AAR 中繼資料

Android 程式庫封裝成 Android ARchive (AAR) 檔案的組成部分AAR 中繼資料內含屬性 AGP 會使用程式庫。如果程式庫遭到不相容 並完成 AAR 中繼資料設定後,使用者會看到錯誤訊息 訊息,協助他們解決問題。

選擇 minCompileSdk 值

從版本 4.1 開始,AGP 會支援 minCompileSdk,代表 compileSdk敬上 供使用者專案使用的工具如果程式庫包含資訊清單項目 包含使用較新平台屬性的資源 設定此值。

您可以在 defaultConfig{} 中設定 minCompileSdk 值。 模組層級 build.gradle 中的 productFlavors{}buildTypes{} 區塊 檔案:

Groovy

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Kotlin

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

如果您在多個位置設定 minCompileSdk 值,Gradle 會在建構程序中以下列順序優先採用這些位置的設定:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

以上述範例為例,其中兩個值都定義了 minCompileSdkdefaultConfig{}」和「productFlavors{}」已優先顯示「productFlavors{}」 且 minCompileSdk 設為 30。

進一步瞭解 Gradle 在結合程式碼和資源時優先採用設定。詳情請參閱使用原始碼建構 設定

啟用測試韌體

測試固件 通常用於設定要測試的程式碼或協助 元件。從版本 7.1 開始,AGP 可以建立程式庫的測試韌體 以及動態功能專案

發布供他人使用的程式庫時,請考慮建立測試 API 韌體。您可以在模組層級 build.gradle 檔案中啟用測試韌體:

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

啟用測試韌體後,Gradle 就會自動建立 可寫入測試韌體的 src/testFixtures 來源集。

詳情請參閱 Gradle 的使用說明 測試韌體