Skip to content

常見問題

有不在常見問題中的問題嗎?請在 StackOverflow 上查看 #coil 標籤或搜尋 Github discussions

Coil 可以與 Java 專案或混合 Kotlin/Java 專案一起使用嗎?

是的!請在此處閱讀

我如何預載入圖片?

啟動一個沒有目標的圖片請求:

kotlin
val request = ImageRequest.Builder(context)
    .data("https://example.com/image.jpg")
    .build()
imageLoader.enqueue(request)

這將預載入圖片並將其儲存到磁碟和記憶體快取中。

如果您只想預載入到磁碟快取,可以跳過解碼並儲存到記憶體快取,如下所示:

kotlin
val request = ImageRequest.Builder(context)
    .data("https://example.com/image.jpg")
    // Disables writing to the memory cache.
    .memoryCachePolicy(CachePolicy.DISABLED)
    // Skips the decode step so we don't waste time/memory decoding the image into memory.
    .decoderFactory(BlackholeDecoder.Factory())
    .build()
imageLoader.enqueue(request)

我如何啟用日誌記錄?

建構您的 ImageLoader 時,設定 logger(DebugLogger())

!!! 注意 DebugLogger 應僅用於除錯建構中。

我如何將目標設定為 Java 8 或 Java 11?

Coil 需要 Java 8 位元組碼。這在 Android Gradle Plugin 4.2.0 及更高版本和 Kotlin Gradle Plugin 1.5.0 及更高版本中預設啟用。如果您使用這些外掛程式的舊版本,請將以下內容新增到您的 Gradle 建構指令碼中:

kotlin
android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

從 Coil 3.2.0 開始,coil-composecoil-compose-core 需要 Java 11 位元組碼:

kotlin
android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
    kotlinOptions {
        jvmTarget = "11"
    }
}

我如何獲取開發快照?

將快照儲存庫新增到您的儲存庫列表中:

Gradle (.gradle):

groovy
allprojects {
    repositories {
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
    }
}

Gradle Kotlin DSL (.gradle.kts):

kotlin
allprojects {
    repositories {
        maven("https://oss.sonatype.org/content/repositories/snapshots")
    }
}

然後依賴具有 最新快照版本 的相同構件 (artifact)。

!!! 注意 每個通過 CI 的 main 分支新提交都會部署快照。它們可能包含破壞性變更或不穩定。請自行承擔風險使用。

我如何將 Proguard 與 Coil 一起使用?

要將 Proguard 與 Coil 一起使用,請將以下規則新增到您的配置中:

-keep class * extends coil3.util.DecoderServiceLoaderTarget { *; }
-keep class * extends coil3.util.FetcherServiceLoaderTarget { *; }

您可能還需要為 Ktor、OkHttp 和 Coroutines 新增自訂規則。

!!! 注意 如果您使用 R8,則無需為 Coil 新增任何自訂規則,R8 是 Android 上預設的程式碼壓縮器 (code shrinker)。這些規則會自動新增。