From d058ddd717aa32f0482423443e72a5933c276df1 Mon Sep 17 00:00:00 2001 From: homuler Date: Mon, 5 Oct 2020 18:36:51 +0900 Subject: [PATCH] feat: build for Android --- .gitignore | 6 +- .../Examples/Scripts/SceneDirector.cs | 7 +- Assets/Mediapipe/SDK/Plugins/Android.meta | 8 ++ .../SDK/Plugins/Android/AndroidManifest.xml | 18 +++ .../Plugins/Android/AndroidManifest.xml.meta | 7 + .../Android/mediapipe_android.aar.meta | 32 +++++ .../SDK/Plugins/libmediapipe_c.so.meta | 27 ++++ .../SDK/Scripts/UnsafeNativeMethods.cs | 6 +- ProjectSettings/EditorBuildSettings.asset | 7 +- ProjectSettings/ProjectSettings.asset | 127 +++++++++++++++--- README.md | 8 +- 11 files changed, 226 insertions(+), 27 deletions(-) create mode 100644 Assets/Mediapipe/SDK/Plugins/Android.meta create mode 100644 Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml create mode 100644 Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml.meta create mode 100644 Assets/Mediapipe/SDK/Plugins/Android/mediapipe_android.aar.meta create mode 100644 Assets/Mediapipe/SDK/Plugins/libmediapipe_c.so.meta diff --git a/.gitignore b/.gitignore index 83be7a74c..e722f1749 100644 --- a/.gitignore +++ b/.gitignore @@ -8,10 +8,14 @@ obj/ *.csproj *.sln +*.dll +*.so +*.aar + bazel-* Assets/Mediapipe/SDK/Models/* !Assets/Mediapipe/SDK/Models/.gitkeep -Assets/Mediapipe/SDK/Plugins/* +Assets/Mediapipe/SDK/Plugins/Protobuf* Assets/Mediapipe/SDK/Scripts/Protobuf/**/*.cs diff --git a/Assets/Mediapipe/Examples/Scripts/SceneDirector.cs b/Assets/Mediapipe/Examples/Scripts/SceneDirector.cs index 8707d93ba..718cba5e0 100644 --- a/Assets/Mediapipe/Examples/Scripts/SceneDirector.cs +++ b/Assets/Mediapipe/Examples/Scripts/SceneDirector.cs @@ -22,7 +22,12 @@ public class SceneDirector : MonoBehaviour { void OnEnable() { var nameForGlog = Path.Combine(Application.dataPath, "MediapipePlugin"); - var logDir = Path.Combine(Application.dataPath.Replace("/Assets", ""), "Logs", "Mediapipe"); + + #if UNITY_EDITOR || UNITY_STANDALONE + var logDir = Path.Combine(Application.dataPath.Replace("/Assets", ""), "Logs", "Mediapipe"); + #else + var logDir = Path.Combine(Application.persistentDataPath, "Logs", "Mediapipe"); + #endif if (!Directory.Exists(logDir)) { Directory.CreateDirectory(logDir); diff --git a/Assets/Mediapipe/SDK/Plugins/Android.meta b/Assets/Mediapipe/SDK/Plugins/Android.meta new file mode 100644 index 000000000..0d9bbf159 --- /dev/null +++ b/Assets/Mediapipe/SDK/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1342d7083f227cd69f98ad02149d392 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml b/Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml new file mode 100644 index 000000000..67acbf8ef --- /dev/null +++ b/Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml.meta b/Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml.meta new file mode 100644 index 000000000..17248389c --- /dev/null +++ b/Assets/Mediapipe/SDK/Plugins/Android/AndroidManifest.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f5a74e9341f15979ea005cc470702345 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mediapipe/SDK/Plugins/Android/mediapipe_android.aar.meta b/Assets/Mediapipe/SDK/Plugins/Android/mediapipe_android.aar.meta new file mode 100644 index 000000000..b793f14f9 --- /dev/null +++ b/Assets/Mediapipe/SDK/Plugins/Android/mediapipe_android.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 190e26cbac31421f7907f38b68ef76d7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mediapipe/SDK/Plugins/libmediapipe_c.so.meta b/Assets/Mediapipe/SDK/Plugins/libmediapipe_c.so.meta new file mode 100644 index 000000000..863cd0cd9 --- /dev/null +++ b/Assets/Mediapipe/SDK/Plugins/libmediapipe_c.so.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: bc0d181be0a5a776b8f43517261c4634 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mediapipe/SDK/Scripts/UnsafeNativeMethods.cs b/Assets/Mediapipe/SDK/Scripts/UnsafeNativeMethods.cs index 5edd56320..d786a82b9 100644 --- a/Assets/Mediapipe/SDK/Scripts/UnsafeNativeMethods.cs +++ b/Assets/Mediapipe/SDK/Scripts/UnsafeNativeMethods.cs @@ -40,7 +40,11 @@ namespace Mediapipe { [SuppressUnmanagedCodeSecurityAttribute] internal static class UnsafeNativeMethods { - private const string MediapipeLibrary = "mediapipe_c"; + #if UNITY_ANDROID + private const string MediapipeLibrary = "mediapipe_jni"; + #else + private const string MediapipeLibrary = "mediapipe_c"; + #endif /// CalculatorGraph API [DllImport (MediapipeLibrary)] diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index a4a232249..2a02765a4 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -5,7 +5,10 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: + - enabled: 0 + path: + guid: 00000000000000000000000000000000 - enabled: 1 - path: Assets/Mediapipe/Examples/PoseTracking/Scenes/PoseTrackingOnGPU.unity - guid: 0b3fe43c47e9be53589aa7c8a61eb89c + path: Assets/Mediapipe/Examples/Scenes/DesktopGPU.unity + guid: 01636efed5795b70caad55b3515b23ac m_configObjects: {} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index cd69c463b..bbb96fc56 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -13,7 +13,7 @@ PlayerSettings: useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany - productName: MediapipePlugin + productName: MediaPipePlugin defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} @@ -111,8 +111,13 @@ PlayerSettings: switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 + vulkanEnableLateAcquireNextImage: 0 m_SupportedAspectRatios: 4:3: 1 5:4: 1 @@ -162,10 +167,11 @@ PlayerSettings: resolutionScalingMode: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 - applicationIdentifier: {} + applicationIdentifier: + Android: org.homuler.mediapipe.unity.MediaPipePlugin buildNumber: {} AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 19 + AndroidMinSdkVersion: 21 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: @@ -190,22 +196,6 @@ PlayerSettings: uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 - iPhoneSplashScreen: {fileID: 0} - iPhoneHighResSplashScreen: {fileID: 0} - iPhoneTallHighResSplashScreen: {fileID: 0} - iPhone47inSplashScreen: {fileID: 0} - iPhone55inPortraitSplashScreen: {fileID: 0} - iPhone55inLandscapeSplashScreen: {fileID: 0} - iPhone58inPortraitSplashScreen: {fileID: 0} - iPhone58inLandscapeSplashScreen: {fileID: 0} - iPadPortraitSplashScreen: {fileID: 0} - iPadHighResPortraitSplashScreen: {fileID: 0} - iPadLandscapeSplashScreen: {fileID: 0} - iPadHighResLandscapeSplashScreen: {fileID: 0} - iPhone65inPortraitSplashScreen: {fileID: 0} - iPhone65inLandscapeSplashScreen: {fileID: 0} - iPhone61inPortraitSplashScreen: {fileID: 0} - iPhone61inLandscapeSplashScreen: {fileID: 0} appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] @@ -272,9 +262,101 @@ PlayerSettings: banner: {fileID: 0} androidGamepadSupportLevel: 0 AndroidValidateAppBundleSize: 1 - AndroidAppBundleSizeToValidate: 150 + AndroidAppBundleSizeToValidate: 200 m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: m_BuildTargetBatching: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: MacStandaloneSupport @@ -491,6 +573,7 @@ PlayerSettings: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: @@ -533,6 +616,8 @@ PlayerSettings: ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] ps4attribVROutputEnabled: 0 diff --git a/README.md b/README.md index 9b6db02cf..e783c1b86 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ # Mediapipe Unity Plugin -This is a sample Unity (2019.4.10f1) Plugin to use Mediapipe (only tested on Linux). +This is a sample Unity (2019.4.10f1) Plugin to use Mediapipe. + +## Platforms +- [x] Linux Desktop (tested on ArchLinux) +- [ ] Android (under construction) +- [ ] OS X +- [ ] iOS ## Prerequisites ### MediaPipe