如何在React Native Android项目的MainActivity.java中正确添加启动屏配置代码
React Native Splash Screen Android端配置解决方案
构建失败的核心原因
报错通常来自两个问题:
- 缺少必须的导入包声明
onCreate方法放置位置错误,嵌套到了现有其他方法内部
具体修改步骤
- 先在文件头部导入必须的依赖,根据你安装的
react-native-splash-screen版本二选一即可:
package myApp.tasawk.com; // 新增导入1:必须添加 import android.os.Bundle; // 二选一:版本>=0.3.1用这个 import org.devio.rn.splashscreen.SplashScreen; // 二选一:版本<0.3.1用这个 // import com.cboy.rn.splashscreen.SplashScreen; import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; import com.facebook.react.ReactRootView; import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
- 将
onCreate方法作为MainActivity类的直接成员添加,不要放在其他方法内部,推荐放在getMainComponentName方法下方即可:
public class MainActivity extends ReactActivity { /** * Returns the name of the main component registered from JavaScript. This is used to schedule * rendering of the component. */ @Override protected String getMainComponentName() { return "myApp"; } // 新增的onCreate方法 start @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen.show(this); super.onCreate(savedInstanceState); } // 新增的onCreate方法 end @Override protected ReactActivityDelegate createReactActivityDelegate() { return new ReactActivityDelegate(this, getMainComponentName()) { @Override protected ReactRootView createRootView() { return new RNGestureHandlerEnabledRootView(MainActivity.this); } }; } }
验证注意点
- 确保
SplashScreen.show(this)的调用顺序在super.onCreate(savedInstanceState)之前,否则启动时会出现白屏 - 修改完成后先清理Android构建缓存再重新运行,避免缓存导致的报错:进入android目录执行
./gradlew clean(Windows端执行gradlew clean)
内容的提问来源于stack exchange,提问作者user16350114
相关产品推荐
相关产品推荐

