React Native Android集成OneSignal后名称错误 启动跳转非MainActivity如何解决

你提供的MainActivity.java和MainApplication.java配置没有问题,不需要修改。两个异常的根源是OneSignal SDK的AndroidManifest配置在构建合并时优先级更高,覆盖了你项目的自定义配置,按以下步骤修复即可:
修复步骤
1. 修复默认启动Activity跳转错误
打开项目下的android/app/src/main/AndroidManifest.xml文件:
- 首先在根
<manifest>节点添加tools命名空间,用于覆盖第三方SDK的冲突配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.social.firebase.example.socializus">
- 找到
MainActivity的声明节点,修改为如下配置,明确指定它为桌面启动入口:
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true" tools:replace="android:exported"> <intent-filter tools:replace="android:action, android:category"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
该配置会强制覆盖OneSignal SDK自带的Activity的启动器优先级,让你的MainActivity成为默认启动页。
2. 修复应用名称显示错误
同样在AndroidManifest.xml中找到<application>节点,新增tools替换规则覆盖SDK的应用名配置:
<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" tools:replace="android:label">
tools:replace="android:label"会强制使用你项目定义的应用名,覆盖OneSignal SDK自带的RNOneSignalAndroid名称。
如果修改后应用名仍未生效,检查android/app/src/main/res/values/strings.xml中的app_name字段是否为你要设置的自有应用名。
3. 清理缓存重新构建
配置修改完成后,进入项目的android目录执行清理命令清除旧构建缓存:./gradlew clean
之后再重新运行React Native项目即可生效。
内容的提问来源于stack exchange,提问作者Dorian
相关产品推荐
相关产品推荐

