diff --git a/Android/ReactiveX/External-Dependency-Info.txt b/Android/ReactiveX/External-Dependency-Info.txt index 599c87804e..a59b449301 100644 --- a/Android/ReactiveX/External-Dependency-Info.txt +++ b/Android/ReactiveX/External-Dependency-Info.txt @@ -1,7 +1,7 @@ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION Do not translate or localize -Xamarin Components for ReactiveX RxJava and RxAndroid incorporates +Xamarin Components for ReactiveX RxJava, RxKotlin, and RxAndroid incorporates third party material from the projects listed below. The original copyright notice and the license under which Microsoft received such third party material are set forth below. Microsoft reserves all other rights not diff --git a/Android/ReactiveX/License.md b/Android/ReactiveX/License.md index af352d337d..ba6b1ba72c 100644 --- a/Android/ReactiveX/License.md +++ b/Android/ReactiveX/License.md @@ -1,8 +1,8 @@ **Xamarin is not responsible for, nor does it grant any licenses to, third-party packages. Some packages may require or install dependencies which are governed by additional licenses.** -Note: This component depends on ReactiveX [RxJava](https://github.com/ReactiveX/RxJava) which is subject to the [Apache 2.0](https://github.com/ReactiveX/RxJava/blob/2.x/LICENSE) and ReactiveX [RxAndroid](https://github.com/ReactiveX/RxAndroid) which are subject to the [Apache 2.0](https://github.com/ReactiveX/RxAndroid/blob/2.x/LICENSE) +Note: This component depends on ReactiveX [RxJava](https://github.com/ReactiveX/RxJava) which is subject to the [Apache 2.0](https://github.com/ReactiveX/RxJava/blob/2.x/LICENSE), RxKotlin [RxKotlin](https://github.com/ReactiveX/RxKotlin) which is subject to the [Apache 2.0](https://github.com/ReactiveX/RxKotlin/blob/2.x/LICENSE), and ReactiveX [RxAndroid](https://github.com/ReactiveX/RxAndroid) which are subject to the [Apache 2.0](https://github.com/ReactiveX/RxAndroid/blob/2.x/LICENSE) -### Xamarin Component for ReactiveX RxJava and RxAndroid for Xamarin.Android +### Xamarin Component for ReactiveX RxJava, RxKotlin, and RxAndroid for Xamarin.Android **The MIT License (MIT)** @@ -14,5 +14,4 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -20210329 - +20210329 \ No newline at end of file diff --git a/Android/ReactiveX/build.cake b/Android/ReactiveX/build.cake index de0c02cf80..a50d0870cf 100644 --- a/Android/ReactiveX/build.cake +++ b/Android/ReactiveX/build.cake @@ -1,22 +1,22 @@ -#addin nuget:?package=SharpZipLib +#addin nuget:?package=SharpZipLib&version=1.2.0 -var TARGET = Argument ("t", Argument ("target", "Default")); +var TARGET = Argument ("t", Argument ("target", "ci")); -var RXJAVA2_RXJAVA_VERSION = "2.2.10"; +var RXJAVA2_RXJAVA_VERSION = "2.2.21"; var RXJAVA2_RXANDROID_VERSION = "2.1.1"; var RXJAVA2_RXKOTLIN_VERSION = "2.4.0"; -var RXJAVA3_RXJAVA_VERSION = "3.0.1"; +var RXJAVA3_RXJAVA_VERSION = "3.0.13"; var RXJAVA3_RXANDROID_VERSION = "3.0.0"; var RXJAVA3_RXKOTLIN_VERSION = "3.0.1"; -var RXJAVA2_RXJAVA_NUGET_VERSION = $"{RXJAVA2_RXJAVA_VERSION}.1"; -var RXJAVA2_RXANDROID_NUGET_VERSION = $"{RXJAVA2_RXANDROID_VERSION}.1"; -var RXJAVA2_RXKOTLIN_NUGET_VERSION = $"{RXJAVA2_RXKOTLIN_VERSION}.1"; +var RXJAVA2_RXJAVA_NUGET_VERSION = $"{RXJAVA2_RXJAVA_VERSION}"; +var RXJAVA2_RXANDROID_NUGET_VERSION = $"{RXJAVA2_RXANDROID_VERSION}.2"; +var RXJAVA2_RXKOTLIN_NUGET_VERSION = $"{RXJAVA2_RXKOTLIN_VERSION}.2"; -var RXJAVA3_RXJAVA_NUGET_VERSION = $"{RXJAVA3_RXJAVA_VERSION}.1"; -var RXJAVA3_RXANDROID_NUGET_VERSION = $"{RXJAVA3_RXANDROID_VERSION}.1"; -var RXJAVA3_RXKOTLIN_NUGET_VERSION = $"{RXJAVA3_RXKOTLIN_VERSION}.1"; +var RXJAVA3_RXJAVA_NUGET_VERSION = $"{RXJAVA3_RXJAVA_VERSION}"; +var RXJAVA3_RXANDROID_NUGET_VERSION = $"{RXJAVA3_RXANDROID_VERSION}.2"; +var RXJAVA3_RXKOTLIN_NUGET_VERSION = $"{RXJAVA3_RXKOTLIN_VERSION}.2"; var RXJAVA2_RXJAVA_JAR_URL = $"https://search.maven.org/remotecontent?filepath=io/reactivex/rxjava2/rxjava/{RXJAVA2_RXJAVA_VERSION}/rxjava-{RXJAVA2_RXJAVA_VERSION}.jar"; @@ -79,17 +79,35 @@ Task ("externals") // Update .csproj nuget versions XmlPoke("./source/rxjava2/RxJava/RxJava.csproj", "/Project/PropertyGroup/PackageVersion", RXJAVA2_RXJAVA_NUGET_VERSION); + XmlPoke("./source/rxjava2/RxJava/RxJava.csproj", "/Project/ItemGroup/EmbeddedJar/@Include", $"../../../externals/rxjava2/rxjava-{RXJAVA2_RXJAVA_VERSION}.jar"); XmlPoke("./source/rxjava2/RxAndroid/RxAndroid.csproj", "/Project/PropertyGroup/PackageVersion", RXJAVA2_RXANDROID_NUGET_VERSION); + XmlPoke("./source/rxjava2/RxAndroid/RxAndroid.csproj", "/Project/ItemGroup/LibraryProjectZip/@Include", $"../../../externals/rxjava2/rxandroid-{RXJAVA2_RXANDROID_VERSION}.aar"); XmlPoke("./source/rxjava2/RxKotlin/RxKotlin.csproj", "/Project/PropertyGroup/PackageVersion", RXJAVA2_RXKOTLIN_NUGET_VERSION); + XmlPoke("./source/rxjava2/RxKotlin/RxKotlin.csproj", "/Project/ItemGroup/EmbeddedJar/@Include", $"../../../externals/rxjava2/rxkotlin-{RXJAVA2_RXKOTLIN_VERSION}.jar"); XmlPoke("./source/rxjava3/RxJava/RxJava.csproj", "/Project/PropertyGroup/PackageVersion", RXJAVA3_RXJAVA_NUGET_VERSION); + XmlPoke("./source/rxjava3/RxJava/RxJava.csproj", "/Project/ItemGroup/EmbeddedJar/@Include", $"../../../externals/rxjava3/rxjava-{RXJAVA3_RXJAVA_VERSION}.jar"); XmlPoke("./source/rxjava3/RxAndroid/RxAndroid.csproj", "/Project/PropertyGroup/PackageVersion", RXJAVA3_RXANDROID_NUGET_VERSION); + XmlPoke("./source/rxjava3/RxAndroid/RxAndroid.csproj", "/Project/ItemGroup/LibraryProjectZip/@Include", $"../../../externals/rxjava3/rxandroid-{RXJAVA3_RXANDROID_VERSION}.aar"); XmlPoke("./source/rxjava3/RxKotlin/RxKotlin.csproj", "/Project/PropertyGroup/PackageVersion", RXJAVA3_RXKOTLIN_NUGET_VERSION); + XmlPoke("./source/rxjava3/RxKotlin/RxKotlin.csproj", "/Project/ItemGroup/EmbeddedJar/@Include", $"../../../externals/rxjava3/rxkotlin-{RXJAVA3_RXKOTLIN_VERSION}.jar"); }); +Task("native") + .Does(() => +{ + var fn = IsRunningOnWindows() ? "gradlew.bat" : "gradlew"; + var gradlew = MakeAbsolute((FilePath)("./native/ReactiveXSample/" + fn)); + var exit = StartProcess(gradlew, new ProcessSettings { + Arguments = "assemble", + WorkingDirectory = "./native/ReactiveXSample/" + }); + if (exit != 0) throw new Exception($"Gradle exited with exit code {exit}."); +}); Task("libs") .IsDependentOn("externals") + .IsDependentOn("native") .Does(() => { MSBuild("./ReactiveX.sln", c => { @@ -114,7 +132,18 @@ Task("nuget") }); Task("samples") - .IsDependentOn("nuget"); + .IsDependentOn("nuget") + .Does(() => +{ + var settings = new MSBuildSettings() + .SetConfiguration("Release") + .SetVerbosity(Verbosity.Minimal) + .EnableBinaryLogger("./output/samples.binlog") + .WithRestore() + .WithProperty("DesignTimeBuild", "false"); + + MSBuild("./samples/ReactiveXSample.sln", settings); +}); Task ("clean") .Does (() => @@ -125,6 +154,12 @@ Task ("clean") Force = true } ); + + CleanDirectories("./generated/*/bin"); + CleanDirectories("./generated/*/obj"); + CleanDirectories("./generated/"); + CleanDirectories("./native/.gradle"); + CleanDirectories("./native/**/build"); }); Task("Default") diff --git a/Android/ReactiveX/cgmanifest.json b/Android/ReactiveX/cgmanifest.json index 5d9beecf01..5287cd7270 100644 --- a/Android/ReactiveX/cgmanifest.json +++ b/Android/ReactiveX/cgmanifest.json @@ -6,7 +6,7 @@ "Maven": { "ArtifactId": "rxjava", "GroupId": "io.reactivex.rxjava2", - "Version": "2.2.10" + "Version": "2.2.21" } } }, @@ -30,14 +30,13 @@ } } }, - { "Component": { "Type": "Maven", "Maven": { "ArtifactId": "rxjava", "GroupId": "io.reactivex.rxjava3", - "Version": "3.0.1" + "Version": "3.0.13" } } }, diff --git a/Android/ReactiveX/native/ReactiveXSample/.gitignore b/Android/ReactiveX/native/ReactiveXSample/.gitignore new file mode 100644 index 0000000000..09b993d06b --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +/local.properties +/.idea +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/Android/ReactiveX/native/ReactiveXSample/build.gradle b/Android/ReactiveX/native/ReactiveXSample/build.gradle new file mode 100644 index 0000000000..ba702f3494 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/build.gradle @@ -0,0 +1,27 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:4.0.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/Android/ReactiveX/native/ReactiveXSample/gradle.properties b/Android/ReactiveX/native/ReactiveXSample/gradle.properties new file mode 100644 index 0000000000..ccb4a4a637 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + + +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official diff --git a/Android/ReactiveX/native/ReactiveXSample/gradle/wrapper/gradle-wrapper.jar b/Android/ReactiveX/native/ReactiveXSample/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000..13372aef5e Binary files /dev/null and b/Android/ReactiveX/native/ReactiveXSample/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Android/ReactiveX/native/ReactiveXSample/gradle/wrapper/gradle-wrapper.properties b/Android/ReactiveX/native/ReactiveXSample/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..4e1cc9db6b --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/Android/ReactiveX/native/ReactiveXSample/gradlew b/Android/ReactiveX/native/ReactiveXSample/gradlew new file mode 100755 index 0000000000..9d82f78915 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/Android/ReactiveX/native/ReactiveXSample/gradlew.bat b/Android/ReactiveX/native/ReactiveXSample/gradlew.bat new file mode 100644 index 0000000000..8a0b282aa6 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/.gitignore b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/build.gradle b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/build.gradle new file mode 100644 index 0000000000..65204e1887 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/build.gradle @@ -0,0 +1,36 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 28 + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'io.reactivex.rxjava2:rxjava:2.2.12' + implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' + implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/getFoodsObserver.kt b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/getFoodsObserver.kt new file mode 100644 index 0000000000..f37f84f3cd --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/getFoodsObserver.kt @@ -0,0 +1,19 @@ +private fun getFoodsObserver(): Observer { + return object : Observer { + override fun onSubscribe(d: Disposable) { + Log.i("onSubscribe", d.toString()) + } + + override fun onNext(t: String) { + Log.i("onNext", t) + } + + override fun onError(e: Throwable) { + Log.i("onError", e.toString()) + } + + override fun onComplete() { + Log.i("onComplete", "DONE!!") + } + } +} \ No newline at end of file diff --git a/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/proguard-rules.pro b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/proguard-rules.pro new file mode 100644 index 0000000000..516dbf1d36 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/matthew/Library/Developer/Xamarin/android-sdk-macosx/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/src/main/AndroidManifest.xml b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..f3449c5318 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/src/main/java/com/example/reactivexsamplelibrary/TestClass.kt b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/src/main/java/com/example/reactivexsamplelibrary/TestClass.kt new file mode 100644 index 0000000000..41cd0f6446 --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/reactivexsamplelibrary/src/main/java/com/example/reactivexsamplelibrary/TestClass.kt @@ -0,0 +1,69 @@ +package com.example.reactivexsamplelibrary + +import android.content.Context +import android.widget.TextView +import io.reactivex.Observable +import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.rxkotlin.subscribeBy +import io.reactivex.rxkotlin.toObservable +import io.reactivex.schedulers.Schedulers + +class TestClass { + private fun getFoodsObservable(): Observable { + return Observable.just("Apple", "Bacon", "Cacao", "Dumpling", "Fish", "Milk") + } + + private fun getFoodsObserver(tv: TextView): Observer { + return object : Observer { + override fun onSubscribe(d: Disposable) { + tv.append("onSubscribe=$d\n") + } + + override fun onNext(t: String) { + tv.append("onNext=$t\n") + } + + override fun onError(e: Throwable) { + tv.append("onError=${e.message}\n") + } + + override fun onComplete() { + tv.append("onComplete\n\n") + } + } + } + + private fun getAnyObservable(): Observable { + return listOf(true, 1, 2, "Three", 4.0f, 4.5, "Five", false).toObservable() + } + + fun testRxKotlin(tv: TextView) { + val anyObservable = getAnyObservable() + val disposable = anyObservable + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeBy( + onNext = { + tv.append("testRxKotlin-onNext=$it\n") + }, + onError = { + tv.append("testRxKotlin-onError=${it.message}\n") + }, + onComplete = { + tv.append("testRxKotlin-onComplete\n\n") + } + ) + } + + fun testReactiveX(tv: TextView) { + val foodsObservable = getFoodsObservable() + val foodsObserver = getFoodsObserver(tv) + + foodsObservable + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(foodsObserver) + } +} diff --git a/Android/ReactiveX/native/ReactiveXSample/settings.gradle b/Android/ReactiveX/native/ReactiveXSample/settings.gradle new file mode 100644 index 0000000000..b045b6c74e --- /dev/null +++ b/Android/ReactiveX/native/ReactiveXSample/settings.gradle @@ -0,0 +1 @@ +include ':reactivexsamplelibrary' diff --git a/Android/ReactiveX/samples/Directory.Build.props b/Android/ReactiveX/samples/Directory.Build.props new file mode 100644 index 0000000000..5ccff51572 --- /dev/null +++ b/Android/ReactiveX/samples/Directory.Build.props @@ -0,0 +1,7 @@ + + + + true + $(MSBuildThisFileDirectory)..\externals\packages + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample.sln b/Android/ReactiveX/samples/ReactiveXSample.sln new file mode 100644 index 0000000000..3423f28392 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample.sln @@ -0,0 +1,30 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30413.136 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactiveXSample", "ReactiveXSample\ReactiveXSample.csproj", "{BE1BC037-19D1-4A1F-BD58-4A8A99B424BF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactiveXSampleLibrary", "ReactiveXSampleLibrary\ReactiveXSampleLibrary.csproj", "{7284601F-A95A-4707-9FF2-4618AB0A9AA9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BE1BC037-19D1-4A1F-BD58-4A8A99B424BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE1BC037-19D1-4A1F-BD58-4A8A99B424BF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE1BC037-19D1-4A1F-BD58-4A8A99B424BF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE1BC037-19D1-4A1F-BD58-4A8A99B424BF}.Release|Any CPU.Build.0 = Release|Any CPU + {7284601F-A95A-4707-9FF2-4618AB0A9AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7284601F-A95A-4707-9FF2-4618AB0A9AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7284601F-A95A-4707-9FF2-4618AB0A9AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7284601F-A95A-4707-9FF2-4618AB0A9AA9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2B13BDB7-3FBB-442D-8AD9-97214214D0DA} + EndGlobalSection +EndGlobal diff --git a/Android/ReactiveX/samples/ReactiveXSample/Assets/AboutAssets.txt b/Android/ReactiveX/samples/ReactiveXSample/Assets/AboutAssets.txt new file mode 100644 index 0000000000..dcb04096ff --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Assets/AboutAssets.txt @@ -0,0 +1,19 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with your package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/MainActivity.cs b/Android/ReactiveX/samples/ReactiveXSample/MainActivity.cs new file mode 100644 index 0000000000..03958d2fc0 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/MainActivity.cs @@ -0,0 +1,50 @@ +using Android.App; +using Android.OS; +using Android.Support.V7.App; +using Android.Views; +using Android.Widget; + +namespace ReactiveXSample +{ + [Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)] + public class MainActivity : AppCompatActivity + { + private TextView _tv; + + protected override void OnCreate(Bundle savedInstanceState) + { + base.OnCreate(savedInstanceState); + SetContentView(Resource.Layout.activity_main); + + Android.Support.V7.Widget.Toolbar toolbar = FindViewById(Resource.Id.toolbar); + SetSupportActionBar(toolbar); + _tv = FindViewById(Resource.Id.app_textview); + } + + public override bool OnCreateOptionsMenu(IMenu menu) + { + MenuInflater.Inflate(Resource.Menu.menu_main, menu); + return true; + } + + public override bool OnOptionsItemSelected(IMenuItem item) + { + int id = item.ItemId; + if (id == Resource.Id.action_reactivex) + { + var r = new ReactiveXSampleLibrary.TestClass(); + r.TestReactiveX(_tv); + + return true; + } + else if (id == Resource.Id.action_rxkotlin) + { + var r = new ReactiveXSampleLibrary.TestClass(); + r.TestRxKotlin(_tv); + + return true; + } + return base.OnOptionsItemSelected(item); + } + } +} diff --git a/Android/ReactiveX/samples/ReactiveXSample/Properties/AndroidManifest.xml b/Android/ReactiveX/samples/ReactiveXSample/Properties/AndroidManifest.xml new file mode 100644 index 0000000000..2ecd569e7b --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Properties/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Properties/AssemblyInfo.cs b/Android/ReactiveX/samples/ReactiveXSample/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..52fdfa375b --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Android.App; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RxKotlinSample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RxKotlinSample")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Android/ReactiveX/samples/ReactiveXSample/ReactiveXSample.csproj b/Android/ReactiveX/samples/ReactiveXSample/ReactiveXSample.csproj new file mode 100644 index 0000000000..a10cf8daac --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/ReactiveXSample.csproj @@ -0,0 +1,137 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {BE1BC037-19D1-4A1F-BD58-4A8A99B424BF} + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {84dd83c5-0fe3-4294-9419-09e7c8ba324f} + Library + Properties + ReactiveXSample + ReactiveXSample + 512 + True + True + Resources\Resource.designer.cs + Resource + Off + v9.0 + Properties\AndroidManifest.xml + Resources + Assets + true + true + + + True + portable + False + bin\Debug\ + DEBUG;TRACE + prompt + 4 + True + None + False + + + True + portable + True + bin\Release\ + TRACE + prompt + 4 + true + False + SdkOnly + True +false + + + + + + + + + + + + + + + + + + + + + + Designer + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2.1.1.1 + + + 2.4.0 + + + 2.2.12 + + + 1.3.50.1 + + + + + {7284601F-A95A-4707-9FF2-4618AB0A9AA9} + ReactiveXSampleLibrary + + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/AboutResources.txt b/Android/ReactiveX/samples/ReactiveXSample/Resources/AboutResources.txt new file mode 100644 index 0000000000..096447a90d --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/AboutResources.txt @@ -0,0 +1,44 @@ +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (main.xml), +an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + drawable/ + icon.png + + layout/ + main.xml + + values/ + strings.xml + +In order to get the build system to recognize Android resources, set the build action to +"AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called "R" +(this is an Android convention) that contains the tokens for each one of the resources +included. For example, for the above Resources layout, this is what the R class would expose: + +public class R { + public class drawable { + public const int icon = 0x123; + } + + public class layout { + public const int main = 0x456; + } + + public class strings { + public const int first_string = 0xabc; + public const int second_string = 0xbcd; + } +} + +You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main +to reference the layout/main.xml file, or R.strings.first_string to reference the first +string in the dictionary file values/strings.xml. \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/layout/activity_main.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/layout/activity_main.xml new file mode 100644 index 0000000000..24a98399f8 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/layout/activity_main.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/layout/content_main.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/layout/content_main.xml new file mode 100644 index 0000000000..2b4c246e79 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/layout/content_main.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/menu/menu_main.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/menu/menu_main.xml new file mode 100644 index 0000000000..96cedaa428 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/menu/menu_main.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-anydpi-v26/ic_launcher.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000000..c9ad5f98f1 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000000..c9ad5f98f1 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000..2531cb31ef Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher_foreground.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000..7a859c2555 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher_round.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000..b8d35b3a1c Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-hdpi/ic_launcher_round.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000..795ea7c005 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher_foreground.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000..a12b157f00 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher_round.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000..8f56909cdd Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-mdpi/ic_launcher_round.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000..761cc91d90 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher_foreground.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000..e7d70a5e2d Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher_round.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000..9737d79c04 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000..9133e31b43 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher_foreground.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000..73ccaa6a2b Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher_round.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000..c3ae5f5ccd Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000..d4fd714eed Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000..f6584afd4d Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher_round.png b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000..ef89bd5215 Binary files /dev/null and b/Android/ReactiveX/samples/ReactiveXSample/Resources/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/values/colors.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/colors.xml new file mode 100644 index 0000000000..bf1bf200f0 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #2c3e50 + #1B3147 + #3498db + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/values/dimens.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/dimens.xml new file mode 100644 index 0000000000..f978eb2917 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/dimens.xml @@ -0,0 +1,4 @@ + + + 16dp + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/values/ic_launcher_background.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/ic_launcher_background.xml new file mode 100644 index 0000000000..6ec24e6413 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #2C3E50 + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/values/strings.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/strings.xml new file mode 100644 index 0000000000..2ed2597f32 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/strings.xml @@ -0,0 +1,7 @@ + + + ReactiveXSample + Select action from Menu\n-----------------------------------\n\n + ReactiveX + RxKotlin + \ No newline at end of file diff --git a/Android/ReactiveX/samples/ReactiveXSample/Resources/values/styles.xml b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/styles.xml new file mode 100644 index 0000000000..b749b60814 --- /dev/null +++ b/Android/ReactiveX/samples/ReactiveXSample/Resources/values/styles.xml @@ -0,0 +1,16 @@ + + + + + +