├── app.plugin.js ├── example ├── android │ ├── app │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── colors.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── drawable-hdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-mdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable │ │ │ │ │ │ ├── splashscreen.xml │ │ │ │ │ │ └── rn_edit_text_material.xml │ │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xxxhdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── values │ │ │ │ │ │ ├── colors.xml │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── mipmap-anydpi-v26 │ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── java │ │ │ │ │ └── expo │ │ │ │ │ │ └── modules │ │ │ │ │ │ └── checkinstalledapps │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── MainApplication.kt │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── AndroidManifest.xml │ │ │ └── debug │ │ │ │ └── AndroidManifest.xml │ │ ├── debug.keystore │ │ ├── proguard-rules.pro │ │ └── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── .gitignore │ ├── react-settings-plugin │ │ ├── src │ │ │ └── main │ │ │ │ └── kotlin │ │ │ │ └── expo │ │ │ │ └── plugins │ │ │ │ └── ReactSettingsPlugin.kt │ │ └── build.gradle.kts │ ├── build.gradle │ ├── gradle.properties │ ├── settings.gradle │ ├── gradlew.bat │ └── gradlew ├── assets │ ├── icon.png │ ├── splash.png │ ├── favicon.png │ └── adaptive-icon.png ├── ios │ ├── Podfile.properties.json │ ├── expocheckinstalledappsexample │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ ├── SplashScreen.imageset │ │ │ │ ├── image.png │ │ │ │ └── Contents.json │ │ │ ├── SplashScreenBackground.imageset │ │ │ │ ├── image.png │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ ├── App-Icon-1024x1024@1x.png │ │ │ │ └── Contents.json │ │ ├── noop-file.swift │ │ ├── expocheckinstalledappsexample-Bridging-Header.h │ │ ├── AppDelegate.h │ │ ├── expocheckinstalledappsexample.entitlements │ │ ├── main.m │ │ ├── Supporting │ │ │ └── Expo.plist │ │ ├── PrivacyInfo.xcprivacy │ │ ├── Info.plist │ │ ├── AppDelegate.mm │ │ └── SplashScreen.storyboard │ ├── expocheckinstalledappsexample.xcworkspace │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── contents.xcworkspacedata │ ├── .gitignore │ ├── .xcode.env │ ├── Podfile │ ├── expocheckinstalledappsexample.xcodeproj │ │ ├── xcshareddata │ │ │ └── xcschemes │ │ │ │ └── expocheckinstalledappsexample.xcscheme │ │ └── project.pbxproj │ └── Podfile.lock ├── babel.config.js ├── tsconfig.json ├── .gitignore ├── webpack.config.js ├── package.json ├── app.json ├── metro.config.js └── App.tsx ├── plugin ├── tsconfig.tsbuildinfo ├── tsconfig.json └── src │ └── index.ts ├── .eslintrc.js ├── tsconfig.json ├── expo-module.config.json ├── .npmignore ├── src ├── ExpoCheckInstalledAppsModule.ts └── index.ts ├── android ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── expo │ │ └── modules │ │ └── checkinstalledapps │ │ └── ExpoCheckInstalledAppsModule.kt └── build.gradle ├── .gitignore ├── ios ├── ExpoCheckInstalledApps.podspec └── ExpoCheckInstalledAppsModule.swift ├── .github ├── FUNDING.yml └── workflows │ └── RELEASE_AND_PUBLISH_TO_NPM.yml ├── package.json └── README.md /app.plugin.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./plugin/build'); 2 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugin/tsconfig.tsbuildinfo: -------------------------------------------------------------------------------- 1 | {"root":["./src/index.ts"],"version":"5.6.3"} -------------------------------------------------------------------------------- /example/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/assets/icon.png -------------------------------------------------------------------------------- /example/assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/assets/splash.png -------------------------------------------------------------------------------- /example/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/assets/favicon.png -------------------------------------------------------------------------------- /example/ios/Podfile.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo.jsEngine": "hermes", 3 | "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" 4 | } 5 | -------------------------------------------------------------------------------- /example/assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/assets/adaptive-icon.png -------------------------------------------------------------------------------- /example/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/debug.keystore -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['universe/native', 'universe/web'], 4 | ignorePatterns: ['build'], 5 | }; 6 | -------------------------------------------------------------------------------- /example/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "expo" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/noop-file.swift: -------------------------------------------------------------------------------- 1 | // 2 | // @generated 3 | // A blank Swift file must be created for native modules with Swift files to work correctly. 4 | // 5 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/expocheckinstalledappsexample-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable/splashscreen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @interface AppDelegate : EXAppDelegateWrapper 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /example/android/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Android/IntelliJ 6 | # 7 | build/ 8 | .idea 9 | .gradle 10 | local.properties 11 | *.iml 12 | *.hprof 13 | .cxx/ 14 | 15 | # Bundle artifacts 16 | *.jsbundle 17 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/SplashScreen.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/ios/expocheckinstalledappsexample/Images.xcassets/SplashScreen.imageset/image.png -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/SplashScreenBackground.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/ios/expocheckinstalledappsexample/Images.xcassets/SplashScreenBackground.imageset/image.png -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EndLess728/expo-check-installed-apps/HEAD/example/ios/expocheckinstalledappsexample/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | // @generated by expo-module-scripts 2 | { 3 | "extends": "expo-module-scripts/tsconfig.base", 4 | "compilerOptions": { 5 | "outDir": "./build" 6 | }, 7 | "include": ["./src"], 8 | "exclude": ["**/__mocks__/*", "**/__tests__/*"] 9 | } 10 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/expocheckinstalledappsexample.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "expo/tsconfig.base", 3 | "compilerOptions": { 4 | "strict": true, 5 | "paths": { 6 | "expo-check-installed-apps": ["../src/index"], 7 | "expo-check-installed-apps/*": ["../src/*"] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /expo-module.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "platforms": ["ios", "tvos", "android"], 3 | "ios": { 4 | "modules": ["ExpoCheckInstalledAppsModule"] 5 | }, 6 | "android": { 7 | "modules": ["expo.modules.checkinstalledapps.ExpoCheckInstalledAppsModule"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /plugin/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "expo-module-scripts/tsconfig.plugin", 3 | "compilerOptions": { 4 | "outDir": "build", 5 | "rootDir": "src" 6 | }, 7 | "include": ["./src"], 8 | "exclude": ["**/__mocks__/*", "**/__tests__/*"] 9 | } 10 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff 3 | #ffffff 4 | #023c69 5 | #ffffff 6 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Exclude all top-level hidden directories by convention 2 | /.*/ 3 | 4 | # Exclude tarballs generated by `npm pack` 5 | /*.tgz 6 | 7 | __mocks__ 8 | __tests__ 9 | 10 | /babel.config.js 11 | /android/src/androidTest/ 12 | /android/src/test/ 13 | /android/build/ 14 | /example/ 15 | -------------------------------------------------------------------------------- /src/ExpoCheckInstalledAppsModule.ts: -------------------------------------------------------------------------------- 1 | import { requireNativeModule } from 'expo-modules-core'; 2 | 3 | // It loads the native module object from the JSI or falls back to 4 | // the bridge module (from NativeModulesProxy) if the remote debugger is on. 5 | export default requireNativeModule('ExpoCheckInstalledApps'); 6 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | expo-check-installed-apps-example 3 | contain 4 | false 5 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "filename": "App-Icon-1024x1024@1x.png", 5 | "idiom": "universal", 6 | "platform": "ios", 7 | "size": "1024x1024" 8 | } 9 | ], 10 | "info": { 11 | "version": 1, 12 | "author": "expo" 13 | } 14 | } -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /example/android/react-settings-plugin/src/main/kotlin/expo/plugins/ReactSettingsPlugin.kt: -------------------------------------------------------------------------------- 1 | package expo.plugins 2 | 3 | import org.gradle.api.Plugin 4 | import org.gradle.api.initialization.Settings 5 | 6 | class ReactSettingsPlugin : Plugin { 7 | override fun apply(settings: Settings) { 8 | // Do nothing, just register the plugin. 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Supporting/Expo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EXUpdatesCheckOnLaunch 6 | ALWAYS 7 | EXUpdatesEnabled 8 | 9 | EXUpdatesLaunchWaitMs 10 | 0 11 | 12 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/SplashScreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | .xcode.env.local 25 | 26 | # Bundle artifacts 27 | *.jsbundle 28 | 29 | # CocoaPods 30 | /Pods/ 31 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Images.xcassets/SplashScreenBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /example/android/react-settings-plugin/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.gradle.tasks.KotlinCompile 2 | 3 | plugins { 4 | kotlin("jvm") version "1.9.24" 5 | id("java-gradle-plugin") 6 | } 7 | 8 | repositories { 9 | mavenCentral() 10 | } 11 | 12 | gradlePlugin { 13 | plugins { 14 | create("reactSettingsPlugin") { 15 | id = "com.facebook.react.settings" 16 | implementationClass = "expo.plugins.ReactSettingsPlugin" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /example/ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # Expo 7 | .expo/ 8 | dist/ 9 | web-build/ 10 | 11 | # Native 12 | *.orig.* 13 | *.jks 14 | *.p8 15 | *.p12 16 | *.key 17 | *.mobileprovision 18 | 19 | # Metro 20 | .metro-health-check* 21 | 22 | # debug 23 | npm-debug.* 24 | yarn-debug.* 25 | yarn-error.* 26 | 27 | # macOS 28 | .DS_Store 29 | *.pem 30 | 31 | # local env files 32 | .env*.local 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | -------------------------------------------------------------------------------- /example/webpack.config.js: -------------------------------------------------------------------------------- 1 | const createConfigAsync = require('@expo/webpack-config'); 2 | const path = require('path'); 3 | 4 | module.exports = async (env, argv) => { 5 | const config = await createConfigAsync( 6 | { 7 | ...env, 8 | babel: { 9 | dangerouslyAddModulePathsToTranspile: ['expo-check-installed-apps'], 10 | }, 11 | }, 12 | argv 13 | ); 14 | config.resolve.modules = [ 15 | path.resolve(__dirname, './node_modules'), 16 | path.resolve(__dirname, '../node_modules'), 17 | ]; 18 | 19 | return config; 20 | }; 21 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import ExpoCheckInstalledAppsModule from "./ExpoCheckInstalledAppsModule"; 2 | 3 | // Get the native constant value. 4 | export const PI = ExpoCheckInstalledAppsModule.PI; 5 | 6 | export function hello(): string { 7 | return ExpoCheckInstalledAppsModule.hello(); 8 | } 9 | 10 | export async function checkInstalledApps( 11 | packageNames: Array 12 | ): Promise> { 13 | return ExpoCheckInstalledAppsModule.checkAppsInstalled(packageNames); 14 | } 15 | 16 | export async function setValueAsync(value: string) { 17 | return await ExpoCheckInstalledAppsModule.setValueAsync(value); 18 | } 19 | -------------------------------------------------------------------------------- /example/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # react-native-reanimated 11 | -keep class com.swmansion.reanimated.** { *; } 12 | -keep class com.facebook.react.turbomodule.** { *; } 13 | 14 | # Add any project specific keep options here: 15 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "expo-check-installed-apps-example", 3 | "version": "1.0.0", 4 | "main": "expo/AppEntry.js", 5 | "scripts": { 6 | "start": "expo start", 7 | "android": "expo run:android", 8 | "ios": "expo run:ios", 9 | "web": "expo start --web" 10 | }, 11 | "dependencies": { 12 | "expo": "~51.0.28", 13 | "react": "18.2.0", 14 | "react-native": "0.74.5" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.20.0", 18 | "@types/react": "~18.2.45", 19 | "typescript": "^5.1.3" 20 | }, 21 | "private": true, 22 | "expo": { 23 | "autolinking": { 24 | "nativeModulesDir": ".." 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # VSCode 6 | .vscode/ 7 | jsconfig.json 8 | 9 | # Xcode 10 | # 11 | build/ 12 | *.pbxuser 13 | !default.pbxuser 14 | *.mode1v3 15 | !default.mode1v3 16 | *.mode2v3 17 | !default.mode2v3 18 | *.perspectivev3 19 | !default.perspectivev3 20 | xcuserdata 21 | *.xccheckout 22 | *.moved-aside 23 | DerivedData 24 | *.hmap 25 | *.ipa 26 | *.xcuserstate 27 | project.xcworkspace 28 | 29 | # Android/IJ 30 | # 31 | .classpath 32 | .cxx 33 | .gradle 34 | .idea 35 | .project 36 | .settings 37 | local.properties 38 | android.iml 39 | android/app/libs 40 | android/keystores/debug.keystore 41 | 42 | # Cocoapods 43 | # 44 | example/ios/Pods 45 | 46 | # Ruby 47 | example/vendor/ 48 | 49 | # node.js 50 | # 51 | node_modules/ 52 | npm-debug.log 53 | yarn-debug.log 54 | yarn-error.log 55 | 56 | # Expo 57 | .expo/* 58 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 14 | 17 | -------------------------------------------------------------------------------- /ios/ExpoCheckInstalledApps.podspec: -------------------------------------------------------------------------------- 1 | require 'json' 2 | 3 | package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json'))) 4 | 5 | Pod::Spec.new do |s| 6 | s.name = 'ExpoCheckInstalledApps' 7 | s.version = package['version'] 8 | s.summary = package['description'] 9 | s.description = package['description'] 10 | s.license = package['license'] 11 | s.author = package['author'] 12 | s.homepage = package['homepage'] 13 | s.platforms = { :ios => '13.4', :tvos => '13.4' } 14 | s.swift_version = '5.4' 15 | s.source = { git: 'https://github.com/EndLess728/expo-check-installed-apps' } 16 | s.static_framework = true 17 | 18 | s.dependency 'ExpoModulesCore' 19 | 20 | # Swift/Objective-C compatibility 21 | s.pod_target_xcconfig = { 22 | 'DEFINES_MODULE' => 'YES', 23 | 'SWIFT_COMPILATION_MODE' => 'wholemodule' 24 | } 25 | 26 | s.source_files = "**/*.{h,m,swift}" 27 | end 28 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: EndLess728 # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: mantu.728 # Replace with a single Buy Me a Coffee username 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: ['https://paypal.me/Monty728'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 16 | -------------------------------------------------------------------------------- /example/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "expo-check-installed-apps-example", 4 | "slug": "expo-check-installed-apps-example", 5 | "version": "1.0.0", 6 | "orientation": "portrait", 7 | "icon": "./assets/icon.png", 8 | "userInterfaceStyle": "light", 9 | "splash": { 10 | "image": "./assets/splash.png", 11 | "resizeMode": "contain", 12 | "backgroundColor": "#ffffff" 13 | }, 14 | "ios": { 15 | "supportsTablet": true, 16 | "bundleIdentifier": "expo.modules.checkinstalledapps.example" 17 | }, 18 | "android": { 19 | "adaptiveIcon": { 20 | "foregroundImage": "./assets/adaptive-icon.png", 21 | "backgroundColor": "#ffffff" 22 | }, 23 | "package": "expo.modules.checkinstalledapps.example" 24 | }, 25 | "plugins": [ 26 | [ 27 | "../app.plugin.js", 28 | { 29 | "android": ["com.android.chrome", "com.expo.flash.qr"], 30 | "ios": ["fb", "twitter"] 31 | } 32 | ] 33 | ] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /example/metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.io/guides/customizing-metro 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | const path = require('path'); 4 | 5 | const config = getDefaultConfig(__dirname); 6 | 7 | // npm v7+ will install ../node_modules/react and ../node_modules/react-native because of peerDependencies. 8 | // To prevent the incompatible react-native between ./node_modules/react-native and ../node_modules/react-native, 9 | // excludes the one from the parent folder when bundling. 10 | config.resolver.blockList = [ 11 | ...Array.from(config.resolver.blockList ?? []), 12 | new RegExp(path.resolve('..', 'node_modules', 'react')), 13 | new RegExp(path.resolve('..', 'node_modules', 'react-native')), 14 | ]; 15 | 16 | config.resolver.nodeModulesPaths = [ 17 | path.resolve(__dirname, './node_modules'), 18 | path.resolve(__dirname, '../node_modules'), 19 | ]; 20 | 21 | config.resolver.extraNodeModules = { 22 | 'expo-check-installed-apps': '..', 23 | }; 24 | 25 | config.watchFolders = [path.resolve(__dirname, '..')]; 26 | 27 | config.transformer.getTransformOptions = async () => ({ 28 | transform: { 29 | experimentalImportSupport: false, 30 | inlineRequires: true, 31 | }, 32 | }); 33 | 34 | module.exports = config; 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "expo-check-installed-apps", 3 | "version": "0.2.9", 4 | "description": "Expo Package to check the installed apps in android and ios", 5 | "main": "build/index.js", 6 | "types": "build/index.d.ts", 7 | "scripts": { 8 | "build": "expo-module build", 9 | "clean": "expo-module clean", 10 | "lint": "expo-module lint", 11 | "test": "expo-module test", 12 | "prepare": "expo-module prepare", 13 | "prepublishOnly": "expo-module prepublishOnly", 14 | "expo-module": "expo-module", 15 | "open:ios": "xed example/ios", 16 | "open:android": "open -a \"Android Studio\" example/android" 17 | }, 18 | "keywords": [ 19 | "react-native", 20 | "expo", 21 | "expo-check-installed-apps", 22 | "ExpoCheckInstalledApps" 23 | ], 24 | "repository": "https://github.com/EndLess728/expo-check-installed-apps", 25 | "bugs": { 26 | "url": "https://github.com/EndLess728/expo-check-installed-apps/issues" 27 | }, 28 | "author": "Mantu (https://github.com/EndLess728)", 29 | "license": "MIT", 30 | "homepage": "https://github.com/EndLess728/expo-check-installed-apps#readme", 31 | "dependencies": {}, 32 | "devDependencies": { 33 | "@types/react": "^18.0.25", 34 | "expo-module-scripts": "^3.5.2", 35 | "expo-modules-core": "^1.12.24" 36 | }, 37 | "peerDependencies": { 38 | "expo": "*", 39 | "react": "*", 40 | "react-native": "*" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyAccessedAPITypes 6 | 7 | 8 | NSPrivacyAccessedAPIType 9 | NSPrivacyAccessedAPICategoryUserDefaults 10 | NSPrivacyAccessedAPITypeReasons 11 | 12 | CA92.1 13 | 14 | 15 | 16 | NSPrivacyAccessedAPIType 17 | NSPrivacyAccessedAPICategoryFileTimestamp 18 | NSPrivacyAccessedAPITypeReasons 19 | 20 | 0A2A.1 21 | 3B52.1 22 | C617.1 23 | 24 | 25 | 26 | NSPrivacyAccessedAPIType 27 | NSPrivacyAccessedAPICategoryDiskSpace 28 | NSPrivacyAccessedAPITypeReasons 29 | 30 | E174.1 31 | 85F4.1 32 | 33 | 34 | 35 | NSPrivacyAccessedAPIType 36 | NSPrivacyAccessedAPICategorySystemBootTime 37 | NSPrivacyAccessedAPITypeReasons 38 | 39 | 35F9.1 40 | 41 | 42 | 43 | NSPrivacyCollectedDataTypes 44 | 45 | NSPrivacyTracking 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /example/App.tsx: -------------------------------------------------------------------------------- 1 | import { Platform, StyleSheet, Text, View } from "react-native"; 2 | import { checkInstalledApps, hello } from "expo-check-installed-apps"; 3 | import { useEffect, useState } from "react"; 4 | 5 | export default function App() { 6 | const [result, setResult] = useState({}); 7 | const packageNames: string[] = 8 | Platform.select({ 9 | android: [ 10 | "com.google.android.apps.fitness", 11 | "com.android.chrome", 12 | "com.expo.flash.qr", 13 | ], 14 | ios: ["fb://", "twitter://"], 15 | }) || []; 16 | 17 | useEffect(() => { 18 | const checkInstalled = async () => { 19 | const checkInstalledAppsResult = await checkInstalledApps(packageNames); 20 | setResult(checkInstalledAppsResult); 21 | console.log( 22 | "🚀 ~ file: App.tsx:15 ~ checkInstalled ~ checkApp ===> ", 23 | checkInstalledAppsResult 24 | ); 25 | }; 26 | checkInstalled(); 27 | }, []); 28 | 29 | return ( 30 | 31 | {hello()} 32 | 33 | {JSON.stringify(result, null, 2)} {/* Pretty print JSON */} 34 | 35 | 36 | ); 37 | } 38 | 39 | const styles = StyleSheet.create({ 40 | container: { 41 | flex: 1, 42 | backgroundColor: "#fff", 43 | alignItems: "center", 44 | justifyContent: "center", 45 | padding: 40, 46 | }, 47 | resultText: { 48 | fontWeight: "bold", 49 | fontSize: 15, 50 | marginTop: 20, 51 | }, 52 | }); 53 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | group = 'expo.modules.checkinstalledapps' 4 | version = '0.1.0' 5 | 6 | def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle") 7 | apply from: expoModulesCorePlugin 8 | applyKotlinExpoModulesCorePlugin() 9 | useCoreDependencies() 10 | useExpoPublishing() 11 | 12 | // If you want to use the managed Android SDK versions from expo-modules-core, set this to true. 13 | // The Android SDK versions will be bumped from time to time in SDK releases and may introduce breaking changes in your module code. 14 | // Most of the time, you may like to manage the Android SDK versions yourself. 15 | def useManagedAndroidSdkVersions = false 16 | if (useManagedAndroidSdkVersions) { 17 | useDefaultAndroidSdkVersions() 18 | } else { 19 | buildscript { 20 | // Simple helper that allows the root project to override versions declared by this library. 21 | ext.safeExtGet = { prop, fallback -> 22 | rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback 23 | } 24 | } 25 | project.android { 26 | compileSdkVersion safeExtGet("compileSdkVersion", 34) 27 | defaultConfig { 28 | minSdkVersion safeExtGet("minSdkVersion", 21) 29 | targetSdkVersion safeExtGet("targetSdkVersion", 34) 30 | } 31 | } 32 | } 33 | 34 | android { 35 | namespace "expo.modules.checkinstalledapps" 36 | defaultConfig { 37 | versionCode 1 38 | versionName "0.1.0" 39 | } 40 | lintOptions { 41 | abortOnError false 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /example/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = findProperty('android.buildToolsVersion') ?: '34.0.0' 6 | minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '23') 7 | compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '34') 8 | targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34') 9 | kotlinVersion = findProperty('android.kotlinVersion') ?: '1.9.23' 10 | 11 | ndkVersion = "26.1.10909125" 12 | } 13 | repositories { 14 | google() 15 | mavenCentral() 16 | } 17 | dependencies { 18 | classpath('com.android.tools.build:gradle') 19 | classpath('com.facebook.react:react-native-gradle-plugin') 20 | classpath('org.jetbrains.kotlin:kotlin-gradle-plugin') 21 | } 22 | } 23 | 24 | apply plugin: "com.facebook.react.rootproject" 25 | 26 | allprojects { 27 | repositories { 28 | maven { 29 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 30 | url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android')) 31 | } 32 | maven { 33 | // Android JSC is installed from npm 34 | url(new File(['node', '--print', "require.resolve('jsc-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), '../dist')) 35 | } 36 | 37 | google() 38 | mavenCentral() 39 | maven { url 'https://www.jitpack.io' } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable/rn_edit_text_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 22 | 23 | 24 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/ExpoCheckInstalledAppsModule.swift: -------------------------------------------------------------------------------- 1 | import ExpoModulesCore 2 | 3 | public class ExpoCheckInstalledAppsModule: Module { 4 | // Each module class must implement the definition function. The definition consists of components 5 | // that describes the module's functionality and behavior. 6 | // See https://docs.expo.dev/modules/module-api for more details about available components. 7 | public func definition() -> ModuleDefinition { 8 | // Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument. 9 | // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity. 10 | // The module will be accessible from `requireNativeModule('ExpoCheckInstalledApps')` in JavaScript. 11 | Name("ExpoCheckInstalledApps") 12 | 13 | // Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary. 14 | Constants([ 15 | "PI": Double.pi 16 | ]) 17 | 18 | // Defines event names that the module can send to JavaScript. 19 | Events("onChange") 20 | 21 | // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread. 22 | Function("hello") { 23 | return "Hello world! 👋" 24 | } 25 | 26 | // Defines a JavaScript function that always returns a Promise and whose native code 27 | // is by default dispatched on the different thread than the JavaScript runtime runs on. 28 | AsyncFunction("setValueAsync") { (value: String) in 29 | // Send an event to JavaScript. 30 | self.sendEvent("onChange", [ 31 | "value": value 32 | ]) 33 | } 34 | 35 | AsyncFunction("checkAppsInstalled") { (packageNames: [String], promise: Promise) in 36 | var result: [String: Bool] = [:] 37 | 38 | for packageName in packageNames { 39 | if let url = URL(string: packageName), UIApplication.shared.canOpenURL(url) { 40 | result[packageName] = true 41 | } else { 42 | result[packageName] = false 43 | } 44 | } 45 | 46 | promise.resolve(result) 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /example/android/app/src/main/java/expo/modules/checkinstalledapps/example/MainApplication.kt: -------------------------------------------------------------------------------- 1 | package expo.modules.checkinstalledapps.example 2 | 3 | import android.app.Application 4 | import android.content.res.Configuration 5 | 6 | import com.facebook.react.PackageList 7 | import com.facebook.react.ReactApplication 8 | import com.facebook.react.ReactNativeHost 9 | import com.facebook.react.ReactPackage 10 | import com.facebook.react.ReactHost 11 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load 12 | import com.facebook.react.defaults.DefaultReactNativeHost 13 | import com.facebook.soloader.SoLoader 14 | 15 | import expo.modules.ApplicationLifecycleDispatcher 16 | import expo.modules.ReactNativeHostWrapper 17 | 18 | class MainApplication : Application(), ReactApplication { 19 | 20 | override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper( 21 | this, 22 | object : DefaultReactNativeHost(this) { 23 | override fun getPackages(): List { 24 | // Packages that cannot be autolinked yet can be added manually here, for example: 25 | // packages.add(new MyReactNativePackage()); 26 | return PackageList(this).packages 27 | } 28 | 29 | override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry" 30 | 31 | override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG 32 | 33 | override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED 34 | override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED 35 | } 36 | ) 37 | 38 | override val reactHost: ReactHost 39 | get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost) 40 | 41 | override fun onCreate() { 42 | super.onCreate() 43 | SoLoader.init(this, false) 44 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 45 | // If you opted-in for the New Architecture, we load the native entry point for this app. 46 | load() 47 | } 48 | ApplicationLifecycleDispatcher.onApplicationCreate(this) 49 | } 50 | 51 | override fun onConfigurationChanged(newConfig: Configuration) { 52 | super.onConfigurationChanged(newConfig) 53 | ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig) 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /.github/workflows/RELEASE_AND_PUBLISH_TO_NPM.yml: -------------------------------------------------------------------------------- 1 | name: Publish to NPM and Release on Github 2 | on: 3 | workflow_dispatch: # Allows manual triggering of the workflow 4 | 5 | permissions: 6 | contents: write 7 | 8 | jobs: 9 | release: 10 | name: Bump Version, Build, and Publish to NPM 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Checkout code 15 | uses: actions/checkout@v3 16 | 17 | - name: Set up Node.js 18 | uses: actions/setup-node@v3 19 | with: 20 | node-version: 21 21 | cache: "npm" 22 | registry-url: "https://registry.npmjs.org" 23 | 24 | - name: Install dependencies 25 | run: npm install 26 | 27 | - name: Bump Version 28 | id: bump-version 29 | run: | 30 | NEW_VERSION=$(npm version patch --no-git-tag-version) 31 | echo "NEW_VERSION=${NEW_VERSION}" >> $GITHUB_ENV 32 | echo "Updated version to ${NEW_VERSION}" 33 | 34 | - name: Commit and Push New Version 35 | env: 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | run: | 38 | git config user.name "GitHub Actions" 39 | git config user.email "actions@github.com" 40 | git add package.json package-lock.json 41 | git commit -m "chore: bump version to ${{ env.NEW_VERSION }}" 42 | git push origin main 43 | 44 | - name: Build package 45 | run: npm run build 46 | 47 | - name: Publish to npm 48 | env: 49 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 50 | run: npm publish 51 | 52 | - name: Create GitHub Release 53 | uses: softprops/action-gh-release@v2 54 | with: 55 | tag_name: "${{ env.NEW_VERSION }}" # Use the version passed from the build job 56 | name: "Release ${{ env.NEW_VERSION }}" # Name the release with the version. 57 | generate_release_notes: true # Generate release notes 58 | draft: false # The release will not be a draft. 59 | prerelease: false # The release will not be a pre-release. 60 | body: | 61 | New release of **expo-check-installed-apps** is available. 62 | - Version: ${{ env.NEW_VERSION }} 63 | - [Explore the new release on NPM](https://www.npmjs.com/package/expo-check-installed-apps) 64 | env: 65 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 66 | -------------------------------------------------------------------------------- /example/android/app/src/main/java/expo/modules/checkinstalledapps/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package expo.modules.checkinstalledapps.example 2 | 3 | import android.os.Build 4 | import android.os.Bundle 5 | 6 | import com.facebook.react.ReactActivity 7 | import com.facebook.react.ReactActivityDelegate 8 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled 9 | import com.facebook.react.defaults.DefaultReactActivityDelegate 10 | 11 | import expo.modules.ReactActivityDelegateWrapper 12 | 13 | class MainActivity : ReactActivity() { 14 | override fun onCreate(savedInstanceState: Bundle?) { 15 | // Set the theme to AppTheme BEFORE onCreate to support 16 | // coloring the background, status bar, and navigation bar. 17 | // This is required for expo-splash-screen. 18 | setTheme(R.style.AppTheme); 19 | super.onCreate(null) 20 | } 21 | 22 | /** 23 | * Returns the name of the main component registered from JavaScript. This is used to schedule 24 | * rendering of the component. 25 | */ 26 | override fun getMainComponentName(): String = "main" 27 | 28 | /** 29 | * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] 30 | * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] 31 | */ 32 | override fun createReactActivityDelegate(): ReactActivityDelegate { 33 | return ReactActivityDelegateWrapper( 34 | this, 35 | BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, 36 | object : DefaultReactActivityDelegate( 37 | this, 38 | mainComponentName, 39 | fabricEnabled 40 | ){}) 41 | } 42 | 43 | /** 44 | * Align the back button behavior with Android S 45 | * where moving root activities to background instead of finishing activities. 46 | * @see onBackPressed 47 | */ 48 | override fun invokeDefaultOnBackPressed() { 49 | if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { 50 | if (!moveTaskToBack(false)) { 51 | // For non-root activities, use the default implementation to finish them. 52 | super.invokeDefaultOnBackPressed() 53 | } 54 | return 55 | } 56 | 57 | // Use the default back button implementation on Android S 58 | // because it's doing more than [Activity.moveTaskToBack] in fact. 59 | super.invokeDefaultOnBackPressed() 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m 13 | org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | 25 | # Automatically convert third-party libraries to use AndroidX 26 | android.enableJetifier=true 27 | 28 | # Enable AAPT2 PNG crunching 29 | android.enablePngCrunchInReleaseBuilds=true 30 | 31 | # Use this property to specify which architecture you want to build. 32 | # You can also override it from the CLI using 33 | # ./gradlew -PreactNativeArchitectures=x86_64 34 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 35 | 36 | # Use this property to enable support to the new architecture. 37 | # This will allow you to use TurboModules and the Fabric render in 38 | # your application. You should enable this flag either if you want 39 | # to write custom TurboModules/Fabric components OR use libraries that 40 | # are providing them. 41 | newArchEnabled=false 42 | 43 | # Use this property to enable or disable the Hermes JS engine. 44 | # If set to false, you will be using JSC instead. 45 | hermesEnabled=true 46 | 47 | # Enable GIF support in React Native images (~200 B increase) 48 | expo.gif.enabled=true 49 | # Enable webp support in React Native images (~85 KB increase) 50 | expo.webp.enabled=true 51 | # Enable animated webp support (~3.4 MB increase) 52 | # Disabled by default because iOS doesn't support animated webp 53 | expo.webp.animated=false 54 | 55 | # Enable network inspector 56 | EX_DEV_CLIENT_NETWORK_INSPECTOR=true 57 | 58 | # Use legacy packaging to compress native libraries in the resulting APK. 59 | expo.useLegacyPackaging=false 60 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CADisableMinimumFrameDurationOnPhone 6 | 7 | CFBundleDevelopmentRegion 8 | $(DEVELOPMENT_LANGUAGE) 9 | CFBundleDisplayName 10 | expo-check-installed-apps-example 11 | CFBundleExecutable 12 | $(EXECUTABLE_NAME) 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | $(PRODUCT_NAME) 19 | CFBundlePackageType 20 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 21 | CFBundleShortVersionString 22 | 1.0.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleURLTypes 26 | 27 | 28 | CFBundleURLSchemes 29 | 30 | expo.modules.checkinstalledapps.example 31 | 32 | 33 | 34 | CFBundleVersion 35 | 1 36 | LSApplicationQueriesSchemes 37 | 38 | fb 39 | twitter 40 | 41 | LSRequiresIPhoneOS 42 | 43 | NSAppTransportSecurity 44 | 45 | NSAllowsArbitraryLoads 46 | 47 | NSAllowsLocalNetworking 48 | 49 | 50 | UILaunchStoryboardName 51 | SplashScreen 52 | UIRequiredDeviceCapabilities 53 | 54 | arm64 55 | 56 | UIRequiresFullScreen 57 | 58 | UIStatusBarStyle 59 | UIStatusBarStyleDefault 60 | UISupportedInterfaceOrientations 61 | 62 | UIInterfaceOrientationPortrait 63 | UIInterfaceOrientationPortraitUpsideDown 64 | 65 | UISupportedInterfaceOrientations~ipad 66 | 67 | UIInterfaceOrientationPortrait 68 | UIInterfaceOrientationPortraitUpsideDown 69 | UIInterfaceOrientationLandscapeLeft 70 | UIInterfaceOrientationLandscapeRight 71 | 72 | UIUserInterfaceStyle 73 | Light 74 | UIViewControllerBasedStatusBarAppearance 75 | 76 | 77 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | def version = providers.exec { 3 | commandLine("node", "-e", "console.log(require('react-native/package.json').version);") 4 | }.standardOutput.asText.get().trim() 5 | def (_, reactNativeMinor, reactNativePatch) = version.split("-")[0].tokenize('.').collect { it.toInteger() } 6 | 7 | includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile().toString()) 8 | if(reactNativeMinor == 74 && reactNativePatch <= 3){ 9 | includeBuild("react-settings-plugin") 10 | } 11 | } 12 | 13 | plugins { id("com.facebook.react.settings") } 14 | 15 | def getRNMinorVersion() { 16 | def version = providers.exec { 17 | commandLine("node", "-e", "console.log(require('react-native/package.json').version);") 18 | }.standardOutput.asText.get().trim() 19 | 20 | def coreVersion = version.split("-")[0] 21 | def (major, minor, patch) = coreVersion.tokenize('.').collect { it.toInteger() } 22 | 23 | return minor 24 | } 25 | 26 | if (getRNMinorVersion() >= 75) { 27 | extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> 28 | if (System.getenv('EXPO_UNSTABLE_CORE_AUTOLINKING') == '1') { 29 | println('\u001B[32mUsing expo-modules-autolinking as core autolinking source\u001B[0m') 30 | def command = [ 31 | 'node', 32 | '--no-warnings', 33 | '--eval', 34 | 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))', 35 | 'react-native-config', 36 | '--json', 37 | '--platform', 38 | 'android' 39 | ].toList() 40 | ex.autolinkLibrariesFromCommand(command) 41 | } else { 42 | ex.autolinkLibrariesFromCommand() 43 | } 44 | } 45 | } 46 | 47 | rootProject.name = 'expo-check-installed-apps-example' 48 | 49 | dependencyResolutionManagement { 50 | versionCatalogs { 51 | reactAndroidLibs { 52 | from(files(new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../gradle/libs.versions.toml"))) 53 | } 54 | } 55 | } 56 | 57 | apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle"); 58 | useExpoModules() 59 | 60 | if (getRNMinorVersion() < 75) { 61 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 62 | applyNativeModulesSettingsGradle(settings) 63 | } 64 | 65 | include ':app' 66 | includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile()) 67 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | #import 4 | #import 5 | 6 | @implementation AppDelegate 7 | 8 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 9 | { 10 | self.moduleName = @"main"; 11 | 12 | // You can add your custom initial props in the dictionary below. 13 | // They will be passed down to the ViewController used by React Native. 14 | self.initialProps = @{}; 15 | 16 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 17 | } 18 | 19 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 20 | { 21 | return [self bundleURL]; 22 | } 23 | 24 | - (NSURL *)bundleURL 25 | { 26 | #if DEBUG 27 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"]; 28 | #else 29 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 30 | #endif 31 | } 32 | 33 | // Linking API 34 | - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { 35 | return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; 36 | } 37 | 38 | // Universal Links 39 | - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { 40 | BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; 41 | return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; 42 | } 43 | 44 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 45 | - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 46 | { 47 | return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 48 | } 49 | 50 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 51 | - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 52 | { 53 | return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; 54 | } 55 | 56 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 57 | - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 58 | { 59 | return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /android/src/main/java/expo/modules/checkinstalledapps/ExpoCheckInstalledAppsModule.kt: -------------------------------------------------------------------------------- 1 | package expo.modules.checkinstalledapps 2 | 3 | import expo.modules.kotlin.modules.Module 4 | import expo.modules.kotlin.modules.ModuleDefinition 5 | import android.content.pm.PackageManager 6 | import expo.modules.kotlin.Promise 7 | 8 | class ExpoCheckInstalledAppsModule : Module() { 9 | // Each module class must implement the definition function. The definition consists of components 10 | // that describes the module's functionality and behavior. 11 | // See https://docs.expo.dev/modules/module-api for more details about available components. 12 | override fun definition() = ModuleDefinition { 13 | // Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument. 14 | // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity. 15 | // The module will be accessible from `requireNativeModule('ExpoCheckInstalledApps')` in JavaScript. 16 | Name("ExpoCheckInstalledApps") 17 | 18 | // Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary. 19 | Constants( 20 | "PI" to Math.PI 21 | ) 22 | 23 | // Defines event names that the module can send to JavaScript. 24 | Events("onChange") 25 | 26 | // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread. 27 | Function("hello") { 28 | "Hello world! I am android👋" 29 | } 30 | 31 | // Defines a JavaScript function that always returns a Promise and whose native code 32 | // is by default dispatched on the different thread than the JavaScript runtime runs on. 33 | AsyncFunction("setValueAsync") { value: String -> 34 | // Send an event to JavaScript. 35 | sendEvent("onChange", mapOf( 36 | "value" to value 37 | )) 38 | } 39 | 40 | // An asynchronous function that takes a list of package names and returns their installation status. 41 | AsyncFunction("checkAppsInstalled") { packageNames: Array, promise: Promise -> 42 | // Call the function to check installed apps and return the result 43 | checkAppsInstalled(packageNames, promise) 44 | } 45 | 46 | } 47 | 48 | private val context 49 | get() = requireNotNull(appContext.reactContext) 50 | 51 | // Function to check if multiple apps are installed and resolve the promise with the result 52 | private fun checkAppsInstalled(packageNames: Array, promise: Promise) { 53 | val pm: PackageManager = context.packageManager 54 | val result = mutableMapOf() 55 | 56 | // Iterate through the package names and check if each app is installed 57 | for (packageName in packageNames) { 58 | try { 59 | pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES) 60 | result[packageName] = true // App is installed 61 | } catch (e: PackageManager.NameNotFoundException) { 62 | result[packageName] = false // App is not installed 63 | } 64 | } 65 | 66 | // Resolve the promise with the map of package names and installation statuses 67 | promise.resolve(result) 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /example/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 1>&2 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 48 | echo. 1>&2 49 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 50 | echo location of your Java installation. 1>&2 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 1>&2 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 62 | echo. 1>&2 63 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 64 | echo location of your Java installation. 1>&2 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /example/ios/Podfile: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") 2 | require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") 3 | 4 | require 'json' 5 | podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} 6 | 7 | ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' 8 | ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] 9 | 10 | use_autolinking_method_symbol = ('use' + '_native' + '_modules!').to_sym 11 | origin_autolinking_method = self.method(use_autolinking_method_symbol) 12 | self.define_singleton_method(use_autolinking_method_symbol) do |*args| 13 | if ENV['EXPO_UNSTABLE_CORE_AUTOLINKING'] == '1' 14 | Pod::UI.puts('Using expo-modules-autolinking as core autolinking source'.green) 15 | config_command = [ 16 | 'node', 17 | '--no-warnings', 18 | '--eval', 19 | 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))', 20 | 'react-native-config', 21 | '--json', 22 | '--platform', 23 | 'ios' 24 | ] 25 | origin_autolinking_method.call(config_command) 26 | else 27 | origin_autolinking_method.call() 28 | end 29 | end 30 | 31 | platform :ios, podfile_properties['ios.deploymentTarget'] || '13.4' 32 | install! 'cocoapods', 33 | :deterministic_uuids => false 34 | 35 | prepare_react_native_project! 36 | 37 | target 'expocheckinstalledappsexample' do 38 | use_expo_modules! 39 | config = use_native_modules! 40 | 41 | use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] 42 | use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] 43 | 44 | use_react_native!( 45 | :path => config[:reactNativePath], 46 | :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', 47 | # An absolute path to your application root. 48 | :app_path => "#{Pod::Config.instance.installation_root}/..", 49 | :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false', 50 | ) 51 | 52 | post_install do |installer| 53 | react_native_post_install( 54 | installer, 55 | config[:reactNativePath], 56 | :mac_catalyst_enabled => false, 57 | :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true', 58 | ) 59 | 60 | # This is necessary for Xcode 14, because it signs resource bundles by default 61 | # when building for devices. 62 | installer.target_installation_results.pod_target_installation_results 63 | .each do |pod_name, target_installation_result| 64 | target_installation_result.resource_bundle_targets.each do |resource_bundle_target| 65 | resource_bundle_target.build_configurations.each do |config| 66 | config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' 67 | end 68 | end 69 | end 70 | end 71 | 72 | post_integrate do |installer| 73 | begin 74 | expo_patch_react_imports!(installer) 75 | rescue => e 76 | Pod::UI.warn e 77 | end 78 | end 79 | end 80 | -------------------------------------------------------------------------------- /plugin/src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | withAndroidManifest, 3 | withInfoPlist, 4 | ConfigPlugin, 5 | } from "@expo/config-plugins"; 6 | 7 | interface PluginOptions { 8 | android?: string[]; 9 | ios?: string[]; 10 | } 11 | 12 | const withAndroid: ConfigPlugin = (config, { android }) => { 13 | config = withAndroidManifest(config, (config) => { 14 | const manifest = config.modResults.manifest; 15 | 16 | // Ensure `manifest` exists and is valid 17 | if (!manifest) { 18 | throw new Error("AndroidManifest.xml is invalid or missing!"); 19 | } 20 | 21 | // Ensure `queries` exists 22 | if (!manifest.queries) { 23 | manifest.queries = []; 24 | } 25 | 26 | // Get the first `` block or create one if none exists 27 | let queriesBlock = manifest.queries.find((query) => query.package); 28 | 29 | if (!queriesBlock) { 30 | // If no `` block exists, create one 31 | queriesBlock = { package: [] }; 32 | manifest.queries.push(queriesBlock); 33 | } 34 | 35 | // Ensure `queriesBlock.package` exists 36 | if (!queriesBlock.package) { 37 | queriesBlock.package = []; 38 | } 39 | 40 | // Extract current packages from the manifest 41 | const currentPackages = new Set( 42 | queriesBlock.package?.map((pkg: any) => pkg.$["android:name"]) || [] 43 | ); 44 | 45 | // Convert the `android` array from `app.json` into a Set for easy comparison 46 | const desiredPackages = new Set(android || []); 47 | 48 | // Determine packages to add and remove 49 | const packagesToAdd = Array.from(desiredPackages).filter( 50 | (pkg) => !currentPackages.has(pkg) 51 | ); 52 | const packagesToRemove = Array.from(currentPackages).filter( 53 | (pkg) => !desiredPackages.has(pkg) 54 | ); 55 | 56 | // Add new packages 57 | packagesToAdd.forEach((pkg) => { 58 | queriesBlock!.package!.push({ $: { "android:name": pkg } }); 59 | }); 60 | 61 | // Remove packages no longer in `app.json` 62 | queriesBlock.package = queriesBlock.package!.filter( 63 | (pkg: any) => !packagesToRemove.includes(pkg.$["android:name"]) 64 | ); 65 | 66 | return config; 67 | }); 68 | 69 | return config; 70 | }; 71 | 72 | const withIos: ConfigPlugin = (config, { ios }) => { 73 | if (!ios || ios.length === 0) { 74 | return config; 75 | } 76 | 77 | config = withInfoPlist(config, (config) => { 78 | const plist = config.modResults; 79 | 80 | // Ensure `LSApplicationQueriesSchemes` exists 81 | if (!plist.LSApplicationQueriesSchemes) { 82 | plist.LSApplicationQueriesSchemes = []; 83 | } 84 | 85 | // Avoid duplicates by adding only new schemes 86 | plist.LSApplicationQueriesSchemes = Array.from( 87 | new Set([...plist.LSApplicationQueriesSchemes, ...ios]) 88 | ); 89 | 90 | return config; 91 | }); 92 | 93 | return config; 94 | }; 95 | 96 | /** 97 | * Apply all above plugins 98 | */ 99 | const withExpoCheckInstalledApps: ConfigPlugin = ( 100 | config, 101 | opts 102 | ) => { 103 | config = withAndroid(config, opts); 104 | config = withIos(config, opts); 105 | return config; 106 | }; 107 | 108 | export default withExpoCheckInstalledApps; 109 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample.xcodeproj/xcshareddata/xcschemes/expocheckinstalledappsexample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample/SplashScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Expo Check Installed Apps 2 | 3 |
4 | npm version 5 | npm downloads 6 |
7 | 8 | 9 | A **config plugin** for Expo to check for the existence of installed apps on Android and iOS. 10 | 11 | > **Note:** This library supports **Expo SDK 51 and above**. 12 | 13 | --- 14 | 15 | ## Table of Contents 16 | 17 | - [Installation](#installation) 18 | - [For Managed Expo Projects](#installation-in-managed-expo-projects) 19 | - [For Bare React Native Projects](#installation-in-bare-react-native-projects) 20 | - [Setup](#setup) 21 | - [Automatic Configuration](#automatic-configuration) 22 | - [Manual Configuration](#manual-configuration) 23 | - [API Documentation](#api-documentation) 24 | - [`checkInstalledApps`](#checkinstalledapps) 25 | - [Example Usage](#example-usage) 26 | - [Contributing](#contributing) 27 | - [Support the Project](#support-the-project) 28 | 29 | --- 30 | 31 | ## Installation 32 | 33 | You can find the package on npm: [expo-check-installed-apps](https://www.npmjs.com/package/expo-check-installed-apps). 34 | 35 | ### Installation in Managed Expo Projects 36 | 37 | For [managed Expo projects](https://docs.expo.dev/archive/managed-vs-bare/), follow the installation instructions in the [API documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/android-check-installed-apps/). 38 | 39 | > If documentation for managed projects is unavailable, this library may not yet be supported within managed workflows and is likely to be included in an upcoming Expo SDK release. 40 | 41 | ### Installation in Bare React Native Projects 42 | 43 | For bare React Native projects, ensure you have [installed and configured the `expo` package](https://docs.expo.dev/bare/installing-expo-modules/) before proceeding. 44 | 45 | Install the package via npm: 46 | 47 | ```bash 48 | npm install expo-check-installed-apps 49 | ``` 50 | 51 | --- 52 | 53 | ## Setup 54 | 55 | ### Automatic Configuration 56 | 57 | If using Expo's **prebuild method**, you can configure the plugin automatically in your `app.json` or `app.config.js` file. Specify the package names and URL schemes for the apps you want to check: 58 | 59 | ```json 60 | { 61 | "expo": { 62 | "plugins": [ 63 | [ 64 | "expo-check-installed-apps", 65 | { 66 | "android": ["com.facebook.katana", "com.twitter.android"], 67 | "ios": ["fb", "twitter"] 68 | } 69 | ] 70 | ] 71 | } 72 | } 73 | ``` 74 | 75 | ### Manual Configuration 76 | 77 | If you are not using `app.json` or `app.config.js`, you'll need to manually update your native project files. 78 | 79 | #### Android 80 | 81 | Add the package names to your `AndroidManifest.xml`: 82 | 83 | ```xml 84 | 85 | 86 | 87 | 88 | 89 | 90 | ``` 91 | 92 | #### iOS 93 | 94 | Add the URL schemes to your `Info.plist`: 95 | 96 | ```xml 97 | LSApplicationQueriesSchemes 98 | 99 | fb 100 | twitter 101 | 102 | ``` 103 | 104 | --- 105 | 106 | ## API Documentation 107 | 108 | ### `checkInstalledApps` 109 | 110 | Checks whether specific apps are installed on the user's device. 111 | 112 | #### Parameters 113 | 114 | - **`packageNames`** (`Array`): 115 | An array of package names (for Android) or URL schemes (for iOS) to check. 116 | 117 | #### Returns 118 | 119 | - **`Promise>`**: 120 | Resolves to an object where keys are package names or URL schemes, and values are booleans: 121 | - `true`: App is installed. 122 | - `false`: App is not installed. 123 | 124 | --- 125 | 126 | ## Example Usage 127 | 128 | ```typescript 129 | import { checkInstalledApps } from "expo-check-installed-apps"; 130 | import { Platform } from "react-native"; 131 | 132 | const packageNames: string[] = 133 | Platform.select({ 134 | android: ["com.google.android.apps.fitness", "com.android.chrome"], // Use package name of android apps 135 | ios: ["fb://", "twitter://"], // Use proper url scheme of ios apps 136 | }) || []; 137 | 138 | checkInstalledApps(packageNames) 139 | .then((installedApps) => { 140 | console.log(installedApps); 141 | }) 142 | .catch((error) => { 143 | console.error("Error checking installed apps:", error); 144 | }); 145 | ``` 146 | 147 | ### Example Response 148 | 149 | ```json 150 | { 151 | "com.google.android.apps.fitness": false, 152 | "com.android.chrome": true, 153 | "fb://": true, 154 | "twitter://": false 155 | } 156 | ``` 157 | 158 | --- 159 | 160 | ## Contributing 161 | 162 | Contributions are welcome! 163 | 164 | --- 165 | 166 | ## Support the Project 167 | 168 | If you find this library helpful, consider supporting it: 169 | 170 | [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support%20Me-orange?logo=buymeacoffee)](https://www.buymeacoffee.com/mantu.728) 171 | [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue?logo=paypal)](https://paypal.me/Monty728) 172 | -------------------------------------------------------------------------------- /example/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | apply plugin: "org.jetbrains.kotlin.android" 3 | apply plugin: "com.facebook.react" 4 | 5 | def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() 6 | 7 | static def versionToNumber(major, minor, patch) { 8 | return patch * 100 + minor * 10000 + major * 1000000 9 | } 10 | 11 | def getRNVersion() { 12 | def version = providers.exec { 13 | workingDir(projectDir) 14 | commandLine("node", "-e", "console.log(require('react-native/package.json').version);") 15 | }.standardOutput.asText.get().trim() 16 | 17 | def coreVersion = version.split("-")[0] 18 | def (major, minor, patch) = coreVersion.tokenize('.').collect { it.toInteger() } 19 | 20 | return versionToNumber( 21 | major, 22 | minor, 23 | patch 24 | ) 25 | } 26 | def rnVersion = getRNVersion() 27 | 28 | /** 29 | * This is the configuration block to customize your React Native Android app. 30 | * By default you don't need to apply any configuration, just uncomment the lines you need. 31 | */ 32 | react { 33 | entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) 34 | reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() 35 | hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" 36 | codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() 37 | 38 | // Use Expo CLI to bundle the app, this ensures the Metro config 39 | // works correctly with Expo projects. 40 | cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim()) 41 | bundleCommand = "export:embed" 42 | 43 | /* Folders */ 44 | // The root of your project, i.e. where "package.json" lives. Default is '..' 45 | // root = file("../") 46 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native 47 | // reactNativeDir = file("../node_modules/react-native") 48 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen 49 | // codegenDir = file("../node_modules/@react-native/codegen") 50 | 51 | /* Variants */ 52 | // The list of variants to that are debuggable. For those we're going to 53 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'. 54 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. 55 | // debuggableVariants = ["liteDebug", "prodDebug"] 56 | 57 | /* Bundling */ 58 | // A list containing the node command and its flags. Default is just 'node'. 59 | // nodeExecutableAndArgs = ["node"] 60 | 61 | // 62 | // The path to the CLI configuration file. Default is empty. 63 | // bundleConfig = file(../rn-cli.config.js) 64 | // 65 | // The name of the generated asset file containing your JS bundle 66 | // bundleAssetName = "MyApplication.android.bundle" 67 | // 68 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' 69 | // entryFile = file("../js/MyApplication.android.js") 70 | // 71 | // A list of extra flags to pass to the 'bundle' commands. 72 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle 73 | // extraPackagerArgs = [] 74 | 75 | /* Hermes Commands */ 76 | // The hermes compiler command to run. By default it is 'hermesc' 77 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" 78 | // 79 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" 80 | // hermesFlags = ["-O", "-output-source-map"] 81 | 82 | if (rnVersion >= versionToNumber(0, 75, 0)) { 83 | /* Autolinking */ 84 | autolinkLibrariesWithApp() 85 | } 86 | } 87 | 88 | /** 89 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode. 90 | */ 91 | def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean() 92 | 93 | /** 94 | * The preferred build flavor of JavaScriptCore (JSC) 95 | * 96 | * For example, to use the international variant, you can use: 97 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 98 | * 99 | * The international variant includes ICU i18n library and necessary data 100 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 101 | * give correct results when using with locales other than en-US. Note that 102 | * this variant is about 6MiB larger per architecture than default. 103 | */ 104 | def jscFlavor = 'org.webkit:android-jsc:+' 105 | 106 | android { 107 | ndkVersion rootProject.ext.ndkVersion 108 | 109 | buildToolsVersion rootProject.ext.buildToolsVersion 110 | compileSdk rootProject.ext.compileSdkVersion 111 | 112 | namespace 'expo.modules.checkinstalledapps.example' 113 | defaultConfig { 114 | applicationId 'expo.modules.checkinstalledapps.example' 115 | minSdkVersion rootProject.ext.minSdkVersion 116 | targetSdkVersion rootProject.ext.targetSdkVersion 117 | versionCode 1 118 | versionName "1.0.0" 119 | } 120 | signingConfigs { 121 | debug { 122 | storeFile file('debug.keystore') 123 | storePassword 'android' 124 | keyAlias 'androiddebugkey' 125 | keyPassword 'android' 126 | } 127 | } 128 | buildTypes { 129 | debug { 130 | signingConfig signingConfigs.debug 131 | } 132 | release { 133 | // Caution! In production, you need to generate your own keystore file. 134 | // see https://reactnative.dev/docs/signed-apk-android. 135 | signingConfig signingConfigs.debug 136 | shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) 137 | minifyEnabled enableProguardInReleaseBuilds 138 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 139 | crunchPngs (findProperty('android.enablePngCrunchInReleaseBuilds')?.toBoolean() ?: true) 140 | } 141 | } 142 | packagingOptions { 143 | jniLibs { 144 | useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false) 145 | } 146 | } 147 | } 148 | 149 | // Apply static values from `gradle.properties` to the `android.packagingOptions` 150 | // Accepts values in comma delimited lists, example: 151 | // android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini 152 | ["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> 153 | // Split option: 'foo,bar' -> ['foo', 'bar'] 154 | def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); 155 | // Trim all elements in place. 156 | for (i in 0.. 0) { 161 | println "android.packagingOptions.$prop += $options ($options.length)" 162 | // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' 163 | options.each { 164 | android.packagingOptions[prop] += it 165 | } 166 | } 167 | } 168 | 169 | dependencies { 170 | // The version of react-native is set by the React Native Gradle Plugin 171 | implementation("com.facebook.react:react-android") 172 | 173 | def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; 174 | def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; 175 | def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; 176 | 177 | if (isGifEnabled) { 178 | // For animated gif support 179 | implementation("com.facebook.fresco:animated-gif:${reactAndroidLibs.versions.fresco.get()}") 180 | } 181 | 182 | if (isWebpEnabled) { 183 | // For webp support 184 | implementation("com.facebook.fresco:webpsupport:${reactAndroidLibs.versions.fresco.get()}") 185 | if (isWebpAnimatedEnabled) { 186 | // Animated webp support 187 | implementation("com.facebook.fresco:animated-webp:${reactAndroidLibs.versions.fresco.get()}") 188 | } 189 | } 190 | 191 | if (hermesEnabled.toBoolean()) { 192 | implementation("com.facebook.react:hermes-android") 193 | } else { 194 | implementation jscFlavor 195 | } 196 | } 197 | 198 | if (rnVersion < versionToNumber(0, 75, 0)) { 199 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 200 | applyNativeModulesAppBuildGradle(project) 201 | } 202 | -------------------------------------------------------------------------------- /example/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | # This is normally unused 84 | # shellcheck disable=SC2034 85 | APP_BASE_NAME=${0##*/} 86 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit 88 | 89 | # Use the maximum available, or set MAX_FD != -1 to use that value. 90 | MAX_FD=maximum 91 | 92 | warn () { 93 | echo "$*" 94 | } >&2 95 | 96 | die () { 97 | echo 98 | echo "$*" 99 | echo 100 | exit 1 101 | } >&2 102 | 103 | # OS specific support (must be 'true' or 'false'). 104 | cygwin=false 105 | msys=false 106 | darwin=false 107 | nonstop=false 108 | case "$( uname )" in #( 109 | CYGWIN* ) cygwin=true ;; #( 110 | Darwin* ) darwin=true ;; #( 111 | MSYS* | MINGW* ) msys=true ;; #( 112 | NONSTOP* ) nonstop=true ;; 113 | esac 114 | 115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 116 | 117 | 118 | # Determine the Java command to use to start the JVM. 119 | if [ -n "$JAVA_HOME" ] ; then 120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 121 | # IBM's JDK on AIX uses strange locations for the executables 122 | JAVACMD=$JAVA_HOME/jre/sh/java 123 | else 124 | JAVACMD=$JAVA_HOME/bin/java 125 | fi 126 | if [ ! -x "$JAVACMD" ] ; then 127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 128 | 129 | Please set the JAVA_HOME variable in your environment to match the 130 | location of your Java installation." 131 | fi 132 | else 133 | JAVACMD=java 134 | if ! command -v java >/dev/null 2>&1 135 | then 136 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | fi 142 | 143 | # Increase the maximum file descriptors if we can. 144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 145 | case $MAX_FD in #( 146 | max*) 147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 148 | # shellcheck disable=SC2039,SC3045 149 | MAX_FD=$( ulimit -H -n ) || 150 | warn "Could not query maximum file descriptor limit" 151 | esac 152 | case $MAX_FD in #( 153 | '' | soft) :;; #( 154 | *) 155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 156 | # shellcheck disable=SC2039,SC3045 157 | ulimit -n "$MAX_FD" || 158 | warn "Could not set maximum file descriptor limit to $MAX_FD" 159 | esac 160 | fi 161 | 162 | # Collect all arguments for the java command, stacking in reverse order: 163 | # * args from the command line 164 | # * the main class name 165 | # * -classpath 166 | # * -D...appname settings 167 | # * --module-path (only if needed) 168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 169 | 170 | # For Cygwin or MSYS, switch paths to Windows format before running java 171 | if "$cygwin" || "$msys" ; then 172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 174 | 175 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 176 | 177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 178 | for arg do 179 | if 180 | case $arg in #( 181 | -*) false ;; # don't mess with options #( 182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 183 | [ -e "$t" ] ;; #( 184 | *) false ;; 185 | esac 186 | then 187 | arg=$( cygpath --path --ignore --mixed "$arg" ) 188 | fi 189 | # Roll the args list around exactly as many times as the number of 190 | # args, so each arg winds up back in the position where it started, but 191 | # possibly modified. 192 | # 193 | # NB: a `for` loop captures its iteration list before it begins, so 194 | # changing the positional parameters here affects neither the number of 195 | # iterations, nor the values presented in `arg`. 196 | shift # remove old arg 197 | set -- "$@" "$arg" # push replacement arg 198 | done 199 | fi 200 | 201 | 202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 204 | 205 | # Collect all arguments for the java command: 206 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 207 | # and any embedded shellness will be escaped. 208 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 209 | # treated as '${Hostname}' itself on the command line. 210 | 211 | set -- \ 212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 213 | -classpath "$CLASSPATH" \ 214 | org.gradle.wrapper.GradleWrapperMain \ 215 | "$@" 216 | 217 | # Stop when "xargs" is not available. 218 | if ! command -v xargs >/dev/null 2>&1 219 | then 220 | die "xargs is not available" 221 | fi 222 | 223 | # Use "xargs" to parse quoted args. 224 | # 225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 226 | # 227 | # In Bash we could simply go: 228 | # 229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 230 | # set -- "${ARGS[@]}" "$@" 231 | # 232 | # but POSIX shell has neither arrays nor command substitution, so instead we 233 | # post-process each arg (as a line of input to sed) to backslash-escape any 234 | # character that might be a shell metacharacter, then use eval to reverse 235 | # that process (while maintaining the separation between arguments), and wrap 236 | # the whole thing up as a single "set" statement. 237 | # 238 | # This will of course break if any of these variables contains a newline or 239 | # an unmatched quote. 240 | # 241 | 242 | eval "set -- $( 243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 244 | xargs -n1 | 245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 246 | tr '\n' ' ' 247 | )" '"$@"' 248 | 249 | exec "$JAVACMD" "$@" 250 | -------------------------------------------------------------------------------- /example/ios/expocheckinstalledappsexample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 11 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 12 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 14 | 6E450670F8B643378A1454B4 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6D5EE6516A48A2A147C52D /* noop-file.swift */; }; 15 | 96905EF65AED1B983A6B3ABC /* libPods-expocheckinstalledappsexample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-expocheckinstalledappsexample.a */; }; 16 | 9901D8E45CE50C73CC913900 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 180A3948227DEBA10760199B /* PrivacyInfo.xcprivacy */; }; 17 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; 18 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXFileReference section */ 22 | 13B07F961A680F5B00A75B9A /* expocheckinstalledappsexample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = expocheckinstalledappsexample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 23 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = expocheckinstalledappsexample/AppDelegate.h; sourceTree = ""; }; 24 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = expocheckinstalledappsexample/AppDelegate.mm; sourceTree = ""; }; 25 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = expocheckinstalledappsexample/Images.xcassets; sourceTree = ""; }; 26 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = expocheckinstalledappsexample/Info.plist; sourceTree = ""; }; 27 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = expocheckinstalledappsexample/main.m; sourceTree = ""; }; 28 | 155C7A5582824F0784990C45 /* expocheckinstalledappsexample-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "expocheckinstalledappsexample-Bridging-Header.h"; path = "expocheckinstalledappsexample/expocheckinstalledappsexample-Bridging-Header.h"; sourceTree = ""; }; 29 | 180A3948227DEBA10760199B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = expocheckinstalledappsexample/PrivacyInfo.xcprivacy; sourceTree = ""; }; 30 | 3D6D5EE6516A48A2A147C52D /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "expocheckinstalledappsexample/noop-file.swift"; sourceTree = ""; }; 31 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-expocheckinstalledappsexample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-expocheckinstalledappsexample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 32 | 6C2E3173556A471DD304B334 /* Pods-expocheckinstalledappsexample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-expocheckinstalledappsexample.debug.xcconfig"; path = "Target Support Files/Pods-expocheckinstalledappsexample/Pods-expocheckinstalledappsexample.debug.xcconfig"; sourceTree = ""; }; 33 | 7A4D352CD337FB3A3BF06240 /* Pods-expocheckinstalledappsexample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-expocheckinstalledappsexample.release.xcconfig"; path = "Target Support Files/Pods-expocheckinstalledappsexample/Pods-expocheckinstalledappsexample.release.xcconfig"; sourceTree = ""; }; 34 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = expocheckinstalledappsexample/SplashScreen.storyboard; sourceTree = ""; }; 35 | BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; 36 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 37 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-expocheckinstalledappsexample/ExpoModulesProvider.swift"; sourceTree = ""; }; 38 | /* End PBXFileReference section */ 39 | 40 | /* Begin PBXFrameworksBuildPhase section */ 41 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 42 | isa = PBXFrameworksBuildPhase; 43 | buildActionMask = 2147483647; 44 | files = ( 45 | 96905EF65AED1B983A6B3ABC /* libPods-expocheckinstalledappsexample.a in Frameworks */, 46 | ); 47 | runOnlyForDeploymentPostprocessing = 0; 48 | }; 49 | /* End PBXFrameworksBuildPhase section */ 50 | 51 | /* Begin PBXGroup section */ 52 | 13B07FAE1A68108700A75B9A /* expocheckinstalledappsexample */ = { 53 | isa = PBXGroup; 54 | children = ( 55 | BB2F792B24A3F905000567C9 /* Supporting */, 56 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 57 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 58 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 59 | 13B07FB61A68108700A75B9A /* Info.plist */, 60 | 13B07FB71A68108700A75B9A /* main.m */, 61 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, 62 | 3D6D5EE6516A48A2A147C52D /* noop-file.swift */, 63 | 155C7A5582824F0784990C45 /* expocheckinstalledappsexample-Bridging-Header.h */, 64 | 180A3948227DEBA10760199B /* PrivacyInfo.xcprivacy */, 65 | ); 66 | name = expocheckinstalledappsexample; 67 | sourceTree = ""; 68 | }; 69 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 73 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-expocheckinstalledappsexample.a */, 74 | ); 75 | name = Frameworks; 76 | sourceTree = ""; 77 | }; 78 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | ); 82 | name = Libraries; 83 | sourceTree = ""; 84 | }; 85 | 83CBB9F61A601CBA00E9B192 = { 86 | isa = PBXGroup; 87 | children = ( 88 | 13B07FAE1A68108700A75B9A /* expocheckinstalledappsexample */, 89 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 90 | 83CBBA001A601CBA00E9B192 /* Products */, 91 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 92 | D65327D7A22EEC0BE12398D9 /* Pods */, 93 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, 94 | ); 95 | indentWidth = 2; 96 | sourceTree = ""; 97 | tabWidth = 2; 98 | usesTabs = 0; 99 | }; 100 | 83CBBA001A601CBA00E9B192 /* Products */ = { 101 | isa = PBXGroup; 102 | children = ( 103 | 13B07F961A680F5B00A75B9A /* expocheckinstalledappsexample.app */, 104 | ); 105 | name = Products; 106 | sourceTree = ""; 107 | }; 108 | 92DBD88DE9BF7D494EA9DA96 /* expocheckinstalledappsexample */ = { 109 | isa = PBXGroup; 110 | children = ( 111 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, 112 | ); 113 | name = expocheckinstalledappsexample; 114 | sourceTree = ""; 115 | }; 116 | BB2F792B24A3F905000567C9 /* Supporting */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | BB2F792C24A3F905000567C9 /* Expo.plist */, 120 | ); 121 | name = Supporting; 122 | path = expocheckinstalledappsexample/Supporting; 123 | sourceTree = ""; 124 | }; 125 | D65327D7A22EEC0BE12398D9 /* Pods */ = { 126 | isa = PBXGroup; 127 | children = ( 128 | 6C2E3173556A471DD304B334 /* Pods-expocheckinstalledappsexample.debug.xcconfig */, 129 | 7A4D352CD337FB3A3BF06240 /* Pods-expocheckinstalledappsexample.release.xcconfig */, 130 | ); 131 | path = Pods; 132 | sourceTree = ""; 133 | }; 134 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 92DBD88DE9BF7D494EA9DA96 /* expocheckinstalledappsexample */, 138 | ); 139 | name = ExpoModulesProviders; 140 | sourceTree = ""; 141 | }; 142 | /* End PBXGroup section */ 143 | 144 | /* Begin PBXNativeTarget section */ 145 | 13B07F861A680F5B00A75B9A /* expocheckinstalledappsexample */ = { 146 | isa = PBXNativeTarget; 147 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "expocheckinstalledappsexample" */; 148 | buildPhases = ( 149 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, 150 | D8D4244A98356490A18D4213 /* [Expo] Configure project */, 151 | 13B07F871A680F5B00A75B9A /* Sources */, 152 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 153 | 13B07F8E1A680F5B00A75B9A /* Resources */, 154 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 155 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, 156 | 7CA789523722D4A7FF87DF77 /* [CP] Embed Pods Frameworks */, 157 | ); 158 | buildRules = ( 159 | ); 160 | dependencies = ( 161 | ); 162 | name = expocheckinstalledappsexample; 163 | productName = expocheckinstalledappsexample; 164 | productReference = 13B07F961A680F5B00A75B9A /* expocheckinstalledappsexample.app */; 165 | productType = "com.apple.product-type.application"; 166 | }; 167 | /* End PBXNativeTarget section */ 168 | 169 | /* Begin PBXProject section */ 170 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 171 | isa = PBXProject; 172 | attributes = { 173 | LastUpgradeCheck = 1130; 174 | TargetAttributes = { 175 | 13B07F861A680F5B00A75B9A = { 176 | LastSwiftMigration = 1250; 177 | }; 178 | }; 179 | }; 180 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "expocheckinstalledappsexample" */; 181 | compatibilityVersion = "Xcode 3.2"; 182 | developmentRegion = en; 183 | hasScannedForEncodings = 0; 184 | knownRegions = ( 185 | en, 186 | Base, 187 | ); 188 | mainGroup = 83CBB9F61A601CBA00E9B192; 189 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 190 | projectDirPath = ""; 191 | projectRoot = ""; 192 | targets = ( 193 | 13B07F861A680F5B00A75B9A /* expocheckinstalledappsexample */, 194 | ); 195 | }; 196 | /* End PBXProject section */ 197 | 198 | /* Begin PBXResourcesBuildPhase section */ 199 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 200 | isa = PBXResourcesBuildPhase; 201 | buildActionMask = 2147483647; 202 | files = ( 203 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 204 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 205 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 206 | 9901D8E45CE50C73CC913900 /* PrivacyInfo.xcprivacy in Resources */, 207 | ); 208 | runOnlyForDeploymentPostprocessing = 0; 209 | }; 210 | /* End PBXResourcesBuildPhase section */ 211 | 212 | /* Begin PBXShellScriptBuildPhase section */ 213 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 214 | isa = PBXShellScriptBuildPhase; 215 | alwaysOutOfDate = 1; 216 | buildActionMask = 2147483647; 217 | files = ( 218 | ); 219 | inputPaths = ( 220 | ); 221 | name = "Bundle React Native code and images"; 222 | outputPaths = ( 223 | ); 224 | runOnlyForDeploymentPostprocessing = 0; 225 | shellPath = /bin/sh; 226 | shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; 227 | }; 228 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { 229 | isa = PBXShellScriptBuildPhase; 230 | buildActionMask = 2147483647; 231 | files = ( 232 | ); 233 | inputFileListPaths = ( 234 | ); 235 | inputPaths = ( 236 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 237 | "${PODS_ROOT}/Manifest.lock", 238 | ); 239 | name = "[CP] Check Pods Manifest.lock"; 240 | outputFileListPaths = ( 241 | ); 242 | outputPaths = ( 243 | "$(DERIVED_FILE_DIR)/Pods-expocheckinstalledappsexample-checkManifestLockResult.txt", 244 | ); 245 | runOnlyForDeploymentPostprocessing = 0; 246 | shellPath = /bin/sh; 247 | 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"; 248 | showEnvVarsInLog = 0; 249 | }; 250 | 7CA789523722D4A7FF87DF77 /* [CP] Embed Pods Frameworks */ = { 251 | isa = PBXShellScriptBuildPhase; 252 | buildActionMask = 2147483647; 253 | files = ( 254 | ); 255 | inputPaths = ( 256 | "${PODS_ROOT}/Target Support Files/Pods-expocheckinstalledappsexample/Pods-expocheckinstalledappsexample-frameworks.sh", 257 | "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", 258 | ); 259 | name = "[CP] Embed Pods Frameworks"; 260 | outputPaths = ( 261 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", 262 | ); 263 | runOnlyForDeploymentPostprocessing = 0; 264 | shellPath = /bin/sh; 265 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-expocheckinstalledappsexample/Pods-expocheckinstalledappsexample-frameworks.sh\"\n"; 266 | showEnvVarsInLog = 0; 267 | }; 268 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { 269 | isa = PBXShellScriptBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | ); 273 | inputPaths = ( 274 | "${PODS_ROOT}/Target Support Files/Pods-expocheckinstalledappsexample/Pods-expocheckinstalledappsexample-resources.sh", 275 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", 276 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", 277 | "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", 278 | "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", 279 | ); 280 | name = "[CP] Copy Pods Resources"; 281 | outputPaths = ( 282 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", 283 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", 284 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", 285 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", 286 | ); 287 | runOnlyForDeploymentPostprocessing = 0; 288 | shellPath = /bin/sh; 289 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-expocheckinstalledappsexample/Pods-expocheckinstalledappsexample-resources.sh\"\n"; 290 | showEnvVarsInLog = 0; 291 | }; 292 | D8D4244A98356490A18D4213 /* [Expo] Configure project */ = { 293 | isa = PBXShellScriptBuildPhase; 294 | alwaysOutOfDate = 1; 295 | buildActionMask = 2147483647; 296 | files = ( 297 | ); 298 | inputFileListPaths = ( 299 | ); 300 | inputPaths = ( 301 | ); 302 | name = "[Expo] Configure project"; 303 | outputFileListPaths = ( 304 | ); 305 | outputPaths = ( 306 | ); 307 | runOnlyForDeploymentPostprocessing = 0; 308 | shellPath = /bin/sh; 309 | shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-expocheckinstalledappsexample/expo-configure-project.sh\"\n"; 310 | }; 311 | /* End PBXShellScriptBuildPhase section */ 312 | 313 | /* Begin PBXSourcesBuildPhase section */ 314 | 13B07F871A680F5B00A75B9A /* Sources */ = { 315 | isa = PBXSourcesBuildPhase; 316 | buildActionMask = 2147483647; 317 | files = ( 318 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 319 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 320 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, 321 | 6E450670F8B643378A1454B4 /* noop-file.swift in Sources */, 322 | ); 323 | runOnlyForDeploymentPostprocessing = 0; 324 | }; 325 | /* End PBXSourcesBuildPhase section */ 326 | 327 | /* Begin XCBuildConfiguration section */ 328 | 13B07F941A680F5B00A75B9A /* Debug */ = { 329 | isa = XCBuildConfiguration; 330 | baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-expocheckinstalledappsexample.debug.xcconfig */; 331 | buildSettings = { 332 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 333 | CLANG_ENABLE_MODULES = YES; 334 | CODE_SIGN_ENTITLEMENTS = expocheckinstalledappsexample/expocheckinstalledappsexample.entitlements; 335 | CURRENT_PROJECT_VERSION = 1; 336 | ENABLE_BITCODE = NO; 337 | GCC_PREPROCESSOR_DEFINITIONS = ( 338 | "$(inherited)", 339 | "FB_SONARKIT_ENABLED=1", 340 | ); 341 | INFOPLIST_FILE = expocheckinstalledappsexample/Info.plist; 342 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 343 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 344 | MARKETING_VERSION = 1.0; 345 | OTHER_LDFLAGS = ( 346 | "$(inherited)", 347 | "-ObjC", 348 | "-lc++", 349 | ); 350 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; 351 | PRODUCT_BUNDLE_IDENTIFIER = expo.modules.checkinstalledapps.example; 352 | PRODUCT_NAME = "expocheckinstalledappsexample"; 353 | SWIFT_OBJC_BRIDGING_HEADER = "expocheckinstalledappsexample/expocheckinstalledappsexample-Bridging-Header.h"; 354 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 355 | SWIFT_VERSION = 5.0; 356 | TARGETED_DEVICE_FAMILY = "1,2"; 357 | VERSIONING_SYSTEM = "apple-generic"; 358 | }; 359 | name = Debug; 360 | }; 361 | 13B07F951A680F5B00A75B9A /* Release */ = { 362 | isa = XCBuildConfiguration; 363 | baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-expocheckinstalledappsexample.release.xcconfig */; 364 | buildSettings = { 365 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 366 | CLANG_ENABLE_MODULES = YES; 367 | CODE_SIGN_ENTITLEMENTS = expocheckinstalledappsexample/expocheckinstalledappsexample.entitlements; 368 | CURRENT_PROJECT_VERSION = 1; 369 | INFOPLIST_FILE = expocheckinstalledappsexample/Info.plist; 370 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 371 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 372 | MARKETING_VERSION = 1.0; 373 | OTHER_LDFLAGS = ( 374 | "$(inherited)", 375 | "-ObjC", 376 | "-lc++", 377 | ); 378 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; 379 | PRODUCT_BUNDLE_IDENTIFIER = expo.modules.checkinstalledapps.example; 380 | PRODUCT_NAME = "expocheckinstalledappsexample"; 381 | SWIFT_OBJC_BRIDGING_HEADER = "expocheckinstalledappsexample/expocheckinstalledappsexample-Bridging-Header.h"; 382 | SWIFT_VERSION = 5.0; 383 | TARGETED_DEVICE_FAMILY = "1,2"; 384 | VERSIONING_SYSTEM = "apple-generic"; 385 | }; 386 | name = Release; 387 | }; 388 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 389 | isa = XCBuildConfiguration; 390 | buildSettings = { 391 | ALWAYS_SEARCH_USER_PATHS = NO; 392 | CC = ""; 393 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 394 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 395 | CLANG_CXX_LIBRARY = "libc++"; 396 | CLANG_ENABLE_MODULES = YES; 397 | CLANG_ENABLE_OBJC_ARC = YES; 398 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 399 | CLANG_WARN_BOOL_CONVERSION = YES; 400 | CLANG_WARN_COMMA = YES; 401 | CLANG_WARN_CONSTANT_CONVERSION = YES; 402 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 403 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 404 | CLANG_WARN_EMPTY_BODY = YES; 405 | CLANG_WARN_ENUM_CONVERSION = YES; 406 | CLANG_WARN_INFINITE_RECURSION = YES; 407 | CLANG_WARN_INT_CONVERSION = YES; 408 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 409 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 410 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 411 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 412 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 413 | CLANG_WARN_STRICT_PROTOTYPES = YES; 414 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 415 | CLANG_WARN_UNREACHABLE_CODE = YES; 416 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 417 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 418 | COPY_PHASE_STRIP = NO; 419 | CXX = ""; 420 | ENABLE_STRICT_OBJC_MSGSEND = YES; 421 | ENABLE_TESTABILITY = YES; 422 | GCC_C_LANGUAGE_STANDARD = gnu99; 423 | GCC_DYNAMIC_NO_PIC = NO; 424 | GCC_NO_COMMON_BLOCKS = YES; 425 | GCC_OPTIMIZATION_LEVEL = 0; 426 | GCC_PREPROCESSOR_DEFINITIONS = ( 427 | "DEBUG=1", 428 | "$(inherited)", 429 | ); 430 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 431 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 432 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 433 | GCC_WARN_UNDECLARED_SELECTOR = YES; 434 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 435 | GCC_WARN_UNUSED_FUNCTION = YES; 436 | GCC_WARN_UNUSED_VARIABLE = YES; 437 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 438 | LD = ""; 439 | LDPLUSPLUS = ""; 440 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 441 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 442 | MTL_ENABLE_DEBUG_INFO = YES; 443 | ONLY_ACTIVE_ARCH = YES; 444 | OTHER_LDFLAGS = ( 445 | "$(inherited)", 446 | " ", 447 | ); 448 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 449 | SDKROOT = iphoneos; 450 | USE_HERMES = true; 451 | }; 452 | name = Debug; 453 | }; 454 | 83CBBA211A601CBA00E9B192 /* Release */ = { 455 | isa = XCBuildConfiguration; 456 | buildSettings = { 457 | ALWAYS_SEARCH_USER_PATHS = NO; 458 | CC = ""; 459 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 460 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 461 | CLANG_CXX_LIBRARY = "libc++"; 462 | CLANG_ENABLE_MODULES = YES; 463 | CLANG_ENABLE_OBJC_ARC = YES; 464 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 465 | CLANG_WARN_BOOL_CONVERSION = YES; 466 | CLANG_WARN_COMMA = YES; 467 | CLANG_WARN_CONSTANT_CONVERSION = YES; 468 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 469 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 470 | CLANG_WARN_EMPTY_BODY = YES; 471 | CLANG_WARN_ENUM_CONVERSION = YES; 472 | CLANG_WARN_INFINITE_RECURSION = YES; 473 | CLANG_WARN_INT_CONVERSION = YES; 474 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 475 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 476 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 477 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 478 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 479 | CLANG_WARN_STRICT_PROTOTYPES = YES; 480 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 481 | CLANG_WARN_UNREACHABLE_CODE = YES; 482 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 483 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 484 | COPY_PHASE_STRIP = YES; 485 | CXX = ""; 486 | ENABLE_NS_ASSERTIONS = NO; 487 | ENABLE_STRICT_OBJC_MSGSEND = YES; 488 | GCC_C_LANGUAGE_STANDARD = gnu99; 489 | GCC_NO_COMMON_BLOCKS = YES; 490 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 491 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 492 | GCC_WARN_UNDECLARED_SELECTOR = YES; 493 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 494 | GCC_WARN_UNUSED_FUNCTION = YES; 495 | GCC_WARN_UNUSED_VARIABLE = YES; 496 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 497 | LD = ""; 498 | LDPLUSPLUS = ""; 499 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 500 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 501 | MTL_ENABLE_DEBUG_INFO = NO; 502 | OTHER_LDFLAGS = ( 503 | "$(inherited)", 504 | " ", 505 | ); 506 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 507 | SDKROOT = iphoneos; 508 | USE_HERMES = true; 509 | VALIDATE_PRODUCT = YES; 510 | }; 511 | name = Release; 512 | }; 513 | /* End XCBuildConfiguration section */ 514 | 515 | /* Begin XCConfigurationList section */ 516 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "expocheckinstalledappsexample" */ = { 517 | isa = XCConfigurationList; 518 | buildConfigurations = ( 519 | 13B07F941A680F5B00A75B9A /* Debug */, 520 | 13B07F951A680F5B00A75B9A /* Release */, 521 | ); 522 | defaultConfigurationIsVisible = 0; 523 | defaultConfigurationName = Release; 524 | }; 525 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "expocheckinstalledappsexample" */ = { 526 | isa = XCConfigurationList; 527 | buildConfigurations = ( 528 | 83CBBA201A601CBA00E9B192 /* Debug */, 529 | 83CBBA211A601CBA00E9B192 /* Release */, 530 | ); 531 | defaultConfigurationIsVisible = 0; 532 | defaultConfigurationName = Release; 533 | }; 534 | /* End XCConfigurationList section */ 535 | }; 536 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 537 | } 538 | -------------------------------------------------------------------------------- /example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.83.0) 3 | - DoubleConversion (1.1.6) 4 | - EXConstants (16.0.2): 5 | - ExpoModulesCore 6 | - Expo (51.0.38): 7 | - ExpoModulesCore 8 | - ExpoAsset (10.0.10): 9 | - ExpoModulesCore 10 | - ExpoCheckInstalledApps (0.2.1): 11 | - ExpoModulesCore 12 | - ExpoFileSystem (17.0.1): 13 | - ExpoModulesCore 14 | - ExpoFont (12.0.10): 15 | - ExpoModulesCore 16 | - ExpoKeepAwake (13.0.2): 17 | - ExpoModulesCore 18 | - ExpoModulesCore (1.12.26): 19 | - DoubleConversion 20 | - glog 21 | - hermes-engine 22 | - RCT-Folly (= 2024.01.01.00) 23 | - RCTRequired 24 | - RCTTypeSafety 25 | - React-Codegen 26 | - React-Core 27 | - React-debug 28 | - React-Fabric 29 | - React-featureflags 30 | - React-graphics 31 | - React-ImageManager 32 | - React-jsinspector 33 | - React-NativeModulesApple 34 | - React-RCTAppDelegate 35 | - React-RCTFabric 36 | - React-rendererdebug 37 | - React-utils 38 | - ReactCommon/turbomodule/bridging 39 | - ReactCommon/turbomodule/core 40 | - Yoga 41 | - FBLazyVector (0.74.5) 42 | - fmt (9.1.0) 43 | - glog (0.3.5) 44 | - hermes-engine (0.74.5): 45 | - hermes-engine/Pre-built (= 0.74.5) 46 | - hermes-engine/Pre-built (0.74.5) 47 | - RCT-Folly (2024.01.01.00): 48 | - boost 49 | - DoubleConversion 50 | - fmt (= 9.1.0) 51 | - glog 52 | - RCT-Folly/Default (= 2024.01.01.00) 53 | - RCT-Folly/Default (2024.01.01.00): 54 | - boost 55 | - DoubleConversion 56 | - fmt (= 9.1.0) 57 | - glog 58 | - RCT-Folly/Fabric (2024.01.01.00): 59 | - boost 60 | - DoubleConversion 61 | - fmt (= 9.1.0) 62 | - glog 63 | - RCTDeprecation (0.74.5) 64 | - RCTRequired (0.74.5) 65 | - RCTTypeSafety (0.74.5): 66 | - FBLazyVector (= 0.74.5) 67 | - RCTRequired (= 0.74.5) 68 | - React-Core (= 0.74.5) 69 | - React (0.74.5): 70 | - React-Core (= 0.74.5) 71 | - React-Core/DevSupport (= 0.74.5) 72 | - React-Core/RCTWebSocket (= 0.74.5) 73 | - React-RCTActionSheet (= 0.74.5) 74 | - React-RCTAnimation (= 0.74.5) 75 | - React-RCTBlob (= 0.74.5) 76 | - React-RCTImage (= 0.74.5) 77 | - React-RCTLinking (= 0.74.5) 78 | - React-RCTNetwork (= 0.74.5) 79 | - React-RCTSettings (= 0.74.5) 80 | - React-RCTText (= 0.74.5) 81 | - React-RCTVibration (= 0.74.5) 82 | - React-callinvoker (0.74.5) 83 | - React-Codegen (0.74.5): 84 | - DoubleConversion 85 | - glog 86 | - hermes-engine 87 | - RCT-Folly 88 | - RCTRequired 89 | - RCTTypeSafety 90 | - React-Core 91 | - React-debug 92 | - React-Fabric 93 | - React-FabricImage 94 | - React-featureflags 95 | - React-graphics 96 | - React-jsi 97 | - React-jsiexecutor 98 | - React-NativeModulesApple 99 | - React-rendererdebug 100 | - React-utils 101 | - ReactCommon/turbomodule/bridging 102 | - ReactCommon/turbomodule/core 103 | - React-Core (0.74.5): 104 | - glog 105 | - hermes-engine 106 | - RCT-Folly (= 2024.01.01.00) 107 | - RCTDeprecation 108 | - React-Core/Default (= 0.74.5) 109 | - React-cxxreact 110 | - React-featureflags 111 | - React-hermes 112 | - React-jsi 113 | - React-jsiexecutor 114 | - React-jsinspector 115 | - React-perflogger 116 | - React-runtimescheduler 117 | - React-utils 118 | - SocketRocket (= 0.7.0) 119 | - Yoga 120 | - React-Core/CoreModulesHeaders (0.74.5): 121 | - glog 122 | - hermes-engine 123 | - RCT-Folly (= 2024.01.01.00) 124 | - RCTDeprecation 125 | - React-Core/Default 126 | - React-cxxreact 127 | - React-featureflags 128 | - React-hermes 129 | - React-jsi 130 | - React-jsiexecutor 131 | - React-jsinspector 132 | - React-perflogger 133 | - React-runtimescheduler 134 | - React-utils 135 | - SocketRocket (= 0.7.0) 136 | - Yoga 137 | - React-Core/Default (0.74.5): 138 | - glog 139 | - hermes-engine 140 | - RCT-Folly (= 2024.01.01.00) 141 | - RCTDeprecation 142 | - React-cxxreact 143 | - React-featureflags 144 | - React-hermes 145 | - React-jsi 146 | - React-jsiexecutor 147 | - React-jsinspector 148 | - React-perflogger 149 | - React-runtimescheduler 150 | - React-utils 151 | - SocketRocket (= 0.7.0) 152 | - Yoga 153 | - React-Core/DevSupport (0.74.5): 154 | - glog 155 | - hermes-engine 156 | - RCT-Folly (= 2024.01.01.00) 157 | - RCTDeprecation 158 | - React-Core/Default (= 0.74.5) 159 | - React-Core/RCTWebSocket (= 0.74.5) 160 | - React-cxxreact 161 | - React-featureflags 162 | - React-hermes 163 | - React-jsi 164 | - React-jsiexecutor 165 | - React-jsinspector 166 | - React-perflogger 167 | - React-runtimescheduler 168 | - React-utils 169 | - SocketRocket (= 0.7.0) 170 | - Yoga 171 | - React-Core/RCTActionSheetHeaders (0.74.5): 172 | - glog 173 | - hermes-engine 174 | - RCT-Folly (= 2024.01.01.00) 175 | - RCTDeprecation 176 | - React-Core/Default 177 | - React-cxxreact 178 | - React-featureflags 179 | - React-hermes 180 | - React-jsi 181 | - React-jsiexecutor 182 | - React-jsinspector 183 | - React-perflogger 184 | - React-runtimescheduler 185 | - React-utils 186 | - SocketRocket (= 0.7.0) 187 | - Yoga 188 | - React-Core/RCTAnimationHeaders (0.74.5): 189 | - glog 190 | - hermes-engine 191 | - RCT-Folly (= 2024.01.01.00) 192 | - RCTDeprecation 193 | - React-Core/Default 194 | - React-cxxreact 195 | - React-featureflags 196 | - React-hermes 197 | - React-jsi 198 | - React-jsiexecutor 199 | - React-jsinspector 200 | - React-perflogger 201 | - React-runtimescheduler 202 | - React-utils 203 | - SocketRocket (= 0.7.0) 204 | - Yoga 205 | - React-Core/RCTBlobHeaders (0.74.5): 206 | - glog 207 | - hermes-engine 208 | - RCT-Folly (= 2024.01.01.00) 209 | - RCTDeprecation 210 | - React-Core/Default 211 | - React-cxxreact 212 | - React-featureflags 213 | - React-hermes 214 | - React-jsi 215 | - React-jsiexecutor 216 | - React-jsinspector 217 | - React-perflogger 218 | - React-runtimescheduler 219 | - React-utils 220 | - SocketRocket (= 0.7.0) 221 | - Yoga 222 | - React-Core/RCTImageHeaders (0.74.5): 223 | - glog 224 | - hermes-engine 225 | - RCT-Folly (= 2024.01.01.00) 226 | - RCTDeprecation 227 | - React-Core/Default 228 | - React-cxxreact 229 | - React-featureflags 230 | - React-hermes 231 | - React-jsi 232 | - React-jsiexecutor 233 | - React-jsinspector 234 | - React-perflogger 235 | - React-runtimescheduler 236 | - React-utils 237 | - SocketRocket (= 0.7.0) 238 | - Yoga 239 | - React-Core/RCTLinkingHeaders (0.74.5): 240 | - glog 241 | - hermes-engine 242 | - RCT-Folly (= 2024.01.01.00) 243 | - RCTDeprecation 244 | - React-Core/Default 245 | - React-cxxreact 246 | - React-featureflags 247 | - React-hermes 248 | - React-jsi 249 | - React-jsiexecutor 250 | - React-jsinspector 251 | - React-perflogger 252 | - React-runtimescheduler 253 | - React-utils 254 | - SocketRocket (= 0.7.0) 255 | - Yoga 256 | - React-Core/RCTNetworkHeaders (0.74.5): 257 | - glog 258 | - hermes-engine 259 | - RCT-Folly (= 2024.01.01.00) 260 | - RCTDeprecation 261 | - React-Core/Default 262 | - React-cxxreact 263 | - React-featureflags 264 | - React-hermes 265 | - React-jsi 266 | - React-jsiexecutor 267 | - React-jsinspector 268 | - React-perflogger 269 | - React-runtimescheduler 270 | - React-utils 271 | - SocketRocket (= 0.7.0) 272 | - Yoga 273 | - React-Core/RCTSettingsHeaders (0.74.5): 274 | - glog 275 | - hermes-engine 276 | - RCT-Folly (= 2024.01.01.00) 277 | - RCTDeprecation 278 | - React-Core/Default 279 | - React-cxxreact 280 | - React-featureflags 281 | - React-hermes 282 | - React-jsi 283 | - React-jsiexecutor 284 | - React-jsinspector 285 | - React-perflogger 286 | - React-runtimescheduler 287 | - React-utils 288 | - SocketRocket (= 0.7.0) 289 | - Yoga 290 | - React-Core/RCTTextHeaders (0.74.5): 291 | - glog 292 | - hermes-engine 293 | - RCT-Folly (= 2024.01.01.00) 294 | - RCTDeprecation 295 | - React-Core/Default 296 | - React-cxxreact 297 | - React-featureflags 298 | - React-hermes 299 | - React-jsi 300 | - React-jsiexecutor 301 | - React-jsinspector 302 | - React-perflogger 303 | - React-runtimescheduler 304 | - React-utils 305 | - SocketRocket (= 0.7.0) 306 | - Yoga 307 | - React-Core/RCTVibrationHeaders (0.74.5): 308 | - glog 309 | - hermes-engine 310 | - RCT-Folly (= 2024.01.01.00) 311 | - RCTDeprecation 312 | - React-Core/Default 313 | - React-cxxreact 314 | - React-featureflags 315 | - React-hermes 316 | - React-jsi 317 | - React-jsiexecutor 318 | - React-jsinspector 319 | - React-perflogger 320 | - React-runtimescheduler 321 | - React-utils 322 | - SocketRocket (= 0.7.0) 323 | - Yoga 324 | - React-Core/RCTWebSocket (0.74.5): 325 | - glog 326 | - hermes-engine 327 | - RCT-Folly (= 2024.01.01.00) 328 | - RCTDeprecation 329 | - React-Core/Default (= 0.74.5) 330 | - React-cxxreact 331 | - React-featureflags 332 | - React-hermes 333 | - React-jsi 334 | - React-jsiexecutor 335 | - React-jsinspector 336 | - React-perflogger 337 | - React-runtimescheduler 338 | - React-utils 339 | - SocketRocket (= 0.7.0) 340 | - Yoga 341 | - React-CoreModules (0.74.5): 342 | - DoubleConversion 343 | - fmt (= 9.1.0) 344 | - RCT-Folly (= 2024.01.01.00) 345 | - RCTTypeSafety (= 0.74.5) 346 | - React-Codegen 347 | - React-Core/CoreModulesHeaders (= 0.74.5) 348 | - React-jsi (= 0.74.5) 349 | - React-jsinspector 350 | - React-NativeModulesApple 351 | - React-RCTBlob 352 | - React-RCTImage (= 0.74.5) 353 | - ReactCommon 354 | - SocketRocket (= 0.7.0) 355 | - React-cxxreact (0.74.5): 356 | - boost (= 1.83.0) 357 | - DoubleConversion 358 | - fmt (= 9.1.0) 359 | - glog 360 | - hermes-engine 361 | - RCT-Folly (= 2024.01.01.00) 362 | - React-callinvoker (= 0.74.5) 363 | - React-debug (= 0.74.5) 364 | - React-jsi (= 0.74.5) 365 | - React-jsinspector 366 | - React-logger (= 0.74.5) 367 | - React-perflogger (= 0.74.5) 368 | - React-runtimeexecutor (= 0.74.5) 369 | - React-debug (0.74.5) 370 | - React-Fabric (0.74.5): 371 | - DoubleConversion 372 | - fmt (= 9.1.0) 373 | - glog 374 | - hermes-engine 375 | - RCT-Folly/Fabric (= 2024.01.01.00) 376 | - RCTRequired 377 | - RCTTypeSafety 378 | - React-Core 379 | - React-cxxreact 380 | - React-debug 381 | - React-Fabric/animations (= 0.74.5) 382 | - React-Fabric/attributedstring (= 0.74.5) 383 | - React-Fabric/componentregistry (= 0.74.5) 384 | - React-Fabric/componentregistrynative (= 0.74.5) 385 | - React-Fabric/components (= 0.74.5) 386 | - React-Fabric/core (= 0.74.5) 387 | - React-Fabric/imagemanager (= 0.74.5) 388 | - React-Fabric/leakchecker (= 0.74.5) 389 | - React-Fabric/mounting (= 0.74.5) 390 | - React-Fabric/scheduler (= 0.74.5) 391 | - React-Fabric/telemetry (= 0.74.5) 392 | - React-Fabric/templateprocessor (= 0.74.5) 393 | - React-Fabric/textlayoutmanager (= 0.74.5) 394 | - React-Fabric/uimanager (= 0.74.5) 395 | - React-graphics 396 | - React-jsi 397 | - React-jsiexecutor 398 | - React-logger 399 | - React-rendererdebug 400 | - React-runtimescheduler 401 | - React-utils 402 | - ReactCommon/turbomodule/core 403 | - React-Fabric/animations (0.74.5): 404 | - DoubleConversion 405 | - fmt (= 9.1.0) 406 | - glog 407 | - hermes-engine 408 | - RCT-Folly/Fabric (= 2024.01.01.00) 409 | - RCTRequired 410 | - RCTTypeSafety 411 | - React-Core 412 | - React-cxxreact 413 | - React-debug 414 | - React-graphics 415 | - React-jsi 416 | - React-jsiexecutor 417 | - React-logger 418 | - React-rendererdebug 419 | - React-runtimescheduler 420 | - React-utils 421 | - ReactCommon/turbomodule/core 422 | - React-Fabric/attributedstring (0.74.5): 423 | - DoubleConversion 424 | - fmt (= 9.1.0) 425 | - glog 426 | - hermes-engine 427 | - RCT-Folly/Fabric (= 2024.01.01.00) 428 | - RCTRequired 429 | - RCTTypeSafety 430 | - React-Core 431 | - React-cxxreact 432 | - React-debug 433 | - React-graphics 434 | - React-jsi 435 | - React-jsiexecutor 436 | - React-logger 437 | - React-rendererdebug 438 | - React-runtimescheduler 439 | - React-utils 440 | - ReactCommon/turbomodule/core 441 | - React-Fabric/componentregistry (0.74.5): 442 | - DoubleConversion 443 | - fmt (= 9.1.0) 444 | - glog 445 | - hermes-engine 446 | - RCT-Folly/Fabric (= 2024.01.01.00) 447 | - RCTRequired 448 | - RCTTypeSafety 449 | - React-Core 450 | - React-cxxreact 451 | - React-debug 452 | - React-graphics 453 | - React-jsi 454 | - React-jsiexecutor 455 | - React-logger 456 | - React-rendererdebug 457 | - React-runtimescheduler 458 | - React-utils 459 | - ReactCommon/turbomodule/core 460 | - React-Fabric/componentregistrynative (0.74.5): 461 | - DoubleConversion 462 | - fmt (= 9.1.0) 463 | - glog 464 | - hermes-engine 465 | - RCT-Folly/Fabric (= 2024.01.01.00) 466 | - RCTRequired 467 | - RCTTypeSafety 468 | - React-Core 469 | - React-cxxreact 470 | - React-debug 471 | - React-graphics 472 | - React-jsi 473 | - React-jsiexecutor 474 | - React-logger 475 | - React-rendererdebug 476 | - React-runtimescheduler 477 | - React-utils 478 | - ReactCommon/turbomodule/core 479 | - React-Fabric/components (0.74.5): 480 | - DoubleConversion 481 | - fmt (= 9.1.0) 482 | - glog 483 | - hermes-engine 484 | - RCT-Folly/Fabric (= 2024.01.01.00) 485 | - RCTRequired 486 | - RCTTypeSafety 487 | - React-Core 488 | - React-cxxreact 489 | - React-debug 490 | - React-Fabric/components/inputaccessory (= 0.74.5) 491 | - React-Fabric/components/legacyviewmanagerinterop (= 0.74.5) 492 | - React-Fabric/components/modal (= 0.74.5) 493 | - React-Fabric/components/rncore (= 0.74.5) 494 | - React-Fabric/components/root (= 0.74.5) 495 | - React-Fabric/components/safeareaview (= 0.74.5) 496 | - React-Fabric/components/scrollview (= 0.74.5) 497 | - React-Fabric/components/text (= 0.74.5) 498 | - React-Fabric/components/textinput (= 0.74.5) 499 | - React-Fabric/components/unimplementedview (= 0.74.5) 500 | - React-Fabric/components/view (= 0.74.5) 501 | - React-graphics 502 | - React-jsi 503 | - React-jsiexecutor 504 | - React-logger 505 | - React-rendererdebug 506 | - React-runtimescheduler 507 | - React-utils 508 | - ReactCommon/turbomodule/core 509 | - React-Fabric/components/inputaccessory (0.74.5): 510 | - DoubleConversion 511 | - fmt (= 9.1.0) 512 | - glog 513 | - hermes-engine 514 | - RCT-Folly/Fabric (= 2024.01.01.00) 515 | - RCTRequired 516 | - RCTTypeSafety 517 | - React-Core 518 | - React-cxxreact 519 | - React-debug 520 | - React-graphics 521 | - React-jsi 522 | - React-jsiexecutor 523 | - React-logger 524 | - React-rendererdebug 525 | - React-runtimescheduler 526 | - React-utils 527 | - ReactCommon/turbomodule/core 528 | - React-Fabric/components/legacyviewmanagerinterop (0.74.5): 529 | - DoubleConversion 530 | - fmt (= 9.1.0) 531 | - glog 532 | - hermes-engine 533 | - RCT-Folly/Fabric (= 2024.01.01.00) 534 | - RCTRequired 535 | - RCTTypeSafety 536 | - React-Core 537 | - React-cxxreact 538 | - React-debug 539 | - React-graphics 540 | - React-jsi 541 | - React-jsiexecutor 542 | - React-logger 543 | - React-rendererdebug 544 | - React-runtimescheduler 545 | - React-utils 546 | - ReactCommon/turbomodule/core 547 | - React-Fabric/components/modal (0.74.5): 548 | - DoubleConversion 549 | - fmt (= 9.1.0) 550 | - glog 551 | - hermes-engine 552 | - RCT-Folly/Fabric (= 2024.01.01.00) 553 | - RCTRequired 554 | - RCTTypeSafety 555 | - React-Core 556 | - React-cxxreact 557 | - React-debug 558 | - React-graphics 559 | - React-jsi 560 | - React-jsiexecutor 561 | - React-logger 562 | - React-rendererdebug 563 | - React-runtimescheduler 564 | - React-utils 565 | - ReactCommon/turbomodule/core 566 | - React-Fabric/components/rncore (0.74.5): 567 | - DoubleConversion 568 | - fmt (= 9.1.0) 569 | - glog 570 | - hermes-engine 571 | - RCT-Folly/Fabric (= 2024.01.01.00) 572 | - RCTRequired 573 | - RCTTypeSafety 574 | - React-Core 575 | - React-cxxreact 576 | - React-debug 577 | - React-graphics 578 | - React-jsi 579 | - React-jsiexecutor 580 | - React-logger 581 | - React-rendererdebug 582 | - React-runtimescheduler 583 | - React-utils 584 | - ReactCommon/turbomodule/core 585 | - React-Fabric/components/root (0.74.5): 586 | - DoubleConversion 587 | - fmt (= 9.1.0) 588 | - glog 589 | - hermes-engine 590 | - RCT-Folly/Fabric (= 2024.01.01.00) 591 | - RCTRequired 592 | - RCTTypeSafety 593 | - React-Core 594 | - React-cxxreact 595 | - React-debug 596 | - React-graphics 597 | - React-jsi 598 | - React-jsiexecutor 599 | - React-logger 600 | - React-rendererdebug 601 | - React-runtimescheduler 602 | - React-utils 603 | - ReactCommon/turbomodule/core 604 | - React-Fabric/components/safeareaview (0.74.5): 605 | - DoubleConversion 606 | - fmt (= 9.1.0) 607 | - glog 608 | - hermes-engine 609 | - RCT-Folly/Fabric (= 2024.01.01.00) 610 | - RCTRequired 611 | - RCTTypeSafety 612 | - React-Core 613 | - React-cxxreact 614 | - React-debug 615 | - React-graphics 616 | - React-jsi 617 | - React-jsiexecutor 618 | - React-logger 619 | - React-rendererdebug 620 | - React-runtimescheduler 621 | - React-utils 622 | - ReactCommon/turbomodule/core 623 | - React-Fabric/components/scrollview (0.74.5): 624 | - DoubleConversion 625 | - fmt (= 9.1.0) 626 | - glog 627 | - hermes-engine 628 | - RCT-Folly/Fabric (= 2024.01.01.00) 629 | - RCTRequired 630 | - RCTTypeSafety 631 | - React-Core 632 | - React-cxxreact 633 | - React-debug 634 | - React-graphics 635 | - React-jsi 636 | - React-jsiexecutor 637 | - React-logger 638 | - React-rendererdebug 639 | - React-runtimescheduler 640 | - React-utils 641 | - ReactCommon/turbomodule/core 642 | - React-Fabric/components/text (0.74.5): 643 | - DoubleConversion 644 | - fmt (= 9.1.0) 645 | - glog 646 | - hermes-engine 647 | - RCT-Folly/Fabric (= 2024.01.01.00) 648 | - RCTRequired 649 | - RCTTypeSafety 650 | - React-Core 651 | - React-cxxreact 652 | - React-debug 653 | - React-graphics 654 | - React-jsi 655 | - React-jsiexecutor 656 | - React-logger 657 | - React-rendererdebug 658 | - React-runtimescheduler 659 | - React-utils 660 | - ReactCommon/turbomodule/core 661 | - React-Fabric/components/textinput (0.74.5): 662 | - DoubleConversion 663 | - fmt (= 9.1.0) 664 | - glog 665 | - hermes-engine 666 | - RCT-Folly/Fabric (= 2024.01.01.00) 667 | - RCTRequired 668 | - RCTTypeSafety 669 | - React-Core 670 | - React-cxxreact 671 | - React-debug 672 | - React-graphics 673 | - React-jsi 674 | - React-jsiexecutor 675 | - React-logger 676 | - React-rendererdebug 677 | - React-runtimescheduler 678 | - React-utils 679 | - ReactCommon/turbomodule/core 680 | - React-Fabric/components/unimplementedview (0.74.5): 681 | - DoubleConversion 682 | - fmt (= 9.1.0) 683 | - glog 684 | - hermes-engine 685 | - RCT-Folly/Fabric (= 2024.01.01.00) 686 | - RCTRequired 687 | - RCTTypeSafety 688 | - React-Core 689 | - React-cxxreact 690 | - React-debug 691 | - React-graphics 692 | - React-jsi 693 | - React-jsiexecutor 694 | - React-logger 695 | - React-rendererdebug 696 | - React-runtimescheduler 697 | - React-utils 698 | - ReactCommon/turbomodule/core 699 | - React-Fabric/components/view (0.74.5): 700 | - DoubleConversion 701 | - fmt (= 9.1.0) 702 | - glog 703 | - hermes-engine 704 | - RCT-Folly/Fabric (= 2024.01.01.00) 705 | - RCTRequired 706 | - RCTTypeSafety 707 | - React-Core 708 | - React-cxxreact 709 | - React-debug 710 | - React-graphics 711 | - React-jsi 712 | - React-jsiexecutor 713 | - React-logger 714 | - React-rendererdebug 715 | - React-runtimescheduler 716 | - React-utils 717 | - ReactCommon/turbomodule/core 718 | - Yoga 719 | - React-Fabric/core (0.74.5): 720 | - DoubleConversion 721 | - fmt (= 9.1.0) 722 | - glog 723 | - hermes-engine 724 | - RCT-Folly/Fabric (= 2024.01.01.00) 725 | - RCTRequired 726 | - RCTTypeSafety 727 | - React-Core 728 | - React-cxxreact 729 | - React-debug 730 | - React-graphics 731 | - React-jsi 732 | - React-jsiexecutor 733 | - React-logger 734 | - React-rendererdebug 735 | - React-runtimescheduler 736 | - React-utils 737 | - ReactCommon/turbomodule/core 738 | - React-Fabric/imagemanager (0.74.5): 739 | - DoubleConversion 740 | - fmt (= 9.1.0) 741 | - glog 742 | - hermes-engine 743 | - RCT-Folly/Fabric (= 2024.01.01.00) 744 | - RCTRequired 745 | - RCTTypeSafety 746 | - React-Core 747 | - React-cxxreact 748 | - React-debug 749 | - React-graphics 750 | - React-jsi 751 | - React-jsiexecutor 752 | - React-logger 753 | - React-rendererdebug 754 | - React-runtimescheduler 755 | - React-utils 756 | - ReactCommon/turbomodule/core 757 | - React-Fabric/leakchecker (0.74.5): 758 | - DoubleConversion 759 | - fmt (= 9.1.0) 760 | - glog 761 | - hermes-engine 762 | - RCT-Folly/Fabric (= 2024.01.01.00) 763 | - RCTRequired 764 | - RCTTypeSafety 765 | - React-Core 766 | - React-cxxreact 767 | - React-debug 768 | - React-graphics 769 | - React-jsi 770 | - React-jsiexecutor 771 | - React-logger 772 | - React-rendererdebug 773 | - React-runtimescheduler 774 | - React-utils 775 | - ReactCommon/turbomodule/core 776 | - React-Fabric/mounting (0.74.5): 777 | - DoubleConversion 778 | - fmt (= 9.1.0) 779 | - glog 780 | - hermes-engine 781 | - RCT-Folly/Fabric (= 2024.01.01.00) 782 | - RCTRequired 783 | - RCTTypeSafety 784 | - React-Core 785 | - React-cxxreact 786 | - React-debug 787 | - React-graphics 788 | - React-jsi 789 | - React-jsiexecutor 790 | - React-logger 791 | - React-rendererdebug 792 | - React-runtimescheduler 793 | - React-utils 794 | - ReactCommon/turbomodule/core 795 | - React-Fabric/scheduler (0.74.5): 796 | - DoubleConversion 797 | - fmt (= 9.1.0) 798 | - glog 799 | - hermes-engine 800 | - RCT-Folly/Fabric (= 2024.01.01.00) 801 | - RCTRequired 802 | - RCTTypeSafety 803 | - React-Core 804 | - React-cxxreact 805 | - React-debug 806 | - React-graphics 807 | - React-jsi 808 | - React-jsiexecutor 809 | - React-logger 810 | - React-rendererdebug 811 | - React-runtimescheduler 812 | - React-utils 813 | - ReactCommon/turbomodule/core 814 | - React-Fabric/telemetry (0.74.5): 815 | - DoubleConversion 816 | - fmt (= 9.1.0) 817 | - glog 818 | - hermes-engine 819 | - RCT-Folly/Fabric (= 2024.01.01.00) 820 | - RCTRequired 821 | - RCTTypeSafety 822 | - React-Core 823 | - React-cxxreact 824 | - React-debug 825 | - React-graphics 826 | - React-jsi 827 | - React-jsiexecutor 828 | - React-logger 829 | - React-rendererdebug 830 | - React-runtimescheduler 831 | - React-utils 832 | - ReactCommon/turbomodule/core 833 | - React-Fabric/templateprocessor (0.74.5): 834 | - DoubleConversion 835 | - fmt (= 9.1.0) 836 | - glog 837 | - hermes-engine 838 | - RCT-Folly/Fabric (= 2024.01.01.00) 839 | - RCTRequired 840 | - RCTTypeSafety 841 | - React-Core 842 | - React-cxxreact 843 | - React-debug 844 | - React-graphics 845 | - React-jsi 846 | - React-jsiexecutor 847 | - React-logger 848 | - React-rendererdebug 849 | - React-runtimescheduler 850 | - React-utils 851 | - ReactCommon/turbomodule/core 852 | - React-Fabric/textlayoutmanager (0.74.5): 853 | - DoubleConversion 854 | - fmt (= 9.1.0) 855 | - glog 856 | - hermes-engine 857 | - RCT-Folly/Fabric (= 2024.01.01.00) 858 | - RCTRequired 859 | - RCTTypeSafety 860 | - React-Core 861 | - React-cxxreact 862 | - React-debug 863 | - React-Fabric/uimanager 864 | - React-graphics 865 | - React-jsi 866 | - React-jsiexecutor 867 | - React-logger 868 | - React-rendererdebug 869 | - React-runtimescheduler 870 | - React-utils 871 | - ReactCommon/turbomodule/core 872 | - React-Fabric/uimanager (0.74.5): 873 | - DoubleConversion 874 | - fmt (= 9.1.0) 875 | - glog 876 | - hermes-engine 877 | - RCT-Folly/Fabric (= 2024.01.01.00) 878 | - RCTRequired 879 | - RCTTypeSafety 880 | - React-Core 881 | - React-cxxreact 882 | - React-debug 883 | - React-graphics 884 | - React-jsi 885 | - React-jsiexecutor 886 | - React-logger 887 | - React-rendererdebug 888 | - React-runtimescheduler 889 | - React-utils 890 | - ReactCommon/turbomodule/core 891 | - React-FabricImage (0.74.5): 892 | - DoubleConversion 893 | - fmt (= 9.1.0) 894 | - glog 895 | - hermes-engine 896 | - RCT-Folly/Fabric (= 2024.01.01.00) 897 | - RCTRequired (= 0.74.5) 898 | - RCTTypeSafety (= 0.74.5) 899 | - React-Fabric 900 | - React-graphics 901 | - React-ImageManager 902 | - React-jsi 903 | - React-jsiexecutor (= 0.74.5) 904 | - React-logger 905 | - React-rendererdebug 906 | - React-utils 907 | - ReactCommon 908 | - Yoga 909 | - React-featureflags (0.74.5) 910 | - React-graphics (0.74.5): 911 | - DoubleConversion 912 | - fmt (= 9.1.0) 913 | - glog 914 | - RCT-Folly/Fabric (= 2024.01.01.00) 915 | - React-Core/Default (= 0.74.5) 916 | - React-utils 917 | - React-hermes (0.74.5): 918 | - DoubleConversion 919 | - fmt (= 9.1.0) 920 | - glog 921 | - hermes-engine 922 | - RCT-Folly (= 2024.01.01.00) 923 | - React-cxxreact (= 0.74.5) 924 | - React-jsi 925 | - React-jsiexecutor (= 0.74.5) 926 | - React-jsinspector 927 | - React-perflogger (= 0.74.5) 928 | - React-runtimeexecutor 929 | - React-ImageManager (0.74.5): 930 | - glog 931 | - RCT-Folly/Fabric 932 | - React-Core/Default 933 | - React-debug 934 | - React-Fabric 935 | - React-graphics 936 | - React-rendererdebug 937 | - React-utils 938 | - React-jserrorhandler (0.74.5): 939 | - RCT-Folly/Fabric (= 2024.01.01.00) 940 | - React-debug 941 | - React-jsi 942 | - React-Mapbuffer 943 | - React-jsi (0.74.5): 944 | - boost (= 1.83.0) 945 | - DoubleConversion 946 | - fmt (= 9.1.0) 947 | - glog 948 | - hermes-engine 949 | - RCT-Folly (= 2024.01.01.00) 950 | - React-jsiexecutor (0.74.5): 951 | - DoubleConversion 952 | - fmt (= 9.1.0) 953 | - glog 954 | - hermes-engine 955 | - RCT-Folly (= 2024.01.01.00) 956 | - React-cxxreact (= 0.74.5) 957 | - React-jsi (= 0.74.5) 958 | - React-jsinspector 959 | - React-perflogger (= 0.74.5) 960 | - React-jsinspector (0.74.5): 961 | - DoubleConversion 962 | - glog 963 | - hermes-engine 964 | - RCT-Folly (= 2024.01.01.00) 965 | - React-featureflags 966 | - React-jsi 967 | - React-runtimeexecutor (= 0.74.5) 968 | - React-jsitracing (0.74.5): 969 | - React-jsi 970 | - React-logger (0.74.5): 971 | - glog 972 | - React-Mapbuffer (0.74.5): 973 | - glog 974 | - React-debug 975 | - React-nativeconfig (0.74.5) 976 | - React-NativeModulesApple (0.74.5): 977 | - glog 978 | - hermes-engine 979 | - React-callinvoker 980 | - React-Core 981 | - React-cxxreact 982 | - React-jsi 983 | - React-jsinspector 984 | - React-runtimeexecutor 985 | - ReactCommon/turbomodule/bridging 986 | - ReactCommon/turbomodule/core 987 | - React-perflogger (0.74.5) 988 | - React-RCTActionSheet (0.74.5): 989 | - React-Core/RCTActionSheetHeaders (= 0.74.5) 990 | - React-RCTAnimation (0.74.5): 991 | - RCT-Folly (= 2024.01.01.00) 992 | - RCTTypeSafety 993 | - React-Codegen 994 | - React-Core/RCTAnimationHeaders 995 | - React-jsi 996 | - React-NativeModulesApple 997 | - ReactCommon 998 | - React-RCTAppDelegate (0.74.5): 999 | - RCT-Folly (= 2024.01.01.00) 1000 | - RCTRequired 1001 | - RCTTypeSafety 1002 | - React-Codegen 1003 | - React-Core 1004 | - React-CoreModules 1005 | - React-debug 1006 | - React-Fabric 1007 | - React-featureflags 1008 | - React-graphics 1009 | - React-hermes 1010 | - React-nativeconfig 1011 | - React-NativeModulesApple 1012 | - React-RCTFabric 1013 | - React-RCTImage 1014 | - React-RCTNetwork 1015 | - React-rendererdebug 1016 | - React-RuntimeApple 1017 | - React-RuntimeCore 1018 | - React-RuntimeHermes 1019 | - React-runtimescheduler 1020 | - React-utils 1021 | - ReactCommon 1022 | - React-RCTBlob (0.74.5): 1023 | - DoubleConversion 1024 | - fmt (= 9.1.0) 1025 | - hermes-engine 1026 | - RCT-Folly (= 2024.01.01.00) 1027 | - React-Codegen 1028 | - React-Core/RCTBlobHeaders 1029 | - React-Core/RCTWebSocket 1030 | - React-jsi 1031 | - React-jsinspector 1032 | - React-NativeModulesApple 1033 | - React-RCTNetwork 1034 | - ReactCommon 1035 | - React-RCTFabric (0.74.5): 1036 | - glog 1037 | - hermes-engine 1038 | - RCT-Folly/Fabric (= 2024.01.01.00) 1039 | - React-Core 1040 | - React-debug 1041 | - React-Fabric 1042 | - React-FabricImage 1043 | - React-featureflags 1044 | - React-graphics 1045 | - React-ImageManager 1046 | - React-jsi 1047 | - React-jsinspector 1048 | - React-nativeconfig 1049 | - React-RCTImage 1050 | - React-RCTText 1051 | - React-rendererdebug 1052 | - React-runtimescheduler 1053 | - React-utils 1054 | - Yoga 1055 | - React-RCTImage (0.74.5): 1056 | - RCT-Folly (= 2024.01.01.00) 1057 | - RCTTypeSafety 1058 | - React-Codegen 1059 | - React-Core/RCTImageHeaders 1060 | - React-jsi 1061 | - React-NativeModulesApple 1062 | - React-RCTNetwork 1063 | - ReactCommon 1064 | - React-RCTLinking (0.74.5): 1065 | - React-Codegen 1066 | - React-Core/RCTLinkingHeaders (= 0.74.5) 1067 | - React-jsi (= 0.74.5) 1068 | - React-NativeModulesApple 1069 | - ReactCommon 1070 | - ReactCommon/turbomodule/core (= 0.74.5) 1071 | - React-RCTNetwork (0.74.5): 1072 | - RCT-Folly (= 2024.01.01.00) 1073 | - RCTTypeSafety 1074 | - React-Codegen 1075 | - React-Core/RCTNetworkHeaders 1076 | - React-jsi 1077 | - React-NativeModulesApple 1078 | - ReactCommon 1079 | - React-RCTSettings (0.74.5): 1080 | - RCT-Folly (= 2024.01.01.00) 1081 | - RCTTypeSafety 1082 | - React-Codegen 1083 | - React-Core/RCTSettingsHeaders 1084 | - React-jsi 1085 | - React-NativeModulesApple 1086 | - ReactCommon 1087 | - React-RCTText (0.74.5): 1088 | - React-Core/RCTTextHeaders (= 0.74.5) 1089 | - Yoga 1090 | - React-RCTVibration (0.74.5): 1091 | - RCT-Folly (= 2024.01.01.00) 1092 | - React-Codegen 1093 | - React-Core/RCTVibrationHeaders 1094 | - React-jsi 1095 | - React-NativeModulesApple 1096 | - ReactCommon 1097 | - React-rendererdebug (0.74.5): 1098 | - DoubleConversion 1099 | - fmt (= 9.1.0) 1100 | - RCT-Folly (= 2024.01.01.00) 1101 | - React-debug 1102 | - React-rncore (0.74.5) 1103 | - React-RuntimeApple (0.74.5): 1104 | - hermes-engine 1105 | - RCT-Folly/Fabric (= 2024.01.01.00) 1106 | - React-callinvoker 1107 | - React-Core/Default 1108 | - React-CoreModules 1109 | - React-cxxreact 1110 | - React-jserrorhandler 1111 | - React-jsi 1112 | - React-jsiexecutor 1113 | - React-jsinspector 1114 | - React-Mapbuffer 1115 | - React-NativeModulesApple 1116 | - React-RCTFabric 1117 | - React-RuntimeCore 1118 | - React-runtimeexecutor 1119 | - React-RuntimeHermes 1120 | - React-utils 1121 | - React-RuntimeCore (0.74.5): 1122 | - glog 1123 | - hermes-engine 1124 | - RCT-Folly/Fabric (= 2024.01.01.00) 1125 | - React-cxxreact 1126 | - React-featureflags 1127 | - React-jserrorhandler 1128 | - React-jsi 1129 | - React-jsiexecutor 1130 | - React-jsinspector 1131 | - React-runtimeexecutor 1132 | - React-runtimescheduler 1133 | - React-utils 1134 | - React-runtimeexecutor (0.74.5): 1135 | - React-jsi (= 0.74.5) 1136 | - React-RuntimeHermes (0.74.5): 1137 | - hermes-engine 1138 | - RCT-Folly/Fabric (= 2024.01.01.00) 1139 | - React-featureflags 1140 | - React-hermes 1141 | - React-jsi 1142 | - React-jsinspector 1143 | - React-jsitracing 1144 | - React-nativeconfig 1145 | - React-RuntimeCore 1146 | - React-utils 1147 | - React-runtimescheduler (0.74.5): 1148 | - glog 1149 | - hermes-engine 1150 | - RCT-Folly (= 2024.01.01.00) 1151 | - React-callinvoker 1152 | - React-cxxreact 1153 | - React-debug 1154 | - React-featureflags 1155 | - React-jsi 1156 | - React-rendererdebug 1157 | - React-runtimeexecutor 1158 | - React-utils 1159 | - React-utils (0.74.5): 1160 | - glog 1161 | - hermes-engine 1162 | - RCT-Folly (= 2024.01.01.00) 1163 | - React-debug 1164 | - React-jsi (= 0.74.5) 1165 | - ReactCommon (0.74.5): 1166 | - ReactCommon/turbomodule (= 0.74.5) 1167 | - ReactCommon/turbomodule (0.74.5): 1168 | - DoubleConversion 1169 | - fmt (= 9.1.0) 1170 | - glog 1171 | - hermes-engine 1172 | - RCT-Folly (= 2024.01.01.00) 1173 | - React-callinvoker (= 0.74.5) 1174 | - React-cxxreact (= 0.74.5) 1175 | - React-jsi (= 0.74.5) 1176 | - React-logger (= 0.74.5) 1177 | - React-perflogger (= 0.74.5) 1178 | - ReactCommon/turbomodule/bridging (= 0.74.5) 1179 | - ReactCommon/turbomodule/core (= 0.74.5) 1180 | - ReactCommon/turbomodule/bridging (0.74.5): 1181 | - DoubleConversion 1182 | - fmt (= 9.1.0) 1183 | - glog 1184 | - hermes-engine 1185 | - RCT-Folly (= 2024.01.01.00) 1186 | - React-callinvoker (= 0.74.5) 1187 | - React-cxxreact (= 0.74.5) 1188 | - React-jsi (= 0.74.5) 1189 | - React-logger (= 0.74.5) 1190 | - React-perflogger (= 0.74.5) 1191 | - ReactCommon/turbomodule/core (0.74.5): 1192 | - DoubleConversion 1193 | - fmt (= 9.1.0) 1194 | - glog 1195 | - hermes-engine 1196 | - RCT-Folly (= 2024.01.01.00) 1197 | - React-callinvoker (= 0.74.5) 1198 | - React-cxxreact (= 0.74.5) 1199 | - React-debug (= 0.74.5) 1200 | - React-jsi (= 0.74.5) 1201 | - React-logger (= 0.74.5) 1202 | - React-perflogger (= 0.74.5) 1203 | - React-utils (= 0.74.5) 1204 | - SocketRocket (0.7.0) 1205 | - Yoga (0.0.0) 1206 | 1207 | DEPENDENCIES: 1208 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 1209 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 1210 | - EXConstants (from `../node_modules/expo-constants/ios`) 1211 | - Expo (from `../node_modules/expo`) 1212 | - ExpoAsset (from `../node_modules/expo-asset/ios`) 1213 | - ExpoCheckInstalledApps (from `../../ios`) 1214 | - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) 1215 | - ExpoFont (from `../node_modules/expo-font/ios`) 1216 | - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) 1217 | - ExpoModulesCore (from `../node_modules/expo-modules-core`) 1218 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 1219 | - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) 1220 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 1221 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) 1222 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1223 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1224 | - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) 1225 | - RCTRequired (from `../node_modules/react-native/Libraries/Required`) 1226 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 1227 | - React (from `../node_modules/react-native/`) 1228 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 1229 | - React-Codegen (from `build/generated/ios`) 1230 | - React-Core (from `../node_modules/react-native/`) 1231 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 1232 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 1233 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 1234 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 1235 | - React-Fabric (from `../node_modules/react-native/ReactCommon`) 1236 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`) 1237 | - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) 1238 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) 1239 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) 1240 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) 1241 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) 1242 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 1243 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 1244 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) 1245 | - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) 1246 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 1247 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) 1248 | - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) 1249 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 1250 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 1251 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 1252 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 1253 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 1254 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 1255 | - React-RCTFabric (from `../node_modules/react-native/React`) 1256 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 1257 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 1258 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 1259 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 1260 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 1261 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 1262 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) 1263 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 1264 | - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) 1265 | - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) 1266 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 1267 | - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) 1268 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 1269 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 1270 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 1271 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 1272 | 1273 | SPEC REPOS: 1274 | trunk: 1275 | - SocketRocket 1276 | 1277 | EXTERNAL SOURCES: 1278 | boost: 1279 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 1280 | DoubleConversion: 1281 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 1282 | EXConstants: 1283 | :path: "../node_modules/expo-constants/ios" 1284 | Expo: 1285 | :path: "../node_modules/expo" 1286 | ExpoAsset: 1287 | :path: "../node_modules/expo-asset/ios" 1288 | ExpoCheckInstalledApps: 1289 | :path: "../../ios" 1290 | ExpoFileSystem: 1291 | :path: "../node_modules/expo-file-system/ios" 1292 | ExpoFont: 1293 | :path: "../node_modules/expo-font/ios" 1294 | ExpoKeepAwake: 1295 | :path: "../node_modules/expo-keep-awake/ios" 1296 | ExpoModulesCore: 1297 | :path: "../node_modules/expo-modules-core" 1298 | FBLazyVector: 1299 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 1300 | fmt: 1301 | :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" 1302 | glog: 1303 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 1304 | hermes-engine: 1305 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" 1306 | :tag: hermes-2024-06-28-RNv0.74.3-7bda0c267e76d11b68a585f84cfdd65000babf85 1307 | RCT-Folly: 1308 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 1309 | RCTDeprecation: 1310 | :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" 1311 | RCTRequired: 1312 | :path: "../node_modules/react-native/Libraries/Required" 1313 | RCTTypeSafety: 1314 | :path: "../node_modules/react-native/Libraries/TypeSafety" 1315 | React: 1316 | :path: "../node_modules/react-native/" 1317 | React-callinvoker: 1318 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 1319 | React-Codegen: 1320 | :path: build/generated/ios 1321 | React-Core: 1322 | :path: "../node_modules/react-native/" 1323 | React-CoreModules: 1324 | :path: "../node_modules/react-native/React/CoreModules" 1325 | React-cxxreact: 1326 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 1327 | React-debug: 1328 | :path: "../node_modules/react-native/ReactCommon/react/debug" 1329 | React-Fabric: 1330 | :path: "../node_modules/react-native/ReactCommon" 1331 | React-FabricImage: 1332 | :path: "../node_modules/react-native/ReactCommon" 1333 | React-featureflags: 1334 | :path: "../node_modules/react-native/ReactCommon/react/featureflags" 1335 | React-graphics: 1336 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" 1337 | React-hermes: 1338 | :path: "../node_modules/react-native/ReactCommon/hermes" 1339 | React-ImageManager: 1340 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" 1341 | React-jserrorhandler: 1342 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler" 1343 | React-jsi: 1344 | :path: "../node_modules/react-native/ReactCommon/jsi" 1345 | React-jsiexecutor: 1346 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 1347 | React-jsinspector: 1348 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" 1349 | React-jsitracing: 1350 | :path: "../node_modules/react-native/ReactCommon/hermes/executor/" 1351 | React-logger: 1352 | :path: "../node_modules/react-native/ReactCommon/logger" 1353 | React-Mapbuffer: 1354 | :path: "../node_modules/react-native/ReactCommon" 1355 | React-nativeconfig: 1356 | :path: "../node_modules/react-native/ReactCommon" 1357 | React-NativeModulesApple: 1358 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 1359 | React-perflogger: 1360 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 1361 | React-RCTActionSheet: 1362 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 1363 | React-RCTAnimation: 1364 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 1365 | React-RCTAppDelegate: 1366 | :path: "../node_modules/react-native/Libraries/AppDelegate" 1367 | React-RCTBlob: 1368 | :path: "../node_modules/react-native/Libraries/Blob" 1369 | React-RCTFabric: 1370 | :path: "../node_modules/react-native/React" 1371 | React-RCTImage: 1372 | :path: "../node_modules/react-native/Libraries/Image" 1373 | React-RCTLinking: 1374 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 1375 | React-RCTNetwork: 1376 | :path: "../node_modules/react-native/Libraries/Network" 1377 | React-RCTSettings: 1378 | :path: "../node_modules/react-native/Libraries/Settings" 1379 | React-RCTText: 1380 | :path: "../node_modules/react-native/Libraries/Text" 1381 | React-RCTVibration: 1382 | :path: "../node_modules/react-native/Libraries/Vibration" 1383 | React-rendererdebug: 1384 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" 1385 | React-rncore: 1386 | :path: "../node_modules/react-native/ReactCommon" 1387 | React-RuntimeApple: 1388 | :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" 1389 | React-RuntimeCore: 1390 | :path: "../node_modules/react-native/ReactCommon/react/runtime" 1391 | React-runtimeexecutor: 1392 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 1393 | React-RuntimeHermes: 1394 | :path: "../node_modules/react-native/ReactCommon/react/runtime" 1395 | React-runtimescheduler: 1396 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 1397 | React-utils: 1398 | :path: "../node_modules/react-native/ReactCommon/react/utils" 1399 | ReactCommon: 1400 | :path: "../node_modules/react-native/ReactCommon" 1401 | Yoga: 1402 | :path: "../node_modules/react-native/ReactCommon/yoga" 1403 | 1404 | SPEC CHECKSUMS: 1405 | boost: d3f49c53809116a5d38da093a8aa78bf551aed09 1406 | DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 1407 | EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59 1408 | Expo: 9b6666ef2fedcfc89c5b9be2aa1ce12b81f9e7f5 1409 | ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875 1410 | ExpoCheckInstalledApps: d1181123d716af565c50ce02e2633db3c91056f0 1411 | ExpoFileSystem: 80bfe850b1f9922c16905822ecbf97acd711dc51 1412 | ExpoFont: 00756e6c796d8f7ee8d211e29c8b619e75cbf238 1413 | ExpoKeepAwake: 3b8815d9dd1d419ee474df004021c69fdd316d08 1414 | ExpoModulesCore: 831ece8311a489418746925820bbffdda587d6f4 1415 | FBLazyVector: ac12dc084d1c8ec4cc4d7b3cf1b0ebda6dab85af 1416 | fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 1417 | glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f 1418 | hermes-engine: 8c1577f3fdb849cbe7729c2e7b5abc4b845e88f8 1419 | RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 1420 | RCTDeprecation: 3afceddffa65aee666dafd6f0116f1d975db1584 1421 | RCTRequired: ec1239bc9d8bf63e10fb92bd8b26171a9258e0c1 1422 | RCTTypeSafety: f5ecbc86c5c5fa163c05acb7a1c5012e15b5f994 1423 | React: fc9fa7258eff606f44d58c5b233a82dc9cf09018 1424 | React-callinvoker: e3fab14d69607fb7e8e3a57e5a415aed863d3599 1425 | React-Codegen: 6fa87b7c6b8efcd0cef4bfeaec8c8bc8a6abe75a 1426 | React-Core: 3a5fd9e781cecf87803e5b091496a606a3df774a 1427 | React-CoreModules: cbf4707dafab8f9f826ac0c63a07d0bf5d01e256 1428 | React-cxxreact: 7b188556271e3c7fdf22a04819f6a6225045b9dd 1429 | React-debug: d30893c49ae1bce4037ea5cd8bb2511d2a38d057 1430 | React-Fabric: 826729dd2304fda9b89ff0a579f60ba2a470bc26 1431 | React-FabricImage: 2ad1fb8ffa5778eda9ed204a7b3cdd70bc333ce7 1432 | React-featureflags: 4ae83e72d9a92452793601ac9ac7d2280e486089 1433 | React-graphics: 61a026e1c1e7e20d20ac9fec6f6de631732b233d 1434 | React-hermes: a7054fbcbda3957e3c5eaad06ef9bf79998d535a 1435 | React-ImageManager: 2bbd6eb2e696bc680f76f84563e4b87d241614e1 1436 | React-jserrorhandler: 56fa04d49bfbe54ddfece7916673a73ebfea286b 1437 | React-jsi: f3ce1dd2e950b6ad12b65ea3ef89168f1b94c584 1438 | React-jsiexecutor: b4df3a27973d82f9abf3c4bd0f88e042cda25f16 1439 | React-jsinspector: 97ea746c023687de7313ee289817d6991d596c7d 1440 | React-jsitracing: 3b6060bbf5317663667e1dd93560c7943ab86ccc 1441 | React-logger: 257858bd55f3a4e1bc0cf07ddc8fb9faba6f8c7c 1442 | React-Mapbuffer: 6c1cacdbf40b531f549eba249e531a7d0bfd8e7f 1443 | React-nativeconfig: ba9a2e54e2f0882cf7882698825052793ed4c851 1444 | React-NativeModulesApple: 8d11ff8955181540585c944cf48e9e7236952697 1445 | React-perflogger: ed4e0c65781521e0424f2e5e40b40cc7879d737e 1446 | React-RCTActionSheet: 49d53ff03bb5688ca4606c55859053a0cd129ea5 1447 | React-RCTAnimation: 07b4923885c52c397c4ec103924bf6e53b42c73e 1448 | React-RCTAppDelegate: 316e295076734baf9bdf1bfac7d92ab647aed930 1449 | React-RCTBlob: 85c57b0d5e667ff8a472163ba3af0628171a64bb 1450 | React-RCTFabric: 97c1465ded4dc92841f5376a39e43e1b2c455f40 1451 | React-RCTImage: b965c85bec820e2a9c154b1fb00a2ecdd59a9c92 1452 | React-RCTLinking: 75f04a5f27c26c4e73a39c50df470820d219df79 1453 | React-RCTNetwork: c1a9143f4d5778efc92da40d83969d03912ccc24 1454 | React-RCTSettings: c6800f91c0ecd48868cd5db754b0b0a7f5ffe039 1455 | React-RCTText: b923e24f9b7250bc4f7ab154c4168ad9f8d8fc9d 1456 | React-RCTVibration: 08c4f0c917c435b3619386c25a94ee5d64c250f0 1457 | React-rendererdebug: 3cda04217d9df67b94397ee0ead8ef3d8b7e427b 1458 | React-rncore: 4013508a2f3fcf46c961919bbbd4bfdda198977e 1459 | React-RuntimeApple: 447844a2bdb0a03ffd24e5b4a4b96cfc50325b88 1460 | React-RuntimeCore: 9b5bffdaccee9b707b1c2694c9044e13ff0bb087 1461 | React-runtimeexecutor: 0e688aefc14c6bc8601f4968d8d01c3fb6446844 1462 | React-RuntimeHermes: 4d6ef6bb0f2b0b40d59143317f6b99c82764c959 1463 | React-runtimescheduler: cfbe85c3510c541ec6dc815c7729b41304b67961 1464 | React-utils: f242eb7e7889419d979ca0e1c02ccc0ea6e43b29 1465 | ReactCommon: f7da14a8827b72704169a48c929bcde802698361 1466 | SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d 1467 | Yoga: 950bbfd7e6f04790fdb51149ed51df41f329fcc8 1468 | 1469 | PODFILE CHECKSUM: b4fee261fb7f6e5b531dd61914c93496c7af3ed4 1470 | 1471 | COCOAPODS: 1.14.3 1472 | --------------------------------------------------------------------------------