$ npm install && cd react-native && yarn install
$ shadow-cljs watch app
;; wait for first compile to finish or metro gets confused
$ cd react-native
$ npm start
;; and
$ npm run android
;; production build
$ shadow-cljs release app
;; Create Android release
$ cd react-native/android
$ ./gradlew assembleRelease
;; APK should appear at android/app/build/outputs/apk/release
;; installs in Android as "AwesomeProject"
$ adb install -r react-native/android/app/build/outputs/apk/release/app-release.apk
The react-native
folder was generated by calling react-native init AwesomeProject
and renaming the folder.
The :app
build will create an react-native/app/index.js
. In release
mode that is the only file needed. In dev mode the app
directory will contain many more .js
files.
:init-fn
is called after all files are loaded and in the case of expo
must render something synchronously as it will otherwise complain about a missing root component.