Merge pull request #16099 from jtattermusch/xamarin_improvements

Xamarin support improvements
pull/16107/head
Jan Tattermusch 7 years ago committed by GitHub
commit e08b9b79b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      src/csharp/Grpc.Core/Internal/PlatformApis.cs
  2. 3
      src/csharp/experimental/build_native_ext_for_android.sh

@ -33,8 +33,9 @@ namespace Grpc.Core.Internal
internal static class PlatformApis internal static class PlatformApis
{ {
const string UnityEngineApplicationClassName = "UnityEngine.Application, UnityEngine"; const string UnityEngineApplicationClassName = "UnityEngine.Application, UnityEngine";
const string XamarinAndroidActivityClassName = "Android.App.Activity, Mono.Android"; const string XamarinAndroidObjectClassName = "Java.Lang.Object, Mono.Android";
const string XamariniOSEnumClassName = "Mono.CSharp.Enum, Mono.CSharp"; const string XamarinIOSObjectClassName = "Foundation.NSObject, Xamarin.iOS";
static readonly bool isLinux; static readonly bool isLinux;
static readonly bool isMacOSX; static readonly bool isMacOSX;
static readonly bool isWindows; static readonly bool isWindows;
@ -42,7 +43,7 @@ namespace Grpc.Core.Internal
static readonly bool isNetCore; static readonly bool isNetCore;
static readonly bool isUnity; static readonly bool isUnity;
static readonly bool isXamarin; static readonly bool isXamarin;
static readonly bool isXamariniOS; static readonly bool isXamarinIOS;
static readonly bool isXamarinAndroid; static readonly bool isXamarinAndroid;
static PlatformApis() static PlatformApis()
@ -63,9 +64,9 @@ namespace Grpc.Core.Internal
#endif #endif
isMono = Type.GetType("Mono.Runtime") != null; isMono = Type.GetType("Mono.Runtime") != null;
isUnity = Type.GetType(UnityEngineApplicationClassName) != null; isUnity = Type.GetType(UnityEngineApplicationClassName) != null;
isXamariniOS = Type.GetType(XamariniOSEnumClassName) != null; isXamarinIOS = Type.GetType(XamarinIOSObjectClassName) != null;
isXamarinAndroid = Type.GetType(XamarinAndroidActivityClassName) != null; isXamarinAndroid = Type.GetType(XamarinAndroidObjectClassName) != null;
isXamarin = isXamariniOS || isXamarinAndroid; isXamarin = isXamarinIOS || isXamarinAndroid;
} }
public static bool IsLinux public static bool IsLinux
@ -108,9 +109,9 @@ namespace Grpc.Core.Internal
/// <summary> /// <summary>
/// true if running on Xamarin.iOS, false otherwise. /// true if running on Xamarin.iOS, false otherwise.
/// </summary> /// </summary>
public static bool IsXamariniOS public static bool IsXamarinIOS
{ {
get { return isXamariniOS; } get { return isXamarinIOS; }
} }
/// <summary> /// <summary>

@ -36,6 +36,7 @@ cd build
# ANDROID_ABI in ('arm64-v8a', 'armeabi-v7a') # ANDROID_ABI in ('arm64-v8a', 'armeabi-v7a')
# e.g. ANDROID_ABI=armeabi-v7a # e.g. ANDROID_ABI=armeabi-v7a
# android-19 corresponds to Kitkat 4.4
${ANDROID_SDK_CMAKE} ../.. \ ${ANDROID_SDK_CMAKE} ../.. \
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake" \ -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake" \
-DCMAKE_ANDROID_NDK="${ANDROID_NDK_PATH}" \ -DCMAKE_ANDROID_NDK="${ANDROID_NDK_PATH}" \
@ -44,7 +45,7 @@ ${ANDROID_SDK_CMAKE} ../.. \
-DRUN_HAVE_STD_REGEX=0 \ -DRUN_HAVE_STD_REGEX=0 \
-DRUN_HAVE_STEADY_CLOCK=0 \ -DRUN_HAVE_STEADY_CLOCK=0 \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DANDROID_PLATFORM=android-28 \ -DANDROID_PLATFORM=android-19 \
-DANDROID_ABI="${ANDROID_ABI}" \ -DANDROID_ABI="${ANDROID_ABI}" \
-DANDROID_NDK="${ANDROID_NDK_PATH}" -DANDROID_NDK="${ANDROID_NDK_PATH}"

Loading…
Cancel
Save