相关疑难解决方法(0)

在Android上运行NodeJS的可行选项(2017年8月)

有许多旧的SO线程处理在Android上运行NodeJS.其中大多数不再可行(JXCore)和/或提供令人困惑,过时,不完整或错误的信息.

因此,我调查了目前(截至2017年8月)可行的方法,并找到了三个可能的候选人.

要在他们之间做出决定,我想知道:

  • 这些方法之间的主要区别
  • 每种方法的特定专业人员和骗局
  • 可能遇到障碍,挑战和缺点
  • 你知道其他可行的替代方案吗?

可行的方法是:

  1. 运行包含NodeJS(J2V8)的V8 javascript引擎
  2. 直接使用NodeJS,嵌入为本机库(node-on-android)
  3. 将React Native与NodeJS app-as-a-service(react-native-node)相结合

除此之外,我还找到了许多相关的有趣资源:

  • NPM在没有root的情况下直接使用Termux安装NodeJS(不适用于最终用户)
  • LiquidCore - 原生移动微应用程序devenv(未调查,有趣的概念)
  • dna2oslab - 有一个用于节点可执行文件的工作NodeJS构建脚本
  • 为Android构建NodeJS - 博客提供有用的编译技巧和示例项目

javascript java android node.js react-native

32
推荐指数
2
解决办法
6193
查看次数

在64位android上使用32位jni库

我尝试在Nexus 9上使用本机库运行应用程序.

应用程序退出并显示错误消息:

java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit
Run Code Online (Sandbox Code Playgroud)

是否有任何已知的解决方法来解决此问题(当然,重新编译库并使apk更大)?

java-native-interface android 32bit-64bit

28
推荐指数
3
解决办法
3万
查看次数

React-Native + Android,仅适用于armeabi架构

注意:我正在提供这些库,我不能为其他架构制作其他库.

我目前正在移植一个Android应用程序,以反应本机使用本机库,但我只有armeabi可用.到目前为止,原始项目没问题,因为所有x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi.

然后当我从react-native生成一个新项目并包含那些armeabi文件时,在运行apk时找不到一些库.当我解压缩原始项目生成的apk时,我可以找到文件夹:lib/armeabi包含所有库,所以没问题.现在,当我解压由react-native生成的apk时,我有2个文件夹:lib/armeabi-v7a和lib/x86,并且缺少一些库.

这是我的反应原生的gradle配置:

apply from: "../../node_modules/react-native/react.gradle"

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU …
Run Code Online (Sandbox Code Playgroud)

android android-ndk react-native react-native-android

6
推荐指数
1
解决办法
4974
查看次数

React Native 应用程序开始白屏

我正在使用 React Native 开发一个 Android 应用程序。有时,在我运行react-native run-android并启动应用程序后,它会挂在白屏上。摇晃我的手机没有任何作用,当我在 VSCode 调试器中单击“暂停”时,它没有任何效果。如果我按主页按钮将应用程序设为后台,然后再次单击该应用程序,它会正常启动并且调试按预期工作。这是一个已知的问题?我能做些什么来修复它?

android reactjs react-native visual-studio-code react-native-android

6
推荐指数
1
解决办法
5829
查看次数

Android java.lang.UnsatisfiedLinkError: 找不到要加载的 DSO

我刚刚建立了一个全新的 react-native 项目(0.62)。运行新的调试版本工作正常。

我按照文档设置了签名:https://reactnative.dev/docs/signed-apk-android,并确保我使用以下 ABI:"armeabi-v7a", "x86", "arm64-v8a", "x86_64".

为了测试发布版本,我运行以下命令: npx react-native run-android --variant release

问题

运行上述命令后,应用程序尝试启动并立即崩溃并显示以下堆栈跟踪:

    --------- beginning of crash
2020-05-01 09:34:26.707 19961-19976/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
    Process: <BUNDLE_ID>, PID: 19961
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
Run Code Online (Sandbox Code Playgroud)

果然,当我解包 APK 时,里面没有 libhermes.so /lib/x86_64(我目前正在像素 2 API 28 上进行测试)。

我不确定为什么 Hermes 没有被启用,但只是为了确保我在 build.grade 中设置了以下内容:

project.ext.react = [
    enableHermes: true,  // clean and rebuild if changing
]
Run Code Online (Sandbox Code Playgroud)

现在在清洁和建造之后我确实看到了libhermes.so。不幸的是,我仍然看到同样的问题。但是我可以看到该文件存在。 …

android react-native

6
推荐指数
1
解决办法
4667
查看次数