Skip to main content
The quickstarts install from sdk.neurofit.app. Use this page when your build machine cannot reach it, when you mirror packages in your own repository, or when you hold a source license. Downloads use your download token through the ~/.netrc entry from the iOS quickstart.

iOS: xcframework files

Add them to your app target under Frameworks, Libraries and Embedded Content, set to Embed and Sign, or reference them from a local Swift package:
Package.swift
NeurofitVitalsUI links NeurofitVitals and does not contain it, so use both from the same version.

Android: AAR files

Your own artifact repository can proxy https://sdk.neurofit.app/maven, with any username and the token as the password. Point Gradle at your repository and nothing else changes. Or download the AAR files (https://sdk.neurofit.app/maven/com/neurofit/vitals-sdk/1.0.0/vitals-sdk-1.0.0.aar, and the same path for vitals-sdk-ui) and add their dependencies at these versions:
app/build.gradle.kts
The Compose BOM raises androidx.core to 1.16.0 if your build has an older one.

Wrapper package files

On a machine that reaches sdk.neurofit.app with the .npmrc from your quickstart, pack the package, then install the file anywhere:
For Flutter, download the package and depend on it by path:
pubspec.yaml
Each package carries both native SDKs (ios/Frameworks and android/maven), so there is nothing else to download.

Source license

A source license ships the engine and SDK sources. Your build still activates with a key (Source licenses). The release scripts sdk/tools/release/build_xcframework.sh and sdk/tools/release/build_aar.sh ship with the sources, so you can also build the binaries yourself.

iOS source package

Add ppgcore/sdk/ios as a local package. It needs the PpgCore engine package at ppgcore/ports/swift next to it, Swift tools 5.9 and Xcode 16 or newer, and builds in Swift 5 language mode. A build error about internal import means an older Xcode.
Package.swift
Never link NeurofitVitalsUI with the dynamic NeurofitVitals product. Your app would contain two copies of the SDK, each with its own activation, and the flow would end with notActivated although your app called activate.
Link one core product, not both. Debug builds of the sources accept a key that does not list your bundle identifier (Debug builds). The module bundles PrivacyInfo.xcprivacy.

Android source modules

Include :vitals-sdk, and :vitals-sdk-ui for the pre-built flow, from the delivered Gradle project with includeBuild, or copy the modules into your project. They compile the engine sources from ppgcore/ports/kotlin in place. :vitals-sdk-ui applies the Compose compiler plugin (org.jetbrains.kotlin.plugin.compose), so declare it at your Kotlin version if you copy the module.

Running the tests

The iOS package’s unit tests run on the Simulator, which has no camera, so a reading itself needs a device. Pick the simulator by id, because a name such as iPhone 15 can match several installed runtimes:

Sample apps

The iOS and Android samples have their setup in their READMEs, and their keys must list com.neurofit.vitals.sample. The Flutter example is the Dart code only: create its platform projects with flutter create . in its folder, use a key that lists their identifiers, and pass it with --dart-define=NEUROFIT_VITALS_LICENSE_KEY=.... The iOS and Android samples ship with source releases, the Flutter example inside the neurofit_vitals package. Request an evaluation build: contact@neurofit.app.