Expo React Native应用上架Google Play后启动页与图标显示异常
问题:Expo React Native应用上架Google Play后启动页和图标无法正常显示
我使用Expo React Native开发的应用已通过Google Play Console审核并上架。
截图说明:Google Play商店上架成功的界面
从Play商店下载应用后,发现启动页(splash)和图标无法正常显示,但在Android模拟器中一切正常。
截图说明:设备上显示默认图标和空白启动页的界面
以下是我认为配置无误的app.json代码:
{ "expo": { "name": "My App", "slug": "myapp", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/icon.png", "splash": { "image": "./assets/splash.png", "resizeMode": "cover", "backgroundColor": "#7022a9" }, "updates": { "fallbackToCacheTimeout": 0 }, "assetBundlePatterns": [ "assets/images/*" ], "ios": { "supportsTablet": true, "bundleIdentifier": "com.myapp.app" }, "android": { "package": "com.myapp.app", "versionCode": 1, "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#4628a8" } }, "web": { "favicon": "./assets/favicon.png" } } }
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myapp"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <queries> <intent> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https"/> </intent> </queries> <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> <meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="47.0.0"/> <meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/> <meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/> <meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/> <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/@oseyi/myapp"/> <meta-data android:name="expo.modules.updates.EXPO_RELEASE_CHANNEL" android:value="default"/> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false"/> </application> </manifest>
解决方案:
1. 修正资源打包路径
当前assetBundlePatterns仅包含assets/images/*,但图标和启动页放在assets/根目录,需添加assets/*确保打包时包含这些资源:
"assetBundlePatterns": [ "assets/*", "assets/images/*" ]
2. 统一包名配置
app.json中Android的package为com.myapp.app,但AndroidManifest.xml根节点的package是com.myapp,包名不匹配会导致资源读取失败,需将AndroidManifest.xml的package改为com.myapp.app。
3. 重新构建正式包
- 先清理缓存:
expo r -c - 使用正式命令构建AAB/APK:
eas build --platform android # 或使用expo build(若未迁移到EAS) expo build:android -t app-bundle - 重新上传构建好的包到Google Play Console,等待更新生效。
4. 检查自适应图标资源
确认adaptive-icon.png尺寸符合要求(至少1024x1024px),背景色配置正确,部分设备会优先加载自适应图标而非普通图标。
内容的提问来源于stack exchange,提问作者delle
相关产品推荐
相关产品推荐

