forked from JetBrains/kotlin-native
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Kotlin/Native samples ported to MPP Gradle DSL (JetBrains#2261)
- Loading branch information
Showing
255 changed files
with
2,137 additions
and
2,437 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
55 changes: 55 additions & 0 deletions
55
buildSrc/plugins/src/main/kotlin/org/jetbrains/kotlin/CopySamples.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package org.jetbrains.kotlin | ||
|
||
import groovy.lang.Closure | ||
import org.gradle.api.Task | ||
import org.gradle.api.tasks.Copy | ||
|
||
/** | ||
* A task that copies samples and replaces direct repository URLs with ones provided by the cache-redirector service. | ||
*/ | ||
open class CopySamples: Copy() { | ||
|
||
var samplesDir = project.file("samples") | ||
|
||
init { | ||
configureReplacements() | ||
} | ||
|
||
fun samplesDir(path: Any) { | ||
samplesDir = project.file(path) | ||
} | ||
|
||
private fun configureReplacements() { | ||
from(samplesDir) { | ||
it.exclude("**/*.gradle") | ||
} | ||
from(samplesDir) { | ||
it.include("**/*.gradle") | ||
it.filter { line -> | ||
replacements.forEach { (repo, replacement) -> | ||
if (line.contains(repo)) { | ||
return@filter line.replace(repo, replacement) | ||
} | ||
} | ||
return@filter line | ||
} | ||
} | ||
} | ||
|
||
override fun configure(closure: Closure<Any>): Task { | ||
super.configure(closure) | ||
configureReplacements() | ||
return this | ||
} | ||
|
||
companion object { | ||
val replacements = listOf( | ||
"mavenCentral()" to "maven { url 'https://cache-redirector.jetbrains.com/maven-central' }", | ||
"jcenter()" to "maven { url 'https://cache-redirector.jetbrains.com/jcenter' }", | ||
"https://dl.bintray.com/kotlin/kotlin-dev" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlin-dev", | ||
"https://dl.bintray.com/kotlin/kotlin-eap" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlin-eap", | ||
"https://dl.bintray.com/kotlin/ktor" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/ktor", | ||
"https://plugins.gradle.org/m2" to "https://cache-redirector.jetbrains.com/plugins.gradle.org/m2" | ||
) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,34 @@ | ||
# Samples | ||
|
||
This directory contains a set of samples demonstrating how one can work with Kotlin/Native. The samples can be | ||
built using either command line tools (via `build.sh` script presented in each sample directory) or using a gradle build. | ||
See `README.md` in sample directories to learn more about specific samples and the building process. | ||
built using Gradle build tool. See `README.md` in sample directories to learn more about specific samples and | ||
the building process. | ||
|
||
**Note**: If the samples are built from a source tree (not from a distribution archive) the compiler and the gradle | ||
plugin built from the sources are used. So one must build the compiler by running `./gradlew cross_dist` from the | ||
Kotlin/Native root directory before building samples (see | ||
[README.md](https://github.com/JetBrains/kotlin-native/blob/master/README.md) for details). | ||
* `androidNativeActivity` - Android Native Activity rendering 3D graphics using OpenGLES | ||
* `calculator` - iOS Swift application, using Kotlin/Native code compiled into the framework | ||
* `csvparser` - simple CSV file parser and analyzer | ||
* `echoServer` - TCP/IP echo server | ||
* `gitchurn` - program interoperating with `libgit2` for GIT repository analysis | ||
* `gtk` - GTK2 interoperability example | ||
* `html5Canvas` - WebAssembly example | ||
* `libcurl` - using of FTP/HTTP/HTTPS client library `libcurl` | ||
* `nonBlockingEchoServer` - multi-client TCP/IP echo server using co-routines | ||
* `objc` - AppKit Objective-C interoperability example for macOS | ||
* `opengl` - OpenGL/GLUT teapot example | ||
* `python_extension` - Python extension written in Kotlin/Native | ||
* `tensorflow` - simple client for TensorFlow Machine Intelligence library | ||
* `tetris` - Tetris game implementation (using SDL2 for rendering) | ||
* `uikit` - UIKit Objective-C interoperability example for iOS | ||
* `videoplayer` - SDL and FFMPEG-based video and audio player | ||
* `win32` - trivial Win32 GUI application | ||
* `workers` - example of using workers API | ||
|
||
One may also build all the samples with one command. To build them using the command line tools run: | ||
|
||
./build.sh | ||
|
||
To build all the samples using the gradle build: | ||
**Note**: If the samples are built from a source tree (not from a distribution archive) the compiler built from | ||
the sources is used. So one must build the compiler and the necessary platform libraries by running | ||
`./gradlew bundle` from the Kotlin/Native root directory before building samples (see | ||
[README.md](https://github.com/JetBrains/kotlin-native/blob/master/README.md) for details). | ||
|
||
./gradlew build | ||
|
||
One also may launch the command line build via a gradle task `buildSh` (equivalent of `./build.sh` executing): | ||
One may also build all the samples with one command. To build them using Gradle run: | ||
|
||
./gradlew buildSh | ||
./gradlew buildAllSamples |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,20 @@ | ||
# Android Native Activity | ||
This example shows how to build an Android Native Activity. Also, we provide an example | ||
|
||
This example shows how to build an Android Native Activity. Also, we provide an example | ||
bridging mechanism for the Java APIs, callable from Native side. | ||
|
||
The example will render a textured dodecahedron using OpenGL ES library. It can be rotated with fingers. | ||
Please make sure that Android SDK version 25 is installed, using Android SDK manager in Android Studio. | ||
Please make sure that Android SDK version 28 is installed, using Android SDK manager in Android Studio. | ||
See https://developer.android.com/studio/index.html for more details on Android Studio or | ||
`$ANDROID_HOME/tools/bin/sdkmanager "platforms;android-25" "build-tools;25.0.2"` from command line. | ||
`$ANDROID_HOME/tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"` from command line. | ||
We use JniBridge to call vibration service on the Java side for short tremble on startup. | ||
|
||
To build use `ANDROID_HOME=<your path to android sdk> ../gradlew build`. | ||
To build use `ANDROID_HOME=<your path to android sdk> ../gradlew assemble`. | ||
|
||
Run `$ANDROID_HOME/platform-tools/adb install -r build/outputs/apk/debug/androidNativeActivity-debug.apk` | ||
to deploy the apk on the Android device or emulator (note that only ARM-based devices are currently supported). | ||
|
||
Note: If you are importing project to IDEA for the first time, you might need to put `local.properties` file | ||
with the following content: | ||
|
||
sdk.dir=<your path to Android SDK> |
Oops, something went wrong.