AndroidStudio+ReactNative混合开发所遇到的问题

Q:如何手动创建assets目录下bundle文件

A:先在app/src/main/目录下创建assets文件夹



在package.json  scripts中添加

"bundle-android":"node node_modules/react-native/local-cli/cli.js bundle --platform android --dev false --entry-file index.android.js --bundle-output ../BaseProject/app/src/main/assets/index.android.bundle --assets-dest ../BaseProject/app/src/main/res/"

注意:加粗字体为自身项目名称,我的项目名称是BaseProject

在终端项目的根目录下输入

node node_modules/react-native/local-cli/cli.js bundle --platform android --dev false --entry-file index.android.js --bundle-output ../BaseProject/app/src/main/assets/index.android.bundle --assets-dest ../BaseProject/app/src/main/res/

(与scripts中添加的一致)


创建完毕,在asstes目录下可以查看到index.android.bundle

Q:Option "--entry-file" is missing.

A:会报这个错是因为在手动创建index.android.bundle时项目目录写错了

Q:Could not resolve com.facebook.react:react-native:0.60.5.

A:因为在项目目录中有node_modules,所以需要依赖本地的react-native,否则会指向远程库中的react,版本为20.1

我的项目react版本为0.60.5

Q:项目启动会报.so库找不到(名字我忘记了),

A:因为node_modules本地库里缺少hermes-engine

终端输入:yarn add --dev [email protected] 

下载hermes-engine库

将库复制到node_modules里

并且在app.gradle中添加依赖


def jscFlavor = 'org.webkit:android-jsc:+'

def useIntlJsc = false

def enableHermes = project.ext.react.get("enableHermes",false);

dependencies {

if (enableHermes) {

    def hermesPath = "$rootDir/node_modules/hermes-engine/android/"

    debugImplementation files(hermesPath + "hermes-debug.aar")

    releaseImplementation files(hermesPath + "hermes-release.aar")

} else {

    implementation jscFlavor

}

}

在进行build

Q:Could not connect to development server after updating react-native.

A:在manifest application中添加 android:usesCleartextTraffic="true"

你可能感兴趣的:(AndroidStudio+ReactNative混合开发所遇到的问题)