Javascript React native-使用android studio编译捆绑包
我有一个react本地人的项目,我创建了一个包,并尝试用android打开,但我遇到了下一个错误 2020-01-05 16:09:09.460 12947-13005/com.note.principal E/SoLoader: 找不到要加载的DSO:libhermes.so 2020-01-05 16:09:09.486 12947-13005/com.note.principal E/AndroidRuntime:致命异常: 创建\u反应\u上下文 流程:com.note.principal,PID:12947 java.lang.UnsatisfiedLinkError:找不到要加载的DSO:libhermes.so 在com.facebook.soloader.soloader.doLoadLibraryBySoName上(soloader.java:738) 在com.facebook.soloader.soloader.loadLibraryBySoName上(soloader.java:591) 在com.facebook.soloader.soloader.loadLibrary上(soloader.java:529) 在com.facebook.soloader.soloader.loadLibrary上(soloader.java:484) 在com.facebook.hermes.react executor.HermesExecutor.(HermesExecutor.java:20) 在com.facebook.hermes.reactexecutor.hermesecutorFactory.create上(hermesecutorFactory.java:27) 位于com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:952) 运行(Thread.java:764) react native上的project版本为Javascript React native-使用android studio编译捆绑包,javascript,android,maven,react-native,gradle,Javascript,Android,Maven,React Native,Gradle,我有一个react本地人的项目,我创建了一个包,并尝试用android打开,但我遇到了下一个错误 2020-01-05 16:09:09.460 12947-13005/com.note.principal E/SoLoader: 找不到要加载的DSO:libhermes.so 2020-01-05 16:09:09.486 12947-13005/com.note.principal E/AndroidRuntime:致命异常: 创建\u反应\u上下文 流程:com.note.principa
{
"name": "Notes",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"bundle_android": "react-native bundle --entry-file index.js --platform android --dev false --bundle-output ./index.android.bundle",
"bundle_ios": "react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./main.jsbundle",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"react": "16.9.0",
"react-native": "0.61.5",
"react-navigation": "^4.0.10"
},
"devDependencies": {
"@babel/core": "^7.7.7",
"@babel/runtime": "^7.7.7",
"@react-native-community/eslint-config": "^0.0.6",
"babel-jest": "^24.9.0",
"eslint": "^6.8.0",
"jest": "^24.9.0",
"metro-react-native-babel-preset": "^0.57.0",
"react-test-renderer": "16.9.0"
},
"jest": {
"preset": "react-native"
}
}
我运行下一个脚本
npm run bundle_android
但是当我运行应用程序时,它总是显示错误
couldn't find DSO to load: libhermes.so 2020-01-05 16:09:09.486
科林的密码是
package com.note
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import androidx.appcompat.app.AppCompatActivity
import com.facebook.react.ReactInstanceManager
import com.facebook.react.ReactRootView
import com.facebook.react.common.LifecycleState
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler
import com.facebook.react.shell.MainReactPackage
import com.facebook.soloader.SoLoader
import com.note.sdkcore.SDKCorePackage
class ReactActivity : AppCompatActivity(), DefaultHardwareBackBtnHandler {
private val OVERLAY_PERMISSION_REQ_CODE = 1
private lateinit var mReactRootView: ReactRootView
private lateinit var mReactInstanceManager: ReactInstanceManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
SoLoader.init(this, false)
mReactRootView = ReactRootView(this)
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(application)
.setCurrentActivity(this)
.setApplication(application)
.setBundleAssetName("index.android.bundle")
.addPackage(MainReactPackage())
.addPackage(SDKCorePackage())
.setInitialLifecycleState(LifecycleState.RESUMED)
.build()
// The string here (e.g. "MyReactNativeApp") has to match
// the string in AppRegistry.registerComponent() in index.js
mReactRootView.startReactApplication(mReactInstanceManager, "Notes", null)
setContentView(mReactRootView)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
val intent = Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:$packageName")
)
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE)
}
}
}
override fun invokeDefaultOnBackPressed() {
super.onBackPressed()
}
override fun onBackPressed() {
if (mReactInstanceManager != null) {
mReactInstanceManager.onBackPressed()
} else {
super.onBackPressed()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
// SYSTEM_ALERT_WINDOW permission not granted
}
}
}
mReactInstanceManager?.onActivityResult(this,requestCode, resultCode, data)
}
}
有人知道答案我在搜索答案,但我什么也没找到,然后下一步帮助我解决问题。它有助于用android编译一个捆绑包 第一:你需要更改应用程序/梯度
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
applicationId ""
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
project.ext.react = [
enableHermes: false,
]
def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false);
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "com.facebook.react:react-native:+"
implementation 'com.android.support:support-annotations:27.1.1'
if (enableHermes) {
implementation project(':hermes-engine')
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
}
第二:你需要改变校长的等级
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
第三个:你需要在设置gradle时添加下一个
include ':app'
rootProject.name='Notes'
include ':hermes-engine'
project(':hermes-engine').projectDir = new File(rootProject.projectDir, '../node_modules/hermes-engine/android/')
我在用android打开一个包时遇到了一个问题,我搜索了不同的信息,但这是我唯一的功能。然后是解决用户何时打开捆绑包的步骤。我更改了描述并指定了技术