Skip to content

Instantly share code, notes, and snippets.

@wongk
wongk / build.gradle
Last active November 1, 2019 15:20
Blog - cross platform strategy - cinterop example
configure([iosX64, iosArm32, iosArm64]) {
compilations.main {
cinterops {
phonenumbers {
includeDirs('c_interop/libPhoneNumber_iOS.framework/Headers')
}
}
}
binaries.framework {
linkerOpts "-Fc_interop"
@wongk
wongk / phonenumbers.def
Last active November 1, 2019 15:21
Blog - cross platform strategy - DEF example
language = Objective-C
package = com.airwatch.phonenumbers
headers = libPhoneNumber_iOS.h
headerFilter = AW*
linkerOpts = -framework libPhoneNumber_iOS
@wongk
wongk / build.gradle
Created November 1, 2019 19:01
Blog - android target - buildscript block
buildscript {
repositories {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}
@wongk
wongk / build.gradle
Created November 1, 2019 19:03
Blog - android target - plugins block
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.3.50'
}
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
@wongk
wongk / build.gradle
Created November 1, 2019 19:05
Blog - android target - repositories block
repositories {
jcenter()
google()
}
@wongk
wongk / build.gradle
Created November 1, 2019 19:07
Blog - android target - android block
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName '0.1'
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
sourceSets {
@wongk
wongk / build.gradle
Created November 19, 2019 15:57
Blog - iOS Fat Framework - fat framework task
task fatFramework(type: FatFrameworkTask) {
// The fat framework must have the same base name as the initial frameworks.
baseName = "$ios_framework_name"
// Specify the frameworks to be merged.
from(
kotlin.targets.ios.binaries.getFramework("RELEASE"),
kotlin.targets.iosArm32.binaries.getFramework("RELEASE"),
kotlin.targets.iosArm64.binaries.getFramework("RELEASE")
)
}
@wongk
wongk / settings.gradle.kts
Created November 19, 2019 16:02
Blog - Umbrella Project - settings.gradle.kts
pluginManagement {
val kotlinVersion = "1.3.50"
resolutionStrategy {
eachPlugin {
if (requested.id.namespace?.startsWith("org.jetbrains.kotlin") == true) {
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
}
}
@wongk
wongk / build.gradle.kts
Created November 19, 2019 16:07
Blog - Umbrella Project - build.gradle.kts
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.tasks.FatFrameworkTask
buildscript {
project.extra["iosFrameworkName"] = "iOSAppUmbrella"
repositories {
google()
@wongk
wongk / settings.gradle
Created December 3, 2019 19:30
Local flag to control building a module
Properties moduleProperties = new Properties()
File modulePropertiesFile = file(rootDir.absolutePath + '/modules.properties')
def buildMyModule = false
if (modulePropertiesFile.exists()) {
moduleProperties.load(sdkPropertiesFile.newDataInputStream())
buildMyModule = moduleProperties.getProperty('build.myModule', 'false').toBoolean()
}