diff --git a/boilerplate/android/app/build.gradle b/boilerplate/android/app/build.gradle index 15e3c4250..2d8ac3189 100644 --- a/boilerplate/android/app/build.gradle +++ b/boilerplate/android/app/build.gradle @@ -123,6 +123,9 @@ def jscFlavor = 'org.webkit:android-jsc:+' def enableHermes = project.ext.react.get("enableHermes", false); android { + + ndkVersion rootProject.ext.ndkVersion + compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { @@ -171,11 +174,12 @@ android { variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = - versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + defaultConfig.versionCode * 1000 + versionCodes.get(abi) } } @@ -188,7 +192,7 @@ dependencies { implementation "com.facebook.react:react-native:+" // From node_modules implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - + addUnimodulesDependencies() debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { diff --git a/boilerplate/android/app/src/debug/AndroidManifest.xml b/boilerplate/android/app/src/debug/AndroidManifest.xml index fa26aa56e..f0e96b9ba 100644 --- a/boilerplate/android/app/src/debug/AndroidManifest.xml +++ b/boilerplate/android/app/src/debug/AndroidManifest.xml @@ -4,5 +4,10 @@ - + + + diff --git a/boilerplate/android/app/src/main/AndroidManifest.xml b/boilerplate/android/app/src/main/AndroidManifest.xml index 0a7a9cfc6..6db8bad36 100644 --- a/boilerplate/android/app/src/main/AndroidManifest.xml +++ b/boilerplate/android/app/src/main/AndroidManifest.xml @@ -21,7 +21,5 @@ - - diff --git a/boilerplate/android/app/src/main/res/values/styles.xml b/boilerplate/android/app/src/main/res/values/styles.xml index 62fe59fa4..9fab0be74 100644 --- a/boilerplate/android/app/src/main/res/values/styles.xml +++ b/boilerplate/android/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - diff --git a/boilerplate/android/build.gradle b/boilerplate/android/build.gradle index 0547dbfb3..93232f5fc 100644 --- a/boilerplate/android/build.gradle +++ b/boilerplate/android/build.gradle @@ -2,17 +2,18 @@ buildscript { ext { - buildToolsVersion = "29.0.2" + buildToolsVersion = "29.0.3" minSdkVersion = 21 compileSdkVersion = 29 targetSdkVersion = 29 + ndkVersion = "20.1.5948944" } repositories { google() jcenter() } dependencies { - classpath("com.android.tools.build:gradle:3.5.3") + classpath("com.android.tools.build:gradle:4.1.0") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/boilerplate/android/gradle.properties b/boilerplate/android/gradle.properties index 3bdbd3d4e..d21d03f2b 100644 --- a/boilerplate/android/gradle.properties +++ b/boilerplate/android/gradle.properties @@ -25,4 +25,4 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.54.0 +FLIPPER_VERSION=0.75.1 diff --git a/boilerplate/android/gradle/wrapper/gradle-wrapper.properties b/boilerplate/android/gradle/wrapper/gradle-wrapper.properties index 842267020..14e30f741 100644 --- a/boilerplate/android/gradle/wrapper/gradle-wrapper.properties +++ b/boilerplate/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/boilerplate/android/gradlew b/boilerplate/android/gradlew index 2fe81a7d9..4f906e0c8 100755 --- a/boilerplate/android/gradlew +++ b/boilerplate/android/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/boilerplate/android/gradlew.bat b/boilerplate/android/gradlew.bat index 62bd9b9cc..107acd32c 100644 --- a/boilerplate/android/gradlew.bat +++ b/boilerplate/android/gradlew.bat @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -54,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -64,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/boilerplate/ios/HelloWorld-tvOS/Info.plist b/boilerplate/ios/HelloWorld-tvOS/Info.plist deleted file mode 100644 index ecbd496be..000000000 --- a/boilerplate/ios/HelloWorld-tvOS/Info.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSExceptionDomains - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/boilerplate/ios/HelloWorld-tvOSTests/Info.plist b/boilerplate/ios/HelloWorld-tvOSTests/Info.plist deleted file mode 100644 index ba72822e8..000000000 --- a/boilerplate/ios/HelloWorld-tvOSTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld-tvOS.xcscheme b/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld-tvOS.xcscheme deleted file mode 100644 index d4e27b270..000000000 --- a/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld-tvOS.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme b/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme index 39743fdfd..b57be22ab 100644 --- a/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme +++ b/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme @@ -1,6 +1,6 @@ NSAppTransportSecurity - NSAllowsArbitraryLoads - NSExceptionDomains localhost diff --git a/boilerplate/ios/HelloWorld/LaunchScreen.storyboard b/boilerplate/ios/HelloWorld/LaunchScreen.storyboard index 0d0edbb96..8f74d3c92 100644 --- a/boilerplate/ios/HelloWorld/LaunchScreen.storyboard +++ b/boilerplate/ios/HelloWorld/LaunchScreen.storyboard @@ -16,32 +16,21 @@ - - - + - - - diff --git a/boilerplate/ios/Podfile b/boilerplate/ios/Podfile index 50946a055..edcc14105 100644 --- a/boilerplate/ios/Podfile +++ b/boilerplate/ios/Podfile @@ -8,7 +8,11 @@ target 'HelloWorld' do use_unimodules! config = use_native_modules! - use_react_native!(:path => config["reactNativePath"]) + use_react_native!( + :path => config[:reactNativePath], + # to enable hermes on iOS, change `false` to `true` and then install pods + :hermes_enabled => false + ) target 'HelloWorldTests' do inherit! :complete @@ -18,18 +22,10 @@ target 'HelloWorld' do # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable these next few lines. - use_flipper! - post_install do |installer| - flipper_post_install(installer) - end -end + # you should disable the next line. + use_flipper!() -target 'HelloWorld-tvOS' do - # Pods for HelloWorld-tvOS - - target 'HelloWorld-tvOSTests' do - inherit! :search_paths - # Pods for testing + post_install do |installer| + react_native_post_install(installer) end end diff --git a/boilerplate/package.json b/boilerplate/package.json index a0e9f89fb..597a9e98c 100644 --- a/boilerplate/package.json +++ b/boilerplate/package.json @@ -26,29 +26,31 @@ "dependencies": { "@react-native-async-storage/async-storage": "^1.14.1", "@react-native-community/masked-view": "0.1.10", - "@react-navigation/native": "5.8.10", + "@react-navigation/native": "5.9.3", "@react-navigation/stack": "5.12.8", "@unimodules/core": "6.0.0", "apisauce": "2.0.0", "expo-localization": "9.1.0", "i18n-js": "3.8.0", - "mobx": "6.0.4", - "mobx-react-lite": "3.1.6", - "mobx-state-tree": "4.0.2", + "mobx": "6.1.8", + "mobx-react-lite": "3.2.0", + "mobx-state-tree": "5.0.1", "ramda": "0.27.1", - "react": "16.14.0", - "react-native": "^0.63.4", - "react-native-gesture-handler": "1.8.0", + "react": "17.0.1", + "react-native": "0.64.0", + "react-native-gesture-handler": "1.10.3", "react-native-keychain": "6.2.0", "react-native-safe-area-context": "3.1.8", - "react-native-screens": "2.13.0", + "react-native-screens": "2.18.1", "react-native-splash-screen": "3.2.0", - "react-native-unimodules": "0.11.0", + "react-native-unimodules": "0.12.0", "reactotron-mst": "3.1.3", "reactotron-react-native": "5.0.0", "validate.js": "0.13.1" }, "devDependencies": { + "@babel/core": "^7.12.9", + "@babel/runtime": "^7.12.5", "@babel/plugin-proposal-decorators": "7.12.1", "@babel/plugin-proposal-optional-catch-binding": "7.12.1", "@storybook/addon-storyshots": "6.1.10", @@ -67,6 +69,7 @@ "bufferutil": "4.0.2", "canvas": "2.6.1", "detox": "17.14.5", + "fbjs-scripts": "3.0.0", "eslint": "7.15.0", "eslint-config-prettier": "7.0.0", "eslint-config-standard": "16.0.2", @@ -75,7 +78,7 @@ "eslint-plugin-promise": "4.2.1", "eslint-plugin-react": "7.21.5", "eslint-plugin-react-native": "3.10.0", - "jest": "25.5.4", + "jest": "^26.6.3", "jest-circus": "25.5.4", "jest-expo": "40.0.1", "jetifier": "1.6.6", @@ -86,12 +89,12 @@ "prettier": "2.2.1", "react-devtools-core": "4.10.1", "react-dom": "16.14.0", - "react-native-web": "0.13.18", + "react-native-web": "0.15.1", "react-powerplug": "1.0.0", "react-test-renderer": "17.0.1", "rimraf": "3.0.2", "solidarity": "2.3.1", - "typescript": "4.1.3", + "typescript": "4.2.3", "utf-8-validate": "5.0.3" }, "jest": { @@ -105,7 +108,7 @@ "/e2e" ], "transformIgnorePatterns": [ - "node_modules/(?!(jest-)?react-native|@react-navigation|@storybook|@react-native-community|expo-localization|@unimodules)" + "node_modules/(?!(jest-)?react-native|@react-native|@react-navigation|@storybook|@react-native-community|expo-localization|@unimodules)" ] }, "prettier": { diff --git a/package.json b/package.json index c990813eb..5c267dd85 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ "@semantic-release/git": "^9.0.0", "@types/jest": "^26.0.14", "@types/node": "12.12.30", - "@typescript-eslint/eslint-plugin": "^4.10.0", - "@typescript-eslint/parser": "^4.10.0", - "babel-eslint": "^10.0.3", - "eslint": "^7.11.0", - "eslint-config-prettier": "^7.0.0", + "@typescript-eslint/eslint-plugin": "^4.19.0", + "@typescript-eslint/parser": "^4.19.0", + "babel-eslint": "^10.1.0", + "eslint": "^7.23.0", + "eslint-config-prettier": "^8.1.0", "eslint-config-standard": "^16.0.2", "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-promise": "^4.3.1", "husky": "^4.3.0", "jest": "^26.5.3", "npm-run-all": "4.1.5", "prettier": "2.2.1", - "semantic-release": "^17.2.1", + "semantic-release": "^17.4.2", "strip-ansi": "^6.0.0", - "ts-jest": "^26.4.1", - "ts-node": "^9.0.0", + "ts-jest": "^26.5.4", + "ts-node": "^9.1.1", "typescript": "^4.1.3" }, "eslintConfig": {