Как создать платформу ресурсов для Android и iOS с помощью Kotlin Multiplatform?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как создать платформу ресурсов для Android и iOS с помощью Kotlin Multiplatform?

Сообщение Anonymous »

Я пытаюсь использовать платформу для обмена файлами WebP для Android и файлами Heic для iOS для изображений с одинаковыми именами? Например, у меня есть файл home . Итак, у нас будет home.webp для Android и home.heic для iOS. Я знаю, что мы можем просто поместить веб-страницу в androidMain/res/drawable-{density}/home.webp для Android. И назовите это так:

Код: Выделить всё

/// Common Main
expect class PlatformImage

class ImageAsset(
val name: String
) {
@Composable
fun toImage(): PlatformImage? = getPlatformImage()

override fun toString(): String = name
}

@Composable
internal expect fun ImageAsset.getPlatformImage(): PlatformImage?

/// Android Main
/// Should manually copy the assets to `androidMain/res/drawable-{density}/` first
actual typealias PlatformImage = Painter

@Composable
internal actual fun ImageAsset.getPlatformImage(): PlatformImage? {
Resources resources = context.getResources();
final int resourceId = resources.getIdentifier(name, "drawable",
context.getPackageName());
final drawable = resources.getDrawable(resourceId);
return painterResource(drawable);
}
А как насчет iOS? Я имел в виду следующее. Это правильно?

Код: Выделить всё

/// iOS Main
/// Should manually copy the assets to `iosMain/res/xcassets/` first? Not sure.
/// is this correct?

actual typealias PlatformImage = UIImage

@Composable
internal actual fun ImageAsset.getPlatformImage(): PlatformImage? {
return UIImage.imageNamed(this.name)
}
Спасибо.
PS:
  • Платформа будет использоваться совместно с помощью Gradle для Android и SPM для iOS.
  • Причина, по которой мы разделяем ресурсы таким образом, заключается в том, что мы хотим оптимизировать сборку для уменьшения количества приложений и преимущества размеров как WebP, так и Heic.
  • В основное приложение iOS фреймворк будет встроен в него. Таким образом, каталог ресурсов платформы можно будет использовать в основном приложении.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»