Skip to content

Instantly share code, notes, and snippets.

View Alex009's full-sized avatar
🏔️

Aleksey Mikhailov Alex009

🏔️
View GitHub Profile
@Alex009
Alex009 / branches.sh
Created April 18, 2024 06:44
Checkout all git branches
git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t
@Alex009
Alex009 / build.gradle.kts
Last active October 27, 2023 11:06
valid config of moko-resources with kotlin 1.9.10, compose 1.5.3
/*
* Copyright 2023 LLC Campus.
*/
plugins {
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
kotlin("multiplatform").apply(false)
kotlin("plugin.serialization").apply(false)
id("com.android.application").apply(false)
@Alex009
Alex009 / README.md
Last active April 4, 2024 05:38
Как устроена интеграция Kotlin/Native в iOS приложение

Как Kotlin работает в iOS

Код написанный на Kotlin компилируется компилятором Kotlin/Native в бинарный файл. Конкретно для iOS этот бинарник заворачивается в .framework - это созданный Apple формат библиотек.

Данный .framework для iOS (а точнее для Xcode) выглядит как обычная нативная библиотека, также как условный Alamofire, SwiftUI и любые другие библиотеки в Apple мире. У этой библиотеки доступен Objective-C header - заголовочный файл, описывающий в синтаксисе Objective-C какие классы и методы есть в этой библиотеке.

.framework должен быть подключен к Xcode проекту.

@Alex009
Alex009 / QrScannerScreen.android.kt
Created May 10, 2023 08:09 — forked from oianmol/QrScannerScreen.android.kt
QR Code Scanner with Jetbrains Jetpack compose multiplatform!
import android.Manifest
import android.content.pm.PackageManager
import android.util.Log
import android.view.ViewGroup
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.camera.core.CameraSelector
import androidx.camera.core.ImageAnalysis
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
@Alex009
Alex009 / build.gradle.kts
Created November 22, 2021 15:39
Welcome Feature Gradle Build File
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import dev.icerock.gradle.generator.FatFrameworkWithResourcesTask
plugins {
kotlin(module = "multiplatform")
id("com.android.library")
id("dev.icerock.mobile.multiplatform-resources")
/*
* Copyright 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
fun report(b: Any?, c: Any) {
val a = b?.calculate().intersect(c) ?: return
if(a.total <= 100) return
val c = a.convert()
reportTotal(c, fullData = a)
}
package com.icerock.yellowdoor.feature.personalInfo
import dev.icerock.moko.mvvm.dispatcher.EventsDispatcher
import dev.icerock.moko.mvvm.livedata.LiveData
import dev.icerock.moko.mvvm.livedata.MutableLiveData
import dev.icerock.moko.mvvm.livedata.map
import dev.icerock.moko.mvvm.livedata.readOnly
import dev.icerock.moko.resources.ImageResource
import dev.icerock.moko.resources.desc.StringDesc
import dev.icerock.moko.resources.desc.desc
@Alex009
Alex009 / gist:d29ecf9995806cc445d35da9f1ecf969
Created December 26, 2019 06:17
GoogleMaps framework linking
Run tool: konanc with args: -g -ea -target ios_x64 -p framework
-o /Users/alekseymikhailovwork/Documents/development/icerockdev_workspace/moko/moko-maps/sample/mpp-library/build/bin/iosX64/MultiPlatformLibraryDebugFramework/MultiPlatformLibrary.framework
-l /Users/alekseymikhailovwork/.gradle/caches/modules-2/files-2.1/dev.icerock.moko/maps-google-iosx64/0.1.0/b4eb5e91e5acfae3c39c4cd3adcd5941072fa9ec/maps-google.klib
-l /Users/alekseymikhailovwork/.gradle/caches/modules-2/files-2.1/dev.icerock.moko/maps-google-iosx64/0.1.0/f5b69645514f16f2b172e581b035b12b67a0ca8d/maps-google-cinterop-googleMaps.klib
-l /Users/alekseymikhailovwork/.gradle/caches/modules-2/files-2.1/dev.icerock.moko/maps-iosx64/0.1.0/96633f2a7872ce7150952bf721149121b8ebc5c9/maps.klib
-l /Users/alekseymikhailovwork/.gradle/caches/modules-2/files-2.1/dev.icerock.moko/geo-iosx64/0.1.0/a90cf4fec108e45ce31ad6d2430117408aad4dfa/geo.klib
-l /Users/alekseymikhailovwork/.gradle/caches/modules-2/files-2.1/dev.icerock.moko/mvvm-iosx64/0.4.0/722bfc2