- OneKey Platform Requirements
- Device Compatibility Check
- When user asks if their device can run app-monorepo, run the environment check to verify all required tools are installed with correct versions.
- Important
-
- Xcode, CocoaPods, and Ruby are
- macOS only
- tools required for iOS development. On non-macOS systems, skip these checks.
- Auto-detect and Check Environment
- First, detect the operating system:
- uname
- -s
- If output is
- Darwin
- → macOS, check ALL tools including Xcode/CocoaPods
- If output is
- Linux
- or other → Skip Xcode/CocoaPods/Ruby checks
- Development Environment Requirements
- Tool
- Required Version
- How to Check
- Platform
- Node.js
- >=22
- node -v
- All
- Yarn
- 4.12.0
- yarn -v
- All
- Java/JDK
- 17+
- java -version
- All
- Gradle
- 8.13
- ./gradlew --version
- All
- Go
- 1.24.0
- go version
- All
- Ruby
- 2.7+ (recommended 3.x)
- ruby -v
- macOS only
- CocoaPods
- 1.16.2
- pod --version
- macOS only
- Xcode
- 26.2
- xcodebuild -version
- macOS only
- Android Studio
- Ladybug (2024.2.1)+
- Android Studio > About
- All
- Minimum Platform Version Summary
- Platform
- Minimum Version
- Notes
- Android
- API 24 (Android 7.0 Nougat)
- Set by Expo SDK
- iOS
- 15.5
- Deployment target
- Chrome Extension
- Chrome 111+
- Required for MAIN world injection
- Firefox Extension
- Latest stable
- Follows Chrome manifest v2
- Desktop (Electron)
- Electron 39.x
- See OS requirements below
- macOS
- 10.15+ (Catalina)
- Electron 39 requirement
- Windows
- Windows 10+
- Electron 39 requirement
- Linux
- Ubuntu 20.04+
- Electron 39 requirement
- How to Verify/Update Versions
- Android minSdkVersion
- Location
-
- Set by Expo, referenced in
- apps/mobile/android/app/build.gradle:142
- How to check current value
- :
- cd
- apps/mobile/android
- &&
- ./gradlew
- -q
- properties
- 2
- >
- &1
- |
- grep
- -i
- "minSdk"
- Configuration chain
- :
- apps/mobile/android/app/build.gradle
- references
- rootProject.ext.minSdkVersion
- Value set by
- expo-modules-autolinking
- in
- ExpoRootProjectPlugin.kt
- Default is 24 unless overridden in expo version catalog
- iOS Deployment Target
- Location
- :
- apps/mobile/ios/Podfile:18
- How to check
- :
- grep
- "platform :ios"
- apps/mobile/ios/Podfile
- Configuration
- :
- platform
- :ios
- ,
- podfile_properties
- [
- 'ios.deploymentTarget'
- ]
- ||
- '15.5'
- Can also verify in Xcode project:
- grep
- "IPHONEOS_DEPLOYMENT_TARGET"
- apps/mobile/ios/OneKeyWallet.xcodeproj/project.pbxproj
- |
- head
- -5
- Chrome Extension Minimum Version
- Location
- :
- apps/ext/src/manifest/chrome_v3.js:9
- How to check
- :
- grep
- "minimum_chrome_version"
- apps/ext/src/manifest/chrome_v3.js
- Note
-
- Version 111+ is required for MAIN world content script injection (manifest v3 feature).
- Firefox Extension
- Location
- :
- apps/ext/src/manifest/firefox.js
- Firefox manifest extends Chrome manifest but may have different requirements. Currently follows Chrome manifest v2 patterns.
- Desktop (Electron) Version
- Location
- :
- apps/desktop/package.json
- How to check
- :
- grep
- '"electron":'
- apps/desktop/package.json
- Current version
-
- Electron 39.5.1
- Electron 39 OS Requirements
- :
- macOS: 10.15+ (Catalina)
- Windows: Windows 10+
- Linux: Ubuntu 20.04+, Fedora 32+, Debian 10+
- Reference
-
- Check Electron releases for OS compatibility at
- https://releases.electronjs.org/
- Full SDK Version Check Command
- Run this to see all Android SDK versions at once:
- cd
- apps/mobile/android
- &&
- ./gradlew
- -q
- --no-configuration-cache properties
- 2
- >
- &1
- |
- grep
- -E
- "(minSdk|compileSdk|targetSdk|buildTools|ndk|kotlin):"
- Expected output format:
- - buildTools: 36.0.0
- - minSdk: 24
- - compileSdk: 36
- - targetSdk: 36
- - ndk: 27.1.12297006
- - kotlin: 2.1.20
- Version Update Considerations
- When updating minimum versions:
- Android
-
- Expo SDK updates may change minSdkVersion. Check Expo release notes.
- iOS
-
- Update both Podfile and Xcode project settings.
- Extension
-
- manifest changes affect all Chromium browsers (Chrome, Edge, Brave, Opera).
- Electron
-
- Major version bumps may drop OS support. Check Electron release notes.
- Development Environment Details
- Node.js
- Required
-
- >=22
- Location
- :
- package.json:10-12
- How to check configuration
- :
- grep
- -A2
- '"engines"'
- package.json
- Configuration
- :
- "engines"
- :
- {
- "node"
- :
- ">=22"
- }
- Yarn
- Required
-
- 4.12.0 (Yarn Berry / Yarn 4)
- Location
- :
- package.json:3
- How to check configuration
- :
- grep
- '"packageManager"'
- package.json
- Configuration
- :
- "packageManager"
- :
- "yarn@4.12.0"
- Java/JDK
- Required
-
- JDK 17+
- Why
-
- Gradle 8.13 requires Java 17+. The project uses
- jvmTarget = "17"
- for Kotlin compilation.
- Location
- :
- apps/mobile/android/build.gradle:101
- How to check configuration
- :
- grep
- "jvmTarget"
- apps/mobile/android/build.gradle
- Gradle
- Required
-
- 8.13
- Location
- :
- apps/mobile/android/gradle/wrapper/gradle-wrapper.properties:3
- How to check configuration
- :
- grep
- "distributionUrl"
- apps/mobile/android/gradle/wrapper/gradle-wrapper.properties
- Configuration
- :
- distributionUrl
- =
- https\://services.gradle.org/distributions/gradle-8.13-bin.zip
- Ruby (macOS only)
- Required
-
- 2.7+ (recommended 3.x for Apple Silicon)
- Platform
-
- macOS only - required for iOS development
- Why
-
- Required for CocoaPods and iOS build tooling.
- How to check
- :
- ruby
- -v
- Note
-
- On macOS, system Ruby may be outdated. Use rbenv or rvm to manage Ruby versions.
- CocoaPods (macOS only)
- Required
-
- 1.16.2
- Platform
-
- macOS only - required for iOS development
- Location
- :
- apps/mobile/ios/Podfile.lock
- (last line)
- How to check configuration
- :
- tail
- -1
- apps/mobile/ios/Podfile.lock
- How to install
- :
- gem
- install
- cocoapods
- -v
- 1.16
- .2
- Go
- Required
-
- 1.24.0
- Why
-
- Required for compiling gopenpgp cryptographic library on iOS.
- Location
- :
- apps/mobile/ios/Podfile:33
- How to check configuration
- :
- grep
- "go_version = "
- apps/mobile/ios/Podfile
- Xcode (macOS only)
- Required
-
- 26.2
- Platform
-
- macOS only - required for iOS development
- Why
-
- Required for building iOS app with latest SDK features and deployment target.
- How to check
- :
- xcodebuild
- -version
- Note
-
- Xcode version determines available iOS SDKs and simulator versions.
- Android Studio
- Required
-
- Ladybug (2024.2.1) or later
- Why
-
- compileSdk 36 requires Android Studio with SDK 36 support.
- How to check
- Android Studio > About Android Studio
Required components
:
Android SDK Platform 36
Android SDK Build-Tools 36.0.0
NDK 27.1.12297006
CMake (for native modules)
Quick Environment Check Script
For macOS (Full check including iOS tools)
echo
"=== Development Environment Check (macOS) ==="
&&
\
echo
"OS:
$(
uname
-s
)
$(
uname
-r
)
"
&&
\
echo
"Node.js:
$(
node
-v
2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Yarn: $( yarn -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Java: $( java -version 2
&1 | head -1 || echo 'NOT INSTALLED' ) " && \ echo "Go: $( go version 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Ruby: $( ruby -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "CocoaPods: $( pod --version 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Xcode: $( xcodebuild -version 2
/dev/null | head -1 || echo 'NOT INSTALLED' ) " && \ echo "Gradle (configured): $( grep 'distributionUrl' apps/mobile/android/gradle/wrapper/gradle-wrapper.properties 2
/dev/null | sed 's/.gradle-(.)-bin.zip/\1/' || echo 'N/A' ) " For Linux/Windows (Skip iOS-only tools) echo "=== Development Environment Check (Non-macOS) ===" && \ echo "OS: $( uname -s ) $( uname -r ) " && \ echo "Node.js: $( node -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Yarn: $( yarn -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Java: $( java -version 2
&1 | head -1 || echo 'NOT INSTALLED' ) " && \ echo "Go: $( go version 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Gradle (configured): $( grep 'distributionUrl' apps/mobile/android/gradle/wrapper/gradle-wrapper.properties 2
/dev/null | sed 's/.gradle-(.)-bin.zip/\1/' || echo 'N/A' ) " && \ echo "" && \ echo "Note: Xcode, CocoaPods, Ruby are macOS-only (required for iOS development)" Smart Check (Auto-detect OS) if [ " $( uname -s ) " = "Darwin" ] ; then echo "=== macOS Detected - Full Environment Check ===" && \ echo "Node.js: $( node -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Yarn: $( yarn -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Java: $( java -version 2
&1 | head -1 || echo 'NOT INSTALLED' ) " && \ echo "Go: $( go version 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Ruby: $( ruby -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "CocoaPods: $( pod --version 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Xcode: $( xcodebuild -version 2
/dev/null | head -1 || echo 'NOT INSTALLED' ) " else echo "=== Non-macOS Detected - Partial Check ===" && \ echo "Node.js: $( node -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Yarn: $( yarn -v 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Java: $( java -version 2
&1 | head -1 || echo 'NOT INSTALLED' ) " && \ echo "Go: $( go version 2
/dev/null || echo 'NOT INSTALLED' ) " && \ echo "Note: iOS development requires macOS with Xcode, CocoaPods, Ruby" fi Related Files Node/Yarn: package.json Android: apps/mobile/android/app/build.gradle Android: apps/mobile/android/gradle.properties Gradle: apps/mobile/android/gradle/wrapper/gradle-wrapper.properties iOS: apps/mobile/ios/Podfile iOS: apps/mobile/ios/Podfile.lock Extension: apps/ext/src/manifest/chrome_v3.js Desktop: apps/desktop/package.json Desktop: apps/desktop/electron-builder.config.js
1k-platform-requirements
安装
npx skills add https://github.com/onekeyhq/app-monorepo --skill 1k-platform-requirements