diff --git a/.github/workflows/publish-each-pr.yml b/.github/workflows/publish-each-pr.yml index 56b2b16b7f..48e564327f 100644 --- a/.github/workflows/publish-each-pr.yml +++ b/.github/workflows/publish-each-pr.yml @@ -8,12 +8,12 @@ jobs: if: github.event.pull_request.head.repo.full_name == 'callstack/react-native-paper' steps: - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 18.x - name: Setup Expo uses: expo/expo-github-action@v7 @@ -21,20 +21,29 @@ jobs: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} - - name: Get yarn cache + - name: Restore dependencies id: yarn-cache - run: echo "::set-output name=dir::$(yarn cache dir)" - - - name: Check yarn cache - uses: actions/cache@v1 + uses: actions/cache/restore@v4 with: - path: ${{ steps.yarn-cache.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + path: '**/node_modules' + key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-${{ hashFiles('**/package.json', '!node_modules/**') }} restore-keys: | + ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} ${{ runner.os }}-yarn- - name: Install dependencies - run: yarn + if: steps.yarn-cache.outputs.cache-hit != 'true' + run: | + sudo corepack enable + yarn --cwd example --immutable + yarn --immutable + + - name: Cache dependencies + if: steps.yarn-cache.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: '**/node_modules' + key: ${{ steps.yarn-cache.outputs.cache-primary-key }} - name: Publish Expo app working-directory: ./example diff --git a/.github/workflows/updates.yml b/.github/workflows/updates.yml index f190d5a243..084e00b664 100644 --- a/.github/workflows/updates.yml +++ b/.github/workflows/updates.yml @@ -15,7 +15,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 18.x - name: Setup Expo uses: expo/expo-github-action@v7 @@ -24,18 +24,29 @@ jobs: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} - - name: Get yarn cache - id: yarn-cache-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - - uses: actions/cache@v4 + - name: Restore dependencies + id: yarn-cache + uses: actions/cache/restore@v4 with: - path: ${{ steps.yarn-cache-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: ${{ runner.os }}-yarn- + path: '**/node_modules' + key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-${{ hashFiles('**/package.json', '!node_modules/**') }} + restore-keys: | + ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} + ${{ runner.os }}-yarn- - name: Install dependencies - run: yarn + if: steps.yarn-cache.outputs.cache-hit != 'true' + run: | + sudo corepack enable + yarn --cwd example --immutable + yarn --immutable + + - name: Cache dependencies + if: steps.yarn-cache.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: '**/node_modules' + key: ${{ steps.yarn-cache.outputs.cache-primary-key }} - name: Publish Expo app update working-directory: ./example diff --git a/example/android/.gitignore b/example/android/.gitignore index 877b87e9a5..8a6be07718 100644 --- a/example/android/.gitignore +++ b/example/android/.gitignore @@ -10,6 +10,7 @@ build/ local.properties *.iml *.hprof +.cxx/ # Bundle artifacts *.jsbundle diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index dd8a5d7890..2267974459 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -2,17 +2,7 @@ apply plugin: "com.android.application" apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" -import com.android.build.OutputFile - def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() -def expoDebuggableVariants = ['debug'] -// Override `debuggableVariants` for expo-updates debugging -if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == "1") { - react { - expoDebuggableVariants = [] - } -} - /** * This is the configuration block to customize your React Native Android app. @@ -22,17 +12,20 @@ react { entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" - debuggableVariants = expoDebuggableVariants + codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + + // Use Expo CLI to bundle the app, this ensures the Metro config + // works correctly with Expo projects. + cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim()) + bundleCommand = "export:embed" /* Folders */ - // The root of your project, i.e. where "package.json" lives. Default is '..' - // root = file("../") - // The folder where the react-native NPM package is. Default is ../node_modules/react-native - // reactNativeDir = file("../node_modules/react-native") - // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen - // codegenDir = file("../node_modules/react-native-codegen") - // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js - // cliFile = file("../node_modules/react-native/cli.js") + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") /* Variants */ // The list of variants to that are debuggable. For those we're going to @@ -43,9 +36,7 @@ react { /* Bundling */ // A list containing the node command and its flags. Default is just 'node'. // nodeExecutableAndArgs = ["node"] - // - // The command to run when bundling. By default is 'bundle' - // bundleCommand = "ram-bundle" + // // The path to the CLI configuration file. Default is empty. // bundleConfig = file(../rn-cli.config.js) @@ -67,22 +58,10 @@ react { // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] + /* Autolinking */ autolinkLibrariesWithApp() } -// Override `hermesEnabled` by `expo.jsEngine` -ext { - hermesEnabled = (findProperty('expo.jsEngine') ?: "hermes") == "hermes" -} - -/** - * Set this to true to create four separate APKs instead of one, - * one for each native architecture. This is useful if you don't - * use App Bundles (https://developer.android.com/guide/app-bundle/) - * and want to have separate APKs to upload to the Play Store. - */ -def enableSeparateBuildPerCPUArchitecture = false - /** * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ @@ -101,21 +80,11 @@ def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInRelea */ def jscFlavor = 'org.webkit:android-jsc:+' -/** - * Private function to get the list of Native Architectures you want to build. - * This reads the value from reactNativeArchitectures in your gradle.properties - * file and works together with the --active-arch-only flag of react-native run-android. - */ -def reactNativeArchitectures() { - def value = project.getProperties().get("reactNativeArchitectures") - return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] -} - android { ndkVersion rootProject.ext.ndkVersion buildToolsVersion rootProject.ext.buildToolsVersion - compileSdkVersion rootProject.ext.compileSdkVersion + compileSdk rootProject.ext.compileSdkVersion namespace 'com.callstack.reactnativepaperexample' defaultConfig { @@ -125,15 +94,6 @@ android { versionCode 28 versionName "3.14.0" } - - splits { - abi { - reset() - enable enableSeparateBuildPerCPUArchitecture - universalApk false // If true, also generate a universal APK - include (*reactNativeArchitectures()) - } - } signingConfigs { debug { storeFile file('debug.keystore') @@ -153,24 +113,17 @@ android { shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + crunchPngs (findProperty('android.enablePngCrunchInReleaseBuilds')?.toBoolean() ?: true) } } - - // applicationVariants are e.g. debug, release - applicationVariants.all { variant -> - 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 = - defaultConfig.versionCode * 1000 + versionCodes.get(abi) - } - + packagingOptions { + jniLibs { + useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false) } } + androidResources { + ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~' + } } // Apply static values from `gradle.properties` to the `android.packagingOptions` @@ -200,35 +153,24 @@ dependencies { def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; - def frescoVersion = rootProject.ext.frescoVersion - - // If your app supports Android versions before Ice Cream Sandwich (API level 14) - if (isGifEnabled || isWebpEnabled) { - implementation("com.facebook.fresco:fresco:${frescoVersion}") - implementation("com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}") - } if (isGifEnabled) { // For animated gif support - implementation("com.facebook.fresco:animated-gif:${frescoVersion}") + implementation("com.facebook.fresco:animated-gif:${reactAndroidLibs.versions.fresco.get()}") } if (isWebpEnabled) { // For webp support - implementation("com.facebook.fresco:webpsupport:${frescoVersion}") + implementation("com.facebook.fresco:webpsupport:${reactAndroidLibs.versions.fresco.get()}") if (isWebpAnimatedEnabled) { // Animated webp support - implementation("com.facebook.fresco:animated-webp:${frescoVersion}") + implementation("com.facebook.fresco:animated-webp:${reactAndroidLibs.versions.fresco.get()}") } } - implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") - if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } - -applyNativeModulesAppBuildGradle(project) diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml index 99e38fc5f8..3ec2507bab 100644 --- a/example/android/app/src/debug/AndroidManifest.xml +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -3,5 +3,5 @@ - + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 25d43f9344..2e9f1dfc02 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,9 +1,9 @@ - + + - @@ -11,39 +11,17 @@ - - - + - + - - - + - @@ -51,7 +29,6 @@ - \ No newline at end of file diff --git a/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainActivity.java b/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainActivity.java deleted file mode 100644 index f8dd51b978..0000000000 --- a/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainActivity.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.callstack.reactnativepaperexample; - -import android.os.Build; -import android.os.Bundle; - -import com.facebook.react.ReactActivity; -import com.facebook.react.ReactActivityDelegate; -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; -import com.facebook.react.defaults.DefaultReactActivityDelegate; - -import expo.modules.ReactActivityDelegateWrapper; - -public class MainActivity extends ReactActivity { - /** - * Align the back button behavior with Android S - * where moving root activities to background instead of finishing activities. - * @see onBackPressed - */ - @Override - public void invokeDefaultOnBackPressed() { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { - if (!moveTaskToBack(false)) { - // For non-root activities, use the default implementation to finish them. - super.invokeDefaultOnBackPressed(); - } - return; - } - - // Use the default back button implementation on Android S - // because it's doing more than {@link Activity#moveTaskToBack} in fact. - super.invokeDefaultOnBackPressed(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - // Set the theme to AppTheme BEFORE onCreate to support - // coloring the background, status bar, and navigation bar. - // This is required for expo-splash-screen. - setTheme(R.style.AppTheme); - super.onCreate(null); - } - - /** - * Returns the name of the main component registered from JavaScript. - * This is used to schedule rendering of the component. - */ - @Override - protected String getMainComponentName() { - return "main"; - } - - /** - * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link - * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React - * (aka React 18) with two boolean flags. - */ - @Override - protected ReactActivityDelegate createReactActivityDelegate() { - return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate( - this, - getMainComponentName(), - // If you opted-in for the New Architecture, we enable the Fabric Renderer. - DefaultNewArchitectureEntryPoint.getFabricEnabled() - )); - } -} diff --git a/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainActivity.kt b/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainActivity.kt new file mode 100644 index 0000000000..9c5d6f5f65 --- /dev/null +++ b/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainActivity.kt @@ -0,0 +1,65 @@ +package com.callstack.reactnativepaperexample +import expo.modules.splashscreen.SplashScreenManager + +import android.os.Build +import android.os.Bundle + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +import expo.modules.ReactActivityDelegateWrapper + +class MainActivity : ReactActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + // Set the theme to AppTheme BEFORE onCreate to support + // coloring the background, status bar, and navigation bar. + // This is required for expo-splash-screen. + // setTheme(R.style.AppTheme); + // @generated begin expo-splashscreen - expo prebuild (DO NOT MODIFY) sync-f3ff59a738c56c9a6119210cb55f0b613eb8b6af + SplashScreenManager.registerOnActivity(this) + // @generated end expo-splashscreen + super.onCreate(null) + } + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "main" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate { + return ReactActivityDelegateWrapper( + this, + BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, + object : DefaultReactActivityDelegate( + this, + mainComponentName, + fabricEnabled + ){}) + } + + /** + * Align the back button behavior with Android S + * where moving root activities to background instead of finishing activities. + * @see onBackPressed + */ + override fun invokeDefaultOnBackPressed() { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { + if (!moveTaskToBack(false)) { + // For non-root activities, use the default implementation to finish them. + super.invokeDefaultOnBackPressed() + } + return + } + + // Use the default back button implementation on Android S + // because it's doing more than [Activity.moveTaskToBack] in fact. + super.invokeDefaultOnBackPressed() + } +} diff --git a/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainApplication.java b/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainApplication.java deleted file mode 100644 index 52d98615ac..0000000000 --- a/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainApplication.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.callstack.reactnativepaperexample; - -import android.app.Application; -import android.content.res.Configuration; -import androidx.annotation.NonNull; - -import com.facebook.react.PackageList; -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; -import com.facebook.react.defaults.DefaultReactNativeHost; -import com.facebook.react.soloader.OpenSourceMergedSoMapping; -import com.facebook.soloader.SoLoader; - -import expo.modules.ApplicationLifecycleDispatcher; -import expo.modules.ReactNativeHostWrapper; - -import java.util.List; - -public class MainApplication extends Application implements ReactApplication { - - private final ReactNativeHost mReactNativeHost = - new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - - @Override - protected boolean isNewArchEnabled() { - return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - } - - @Override - protected Boolean isHermesEnabled() { - return BuildConfig.IS_HERMES_ENABLED; - } - }); - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } - - @Override - public void onCreate() { - super.onCreate(); - SoLoader.init(this, OpenSourceMergedSoMapping) - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - DefaultNewArchitectureEntryPoint.load(); - } - ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - ApplicationLifecycleDispatcher.onApplicationCreate(this); - } - - @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - super.onConfigurationChanged(newConfig); - ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); - } -} diff --git a/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainApplication.kt b/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainApplication.kt new file mode 100644 index 0000000000..b6cd6d88a9 --- /dev/null +++ b/example/android/app/src/main/java/com/callstack/reactnativepaperexample/MainApplication.kt @@ -0,0 +1,57 @@ +package com.callstack.reactnativepaperexample + +import android.app.Application +import android.content.res.Configuration + +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.ReactHost +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping +import com.facebook.soloader.SoLoader + +import expo.modules.ApplicationLifecycleDispatcher +import expo.modules.ReactNativeHostWrapper + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper( + this, + object : DefaultReactNativeHost(this) { + override fun getPackages(): List { + val packages = PackageList(this).packages + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + return packages + } + + override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry" + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + ) + + override val reactHost: ReactHost + get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost) + + override fun onCreate() { + super.onCreate() + SoLoader.init(this, OpenSourceMergedSoMapping) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + ApplicationLifecycleDispatcher.onApplicationCreate(this) + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig) + } +} diff --git a/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png b/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png deleted file mode 100644 index 39e72b656f..0000000000 Binary files a/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png and /dev/null differ diff --git a/example/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png new file mode 100644 index 0000000000..d2e4ebb523 Binary files /dev/null and b/example/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png differ diff --git a/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png b/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png deleted file mode 100644 index 39e72b656f..0000000000 Binary files a/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png and /dev/null differ diff --git a/example/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png new file mode 100644 index 0000000000..d2905ac97e Binary files /dev/null and b/example/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png differ diff --git a/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png b/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png deleted file mode 100644 index 39e72b656f..0000000000 Binary files a/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png and /dev/null differ diff --git a/example/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png new file mode 100644 index 0000000000..c2d00af737 Binary files /dev/null and b/example/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png differ diff --git a/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png b/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png deleted file mode 100644 index 39e72b656f..0000000000 Binary files a/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png and /dev/null differ diff --git a/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png new file mode 100644 index 0000000000..7979a98391 Binary files /dev/null and b/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png differ diff --git a/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png b/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png deleted file mode 100644 index 39e72b656f..0000000000 Binary files a/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png and /dev/null differ diff --git a/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png b/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png new file mode 100644 index 0000000000..e8d6a6af53 Binary files /dev/null and b/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png differ diff --git a/example/android/app/src/main/res/drawable/splashscreen.xml b/example/android/app/src/main/res/drawable/ic_launcher_background.xml similarity index 59% rename from example/android/app/src/main/res/drawable/splashscreen.xml rename to example/android/app/src/main/res/drawable/ic_launcher_background.xml index c8568e1622..883b2a080f 100644 --- a/example/android/app/src/main/res/drawable/splashscreen.xml +++ b/example/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,3 +1,6 @@ + + + \ No newline at end of file diff --git a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml index f35d996202..5c25e728ea 100644 --- a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -17,10 +17,11 @@ android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material" android:insetRight="@dimen/abc_edit_text_inset_horizontal_material" android:insetTop="@dimen/abc_edit_text_inset_top_material" - android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> + android:insetBottom="@dimen/abc_edit_text_inset_bottom_material" + > -