Skip to content

Commit 615b25f

Browse files
committed
feat: added ios support for pose detection
- Build is crashing due to heavy memory usage on below line in React-runtimecore Memory warning (pressure level: TRIM_MEMORY_RUNNING_CRITICAL) received by JS VM, running a GC
1 parent 6f0d342 commit 615b25f

18 files changed

Lines changed: 3664 additions & 44 deletions

β€ŽMediapipePosedetection.podspecβ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,8 @@ Pod::Spec.new do |s|
1616
s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
1717
s.private_header_files = "ios/**/*.h"
1818

19+
s.dependency 'MediaPipeTasksVision', '~> 0.10.14'
20+
s.dependency "VisionCamera"
21+
1922
install_modules_dependencies(s)
2023
end

β€Žexample/Gemfile.lockβ€Ž

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
CFPropertyList (3.0.8)
5+
activesupport (7.2.3)
6+
base64
7+
benchmark (>= 0.3)
8+
bigdecimal
9+
concurrent-ruby (~> 1.0, >= 1.3.1)
10+
connection_pool (>= 2.2.5)
11+
drb
12+
i18n (>= 1.6, < 2)
13+
logger (>= 1.4.2)
14+
minitest (>= 5.1)
15+
securerandom (>= 0.3)
16+
tzinfo (~> 2.0, >= 2.0.5)
17+
addressable (2.8.8)
18+
public_suffix (>= 2.0.2, < 8.0)
19+
algoliasearch (1.27.5)
20+
httpclient (~> 2.8, >= 2.8.3)
21+
json (>= 1.5.1)
22+
atomos (0.1.3)
23+
base64 (0.3.0)
24+
benchmark (0.5.0)
25+
bigdecimal (3.3.1)
26+
claide (1.1.0)
27+
cocoapods (1.15.2)
28+
addressable (~> 2.8)
29+
claide (>= 1.0.2, < 2.0)
30+
cocoapods-core (= 1.15.2)
31+
cocoapods-deintegrate (>= 1.0.3, < 2.0)
32+
cocoapods-downloader (>= 2.1, < 3.0)
33+
cocoapods-plugins (>= 1.0.0, < 2.0)
34+
cocoapods-search (>= 1.0.0, < 2.0)
35+
cocoapods-trunk (>= 1.6.0, < 2.0)
36+
cocoapods-try (>= 1.1.0, < 2.0)
37+
colored2 (~> 3.1)
38+
escape (~> 0.0.4)
39+
fourflusher (>= 2.3.0, < 3.0)
40+
gh_inspector (~> 1.0)
41+
molinillo (~> 0.8.0)
42+
nap (~> 1.0)
43+
ruby-macho (>= 2.3.0, < 3.0)
44+
xcodeproj (>= 1.23.0, < 2.0)
45+
cocoapods-core (1.15.2)
46+
activesupport (>= 5.0, < 8)
47+
addressable (~> 2.8)
48+
algoliasearch (~> 1.0)
49+
concurrent-ruby (~> 1.1)
50+
fuzzy_match (~> 2.0.4)
51+
nap (~> 1.0)
52+
netrc (~> 0.11)
53+
public_suffix (~> 4.0)
54+
typhoeus (~> 1.0)
55+
cocoapods-deintegrate (1.0.5)
56+
cocoapods-downloader (2.1)
57+
cocoapods-plugins (1.0.0)
58+
nap
59+
cocoapods-search (1.0.1)
60+
cocoapods-trunk (1.6.0)
61+
nap (>= 0.8, < 2.0)
62+
netrc (~> 0.11)
63+
cocoapods-try (1.2.0)
64+
colored2 (3.1.2)
65+
concurrent-ruby (1.3.3)
66+
connection_pool (2.5.5)
67+
drb (2.2.3)
68+
escape (0.0.4)
69+
ethon (0.15.0)
70+
ffi (>= 1.15.0)
71+
ffi (1.17.2)
72+
fourflusher (2.3.1)
73+
fuzzy_match (2.0.4)
74+
gh_inspector (1.1.3)
75+
httpclient (2.9.0)
76+
mutex_m
77+
i18n (1.14.7)
78+
concurrent-ruby (~> 1.0)
79+
json (2.16.0)
80+
logger (1.7.0)
81+
minitest (5.26.2)
82+
molinillo (0.8.0)
83+
mutex_m (0.3.0)
84+
nanaimo (0.3.0)
85+
nap (1.1.0)
86+
netrc (0.11.0)
87+
public_suffix (4.0.7)
88+
rexml (3.4.4)
89+
ruby-macho (2.5.1)
90+
securerandom (0.4.1)
91+
typhoeus (1.5.0)
92+
ethon (>= 0.9.0, < 0.16.0)
93+
tzinfo (2.0.6)
94+
concurrent-ruby (~> 1.0)
95+
xcodeproj (1.25.1)
96+
CFPropertyList (>= 2.3.3, < 4.0)
97+
atomos (~> 0.1.3)
98+
claide (>= 1.0.2, < 2.0)
99+
colored2 (~> 3.1)
100+
nanaimo (~> 0.3.0)
101+
rexml (>= 3.3.6, < 4.0)
102+
103+
PLATFORMS
104+
ruby
105+
106+
DEPENDENCIES
107+
activesupport (>= 6.1.7.5, != 7.1.0)
108+
benchmark
109+
bigdecimal
110+
cocoapods (>= 1.13, != 1.15.1, != 1.15.0)
111+
concurrent-ruby (< 1.3.4)
112+
logger
113+
mutex_m
114+
xcodeproj (< 1.26.0)
115+
116+
RUBY VERSION
117+
ruby 3.2.2p53
118+
119+
BUNDLED WITH
120+
2.7.2

β€Žexample/ios/MediapipePosedetectionExample.xcodeproj/project.pbxprojβ€Ž

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,38 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
0C80B921A6F3F58F76C31292 /* libPods-MediapipePosedetectionExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-MediapipePosedetectionExample.a */; };
10+
0BBCC1D02EE06E5A009DC16E /* pose_landmarker_full.task in Resources */ = {isa = PBXBuildFile; fileRef = 0BBCC1CD2EE06E5A009DC16E /* pose_landmarker_full.task */; };
11+
0BBCC1D12EE06E5A009DC16E /* pose_landmarker_lite.task in Resources */ = {isa = PBXBuildFile; fileRef = 0BBCC1CF2EE06E5A009DC16E /* pose_landmarker_lite.task */; };
12+
0BBCC1D22EE06E5A009DC16E /* pose_landmarker_heavy.task in Resources */ = {isa = PBXBuildFile; fileRef = 0BBCC1CE2EE06E5A009DC16E /* pose_landmarker_heavy.task */; };
13+
0C06A7F689377475912EC987 /* libPods-MediapipePosedetectionExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F651891DAEAC517AAA8A77E6 /* libPods-MediapipePosedetectionExample.a */; };
1114
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
15+
1DED430773759585AF54DD6D /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
1216
761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
1317
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
1418
/* End PBXBuildFile section */
1519

1620
/* Begin PBXFileReference section */
21+
0BBCC1CD2EE06E5A009DC16E /* pose_landmarker_full.task */ = {isa = PBXFileReference; lastKnownFileType = file; path = pose_landmarker_full.task; sourceTree = "<group>"; };
22+
0BBCC1CE2EE06E5A009DC16E /* pose_landmarker_heavy.task */ = {isa = PBXFileReference; lastKnownFileType = file; path = pose_landmarker_heavy.task; sourceTree = "<group>"; };
23+
0BBCC1CF2EE06E5A009DC16E /* pose_landmarker_lite.task */ = {isa = PBXFileReference; lastKnownFileType = file; path = pose_landmarker_lite.task; sourceTree = "<group>"; };
1724
13B07F961A680F5B00A75B9A /* MediapipePosedetectionExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MediapipePosedetectionExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
1825
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = MediapipePosedetectionExample/Images.xcassets; sourceTree = "<group>"; };
1926
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = MediapipePosedetectionExample/Info.plist; sourceTree = "<group>"; };
2027
13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = MediapipePosedetectionExample/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
21-
3B4392A12AC88292D35C810B /* Pods-MediapipePosedetectionExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MediapipePosedetectionExample.debug.xcconfig"; path = "Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample.debug.xcconfig"; sourceTree = "<group>"; };
22-
5709B34CF0A7D63546082F79 /* Pods-MediapipePosedetectionExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MediapipePosedetectionExample.release.xcconfig"; path = "Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample.release.xcconfig"; sourceTree = "<group>"; };
23-
5DCACB8F33CDC322A6C60F78 /* libPods-MediapipePosedetectionExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MediapipePosedetectionExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
28+
3872D0DE1B445F4CCDF26812 /* Pods-MediapipePosedetectionExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MediapipePosedetectionExample.release.xcconfig"; path = "Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample.release.xcconfig"; sourceTree = "<group>"; };
29+
3C2DF57F0B41BE4E6202689D /* Pods-MediapipePosedetectionExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MediapipePosedetectionExample.debug.xcconfig"; path = "Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample.debug.xcconfig"; sourceTree = "<group>"; };
2430
761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = MediapipePosedetectionExample/AppDelegate.swift; sourceTree = "<group>"; };
2531
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = MediapipePosedetectionExample/LaunchScreen.storyboard; sourceTree = "<group>"; };
2632
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
33+
F651891DAEAC517AAA8A77E6 /* libPods-MediapipePosedetectionExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MediapipePosedetectionExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
2734
/* End PBXFileReference section */
2835

2936
/* Begin PBXFrameworksBuildPhase section */
3037
13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
3138
isa = PBXFrameworksBuildPhase;
3239
buildActionMask = 2147483647;
3340
files = (
34-
0C80B921A6F3F58F76C31292 /* libPods-MediapipePosedetectionExample.a in Frameworks */,
41+
0C06A7F689377475912EC987 /* libPods-MediapipePosedetectionExample.a in Frameworks */,
3542
);
3643
runOnlyForDeploymentPostprocessing = 0;
3744
};
@@ -44,6 +51,9 @@
4451
13B07FB51A68108700A75B9A /* Images.xcassets */,
4552
761780EC2CA45674006654EE /* AppDelegate.swift */,
4653
13B07FB61A68108700A75B9A /* Info.plist */,
54+
0BBCC1CD2EE06E5A009DC16E /* pose_landmarker_full.task */,
55+
0BBCC1CE2EE06E5A009DC16E /* pose_landmarker_heavy.task */,
56+
0BBCC1CF2EE06E5A009DC16E /* pose_landmarker_lite.task */,
4757
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
4858
13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
4959
);
@@ -54,7 +64,7 @@
5464
isa = PBXGroup;
5565
children = (
5666
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
57-
5DCACB8F33CDC322A6C60F78 /* libPods-MediapipePosedetectionExample.a */,
67+
F651891DAEAC517AAA8A77E6 /* libPods-MediapipePosedetectionExample.a */,
5868
);
5969
name = Frameworks;
6070
sourceTree = "<group>";
@@ -91,8 +101,8 @@
91101
BBD78D7AC51CEA395F1C20DB /* Pods */ = {
92102
isa = PBXGroup;
93103
children = (
94-
3B4392A12AC88292D35C810B /* Pods-MediapipePosedetectionExample.debug.xcconfig */,
95-
5709B34CF0A7D63546082F79 /* Pods-MediapipePosedetectionExample.release.xcconfig */,
104+
3C2DF57F0B41BE4E6202689D /* Pods-MediapipePosedetectionExample.debug.xcconfig */,
105+
3872D0DE1B445F4CCDF26812 /* Pods-MediapipePosedetectionExample.release.xcconfig */,
96106
);
97107
path = Pods;
98108
sourceTree = "<group>";
@@ -104,13 +114,13 @@
104114
isa = PBXNativeTarget;
105115
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "MediapipePosedetectionExample" */;
106116
buildPhases = (
107-
C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
117+
0E9492C468D7A2CA837DB7A1 /* [CP] Check Pods Manifest.lock */,
108118
13B07F871A680F5B00A75B9A /* Sources */,
109119
13B07F8C1A680F5B00A75B9A /* Frameworks */,
110120
13B07F8E1A680F5B00A75B9A /* Resources */,
111121
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
112-
00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
113-
E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
122+
7208D99FE5CF4E43DAB05C7F /* [CP] Embed Pods Frameworks */,
123+
6904D3C35B58B7D1039A4ED1 /* [CP] Copy Pods Resources */,
114124
);
115125
buildRules = (
116126
);
@@ -159,6 +169,10 @@
159169
files = (
160170
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
161171
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
172+
1DED430773759585AF54DD6D /* PrivacyInfo.xcprivacy in Resources */,
173+
0BBCC1D02EE06E5A009DC16E /* pose_landmarker_full.task in Resources */,
174+
0BBCC1D12EE06E5A009DC16E /* pose_landmarker_lite.task in Resources */,
175+
0BBCC1D22EE06E5A009DC16E /* pose_landmarker_heavy.task in Resources */,
162176
);
163177
runOnlyForDeploymentPostprocessing = 0;
164178
};
@@ -181,24 +195,7 @@
181195
shellPath = /bin/sh;
182196
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
183197
};
184-
00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
185-
isa = PBXShellScriptBuildPhase;
186-
buildActionMask = 2147483647;
187-
files = (
188-
);
189-
inputFileListPaths = (
190-
"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
191-
);
192-
name = "[CP] Embed Pods Frameworks";
193-
outputFileListPaths = (
194-
"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
195-
);
196-
runOnlyForDeploymentPostprocessing = 0;
197-
shellPath = /bin/sh;
198-
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-frameworks.sh\"\n";
199-
showEnvVarsInLog = 0;
200-
};
201-
C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
198+
0E9492C468D7A2CA837DB7A1 /* [CP] Check Pods Manifest.lock */ = {
202199
isa = PBXShellScriptBuildPhase;
203200
buildActionMask = 2147483647;
204201
files = (
@@ -220,7 +217,7 @@
220217
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
221218
showEnvVarsInLog = 0;
222219
};
223-
E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
220+
6904D3C35B58B7D1039A4ED1 /* [CP] Copy Pods Resources */ = {
224221
isa = PBXShellScriptBuildPhase;
225222
buildActionMask = 2147483647;
226223
files = (
@@ -237,6 +234,23 @@
237234
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-resources.sh\"\n";
238235
showEnvVarsInLog = 0;
239236
};
237+
7208D99FE5CF4E43DAB05C7F /* [CP] Embed Pods Frameworks */ = {
238+
isa = PBXShellScriptBuildPhase;
239+
buildActionMask = 2147483647;
240+
files = (
241+
);
242+
inputFileListPaths = (
243+
"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
244+
);
245+
name = "[CP] Embed Pods Frameworks";
246+
outputFileListPaths = (
247+
"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
248+
);
249+
runOnlyForDeploymentPostprocessing = 0;
250+
shellPath = /bin/sh;
251+
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MediapipePosedetectionExample/Pods-MediapipePosedetectionExample-frameworks.sh\"\n";
252+
showEnvVarsInLog = 0;
253+
};
240254
/* End PBXShellScriptBuildPhase section */
241255

242256
/* Begin PBXSourcesBuildPhase section */
@@ -253,11 +267,12 @@
253267
/* Begin XCBuildConfiguration section */
254268
13B07F941A680F5B00A75B9A /* Debug */ = {
255269
isa = XCBuildConfiguration;
256-
baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-MediapipePosedetectionExample.debug.xcconfig */;
270+
baseConfigurationReference = 3C2DF57F0B41BE4E6202689D /* Pods-MediapipePosedetectionExample.debug.xcconfig */;
257271
buildSettings = {
258272
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
259273
CLANG_ENABLE_MODULES = YES;
260274
CURRENT_PROJECT_VERSION = 1;
275+
DEVELOPMENT_TEAM = 79N5QTA3B5;
261276
ENABLE_BITCODE = NO;
262277
INFOPLIST_FILE = MediapipePosedetectionExample/Info.plist;
263278
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
@@ -271,7 +286,7 @@
271286
"-ObjC",
272287
"-lc++",
273288
);
274-
PRODUCT_BUNDLE_IDENTIFIER = "mediapipeposedetection.example";
289+
PRODUCT_BUNDLE_IDENTIFIER = com.expo.template;
275290
PRODUCT_NAME = MediapipePosedetectionExample;
276291
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
277292
SWIFT_VERSION = 5.0;
@@ -281,11 +296,12 @@
281296
};
282297
13B07F951A680F5B00A75B9A /* Release */ = {
283298
isa = XCBuildConfiguration;
284-
baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-MediapipePosedetectionExample.release.xcconfig */;
299+
baseConfigurationReference = 3872D0DE1B445F4CCDF26812 /* Pods-MediapipePosedetectionExample.release.xcconfig */;
285300
buildSettings = {
286301
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
287302
CLANG_ENABLE_MODULES = YES;
288303
CURRENT_PROJECT_VERSION = 1;
304+
DEVELOPMENT_TEAM = 79N5QTA3B5;
289305
INFOPLIST_FILE = MediapipePosedetectionExample/Info.plist;
290306
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
291307
LD_RUNPATH_SEARCH_PATHS = (
@@ -298,7 +314,7 @@
298314
"-ObjC",
299315
"-lc++",
300316
);
301-
PRODUCT_BUNDLE_IDENTIFIER = "mediapipeposedetection.example";
317+
PRODUCT_BUNDLE_IDENTIFIER = com.expo.template;
302318
PRODUCT_NAME = MediapipePosedetectionExample;
303319
SWIFT_VERSION = 5.0;
304320
VERSIONING_SYSTEM = "apple-generic";
@@ -374,7 +390,10 @@
374390
"-DFOLLY_CFG_NO_COROUTINES=1",
375391
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
376392
);
393+
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
377394
SDKROOT = iphoneos;
395+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
396+
USE_HERMES = true;
378397
};
379398
name = Debug;
380399
};
@@ -439,7 +458,9 @@
439458
"-DFOLLY_CFG_NO_COROUTINES=1",
440459
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
441460
);
461+
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
442462
SDKROOT = iphoneos;
463+
USE_HERMES = true;
443464
VALIDATE_PRODUCT = YES;
444465
};
445466
name = Release;

β€Žexample/ios/MediapipePosedetectionExample.xcworkspace/contents.xcworkspacedataβ€Ž

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žexample/ios/MediapipePosedetectionExample/Info.plistβ€Ž

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,19 @@
2626
<true/>
2727
<key>NSAppTransportSecurity</key>
2828
<dict>
29-
<!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
3029
<key>NSAllowsArbitraryLoads</key>
3130
<false/>
3231
<key>NSAllowsLocalNetworking</key>
3332
<true/>
3433
</dict>
34+
<key>NSCameraUsageDescription</key>
35+
<string>This app requires camera access to detect poses in real-time.</string>
3536
<key>NSLocationWhenInUseUsageDescription</key>
3637
<string></string>
38+
<key>NSMicrophoneUsageDescription</key>
39+
<string>This app requires microphone access for video recording.</string>
40+
<key>RCTNewArchEnabled</key>
41+
<true/>
3742
<key>UILaunchStoryboardName</key>
3843
<string>LaunchScreen</string>
3944
<key>UIRequiredDeviceCapabilities</key>

0 commit comments

Comments
Β (0)