Skip to content

Latest commit

 

History

History
210 lines (141 loc) · 6.17 KB

README.md

File metadata and controls

210 lines (141 loc) · 6.17 KB

OpenPassport App

Requirements

Requirement Version Installation Guide
nodejs > v18 Install nodejs
circom Latest Install circom
snarkjs Latest Install snarkjs

Android

Requirement Version Installation Guide
Java 17 Install Java
Android Studio (Optional)* Latest Install Android Studio
Android SDK Latest Install Android SDK
Android NDK 23.1.7779620 Install NDK or GPT4 guide

* To facilitate the installation of the SDK and the NDK, and to pair with development devices with a conventient QR code, you can use Android Studio.

iOS

Requirement Version Installation Guide
Xcode Latest Install Xcode
cocoapods Latest Install cocoapods

Installation

All of the commands in this guide are run from the proof-of-passport/app directory

Install dependencies

yarn install
yarn install-app

Android

Using Android Studio

In Android Studio, go to Tools > SDK Manager in the menu

Under SDK Platforms, install the platform with the highest API number

Under SDK Tools, check the Show Package Details checkbox, expand NDK (Side by side), select version 23.1.7779620 and install.

Using sdkmanager via CLI

Create a directory for the Android SDK. For example ~/android_sdk. Define the environment variable ANDROID_HOME to point that directory.

Install sdkmanager under ANDROID_HOME according to the instructions on https://developer.android.com/tools/sdkmanager

List available SDK platforms

$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list | grep platforms

In the list of platforms, find the latest version and install it. (Replace NN with the latest version number)

$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-NN"

Install the NDK

$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "ndk;23.1.7779620"

Define the environment variable ANDROID_NDK to $ANDROID_HOME/ndk/23.1.7779620

Install Platform Tools, needed for the adb tool

$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install platform-tools

Add $ANDROID_HOME/platform-tools to your $PATH variable

Run the app

Android

Pair and connect to the phone

Using Android Studio

In Android Studio, use Device Manager to pair with and connect to your phone.

Using adb

In your phone's developer settings, select Wireless debugging > Pair the device using a pairing code. Using the displayed information, run

adb pair PHONE_IP:PAIRING_PORT PAIRING_CODE

To connect to the device, find the IP number and port (different port than in the pairing step) directly under Wireless debugging, and run

adb connect PHONE_IP:DEVELOPMENT_PORT

Run the app

Create the file android/local.properties specifying the SDK directory, for example:

sdk.dir=/path/to/your/android/sdk

or create it with

echo sdk.dir=$ANDROID_HOME > android/local.properties

Launch the React Native server:

yarn start

Press a to open the app on Android.

To view the Android logs, use the Logcat feature in Android Studio, or use the adb logcat command-line tool.

EDIT: to test the app on android, see this issue temporarily

iOS

⚠️ To run the app on iOS, you will need a paying Apple Developer account. Free accounts can't run apps that use NFC reading.
Contact us if you need it to contribute.

Open the ios project on Xcode and add your provisioning profile in Targets > OpenPassport > Signing and Capabilities

Then, install pods:

cd ios
pod install

And run the app in Xcode.

Modify the circuits

If you want to modify the circuits, you'll have to adapt a few things.

First, go to the circuit folder of the monorepo, modify the circuits and build them.

Then, upload the zipped zkeys and dat files at publicly available urls and replace the urls in app/src/utils/zkeyDownload.ts.

Adapt the input generation in common/src/utils/generateInputs.ts, and adapt and redeploy the contracts.

Android

Make sure that ANDROID_NDK is defined as per the instructions above. Then build the android native module:

./scripts/build_android_module.sh

iOS

Find your development team id and run:

export DEVELOPMENT_TEAM="<your-development-team-id>"
./scripts/build_ios_module.sh

Export a new release

Android

Export as apk

cd android
./gradlew assembleRelease

The built apk it located at android/app/build/outputs/apk/release/app-release.apk

Publish on the Play Store

As explained here, first setup android/app/my-upload-key.keystore and the private vars in ~/.gradle/gradle.properties, then run:

npx react-native build-android --mode=release

This builds android/app/build/outputs/bundle/release/app-release.aab.

Then to test the release on an android phone, delete the previous version of the app and run:

yarn android --mode release

Don't forget to bump versionCode in android/app/build.gradle.

iOS

In Xcode, go to Product>Archive then follow the flow.

Don't forget to bump the build number.

FAQ

If you get something like this:

'std::__1::system_error: open: /openpassport/app: Operation not permitted'

You might want to try this:

watchman watch-del-all
watchman shutdown-server