android - 在 Android Webview 上运行 create-react-app 的构建

标签 android reactjs android-webview create-react-app

我想在 Android 的 WebView 中运行 create-react-app 的构建。当我使用 JavaScript 和 CSS 运行一个简单的 Web 应用程序时,它运行良好。但是在尝试运行 create-react-app 时,我最终得到了一个空屏幕。

以下是我遵循的步骤:

  1. 我对 create-react 应用程序使用了以下命令:

    npm install -g create-react-app

    创建 react 应用我的应用

  2. 我使用以下方法创建了构建文件:

    npm 运行构建

  3. 我将构建文件夹复制并粘贴到 Assets 目录下的 Android 项目结构中。 The build files in my Android Project Structure

  4. 我的主要 Activity 代码:

    公共(public)类 MainActivity 扩展 AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        WebView view = (WebView) findViewById(R.id.web_view);
        WebSettings webSettings = view.getSettings();
        webSettings.setJavaScriptEnabled(true);
        view.loadUrl("file:///android_asset/build/index.html");
    }
    

我在运行 Android 应用程序时出现空白屏幕。我做错了什么?

最佳答案

解决这两个问题

  1. 让CRA建立相对路径,

打开CRA项目的package.json,在同级"version"标签后添加"homepage": "." .

  1. react-router 中使用 HashRouter

react-router 如果您正在使用并且您应该使用的话。我们通常使用BrowserRouterHashRouter 非常无用,建议 not to use .但这种场景是使用HashRouter的最佳场所。

附言。如果您需要更多解释或示例,请发表评论,我也会进行编辑和添加

关于android - 在 Android Webview 上运行 create-react-app 的构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45486129/

相关文章:

android - 已签名的 apk 在我的设备上不起作用

java - 如何在不使用 intents 的情况下在 Google+ 上分享或上传图片?

reactjs - 如何处理 React 中的多个复选框?

javascript - 当输入聚焦时,React Native 有条件地渲染部分 View

android - DialogFragment 打开数据库,DatabaseLocked

javascript - 使用 React Redux 的异步数据加载持续存在

android - 如何将数据从一个 Fragment 发送到另一个 Fragment?

android-webview - Android 中 WebView 的默认超时时间是多少?

android - 更改屏幕方向时如何保存 WebView

android - 单击事件触发时如何确定 subview 的父级?