无法从 windows 上的资产 index.android.bundle 加载脚本
Unable to load script from assets index.android.bundle on windows
我正在尝试 运行 我的第一个 React Native 项目,这是我第一次在我的设备上 (Android 4.2.2)。
然后我得到:
unable to load script from assets index.android.bundle
我使用的命令:
cd (project directory)
react-native start
react-native run-android
我在关注 React Native tutorial(在 Linux 上开发并针对 Android)时遇到了同样的问题。
这 issue 帮助我解决了以下步骤中的问题。
- (在项目目录中)
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
您可以通过将它们放在 package.json
的 scripts
部分来自动执行上述步骤,如下所示:
"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
然后您每次都可以从命令行执行npm run android-linux
。
您可以按照official page中提到的说明来解决这个问题。此问题发生在 真实设备 上,因为 JS 包位于您的开发系统上,而您真实设备中的应用不知道它的位置。
OS: Windows
Another way to resolve this problem after trying two methods above
(because I installed SDK not in DEFAULT LOCATION like C:\users\"user_name"\appdata\local\sdk)
If you noticed that command line announced: "'adb' is not recognized as an internal or external command..."
So this is how I get over:
Examples: I installed SDK in D:\Android\sdk
So I will insert path in System Variables 2 more lines:
D:\Android\sdk\tools
D:\Android\sdk\platform-tools
(If you don't know how to edit path System Variables, here's the topic: https://android.stackexchange.com/questions/38321/what-do-i-type-in-path-variable-for-adb-server-to-start-from-cmd/38324)
Then I 运行 cmd again: react-native run-android
It worked for me.
我在真实的 android 设备上遇到过同样的问题。
解决方案:基于此 answer by Niltoid
- 查找您的本地 IP
- 打开应用并摇晃您的 Android 设备
- 转到开发设置并>调试服务器...
- 粘贴你的IP和端口; X.X.X.X:8088"(其中 X 是您的本地 IP)
对于 Mac 用户:打开您的网络首选项,在这里您将获得您的本地 IP。
如果当运行 react-native run-android
命令时,跟踪的第二行是
JS server not recognized, continuing with build...
这意味着应用程序的打包程序无法启动,如果没有一些额外的步骤,应用程序将无法加载。注意trace结尾还是报成功:
BUILD SUCCESSFUL
问题可能是某些端口冲突(在我的情况下,它是我完全忘记的默认 IIS 站点)。该问题的另一种表现形式是无法在 Chrome 中打开 http://localhost:8081/debugger-ui
URL。
解决端口冲突后,跟踪将报告
Starting JS server...
然后另一个节点 window 将打开 (node ...cli.js start
),应用程序将 load/reload 成功。
之后您应该可以在 Chrome 中使用 http://localhost:8081/debugger-ui
打开调试控制台。
确保您已将 /path/to/sdk/platform-tools 添加到您的路径变量。
当你运行 react-native 运行-android时,它运行s adb reverse tcp:< device-port > tcp:< local-port >命令将请求从您的设备转发到计算机本地的服务器 运行ning。
如果未找到 adb,您将看到类似的内容。
/bin/sh: 1: adb: not found
Starting the app (.../platform-tools/adb shell am start -n
com.first_app/com.first_app.MainActivity...
Starting: Intent { cmp=com.first_app/.MainActivity }
如果您运行您的应用程序在物理设备上运行并收到此错误
unable to load script from assets index.android.bundle
尝试运行命令:
adb reverse tcp:8081 tcp:8081
它对我有用...
这个问题也可能是由于设备/模拟器的蜂窝数据被关闭引起的。确保检查一下。
在 mac 中遇到了同样的问题,花了 2 天后我终于能够正常工作了。
从 Emulator cellular data was turned off
开始,我得到了 unable to load script from assets index.android.bundle make sure your bundle is running
。
确保您的 Emulator cellular data is turned on
通过执行此程序包服务器能够捆绑 index.android.js
。希望对处于开发阶段的人有所帮助。
如果您按以下方式使用Windows 运行命令,或者出现错误"Cannot find entry file index.android.js"
mkdir android\app\src\main\assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
对于此错误:"unable to load script from assets 'index.android.bundle'"
1).在以下位置检查 "assets" 文件夹:mkdir android\app\src\main\assets
如果文件夹不可用,请手动创建名称为 "assets" 的文件夹。并在终端中执行 Curl 命令。
2).卷曲命令:curl "http://localhost:8081/index.android.bundle?platform=android" -o"android/app/src/main/assets/index.android.bundle"
它将自动在资产文件夹中创建 "index.android.bundle" 文件并解决问题。
3).本机反应 运行-android
使用 npm 版本 4.3.0 react-native-cli 版本 2.01 react-native 版本 0.49.5
在项目目录中,
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
文件名由index.android.js更改为index.js
即使在模拟器上 运行 我也遇到了同样的问题。我做了一个快速的解决方法,这样我就可以拥有正常的开发工作流程。
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
// return true here to load JS from the packager
// BuildConfig.DEBUG for me was set to false which meant it
// it was always trying to load the assets from assets folder.
return true;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
尝试进行生产构建时可能必须还原更改。
当我将 react-native 更新到 0.49.5 时,出现了这个问题,当我按照这个 Breaking changes and deprecations
它消失了。
补充一个对我有用的明显建议。删除应用程序,重新启动服务器并再次从您的工具部署到设备。
如果已经尝试了以上所有解决方案但仍然遇到错误。
尝试像我一样配置你的 genymotion:
几个月来我一直遇到同样的问题。我最初使用@Jerry 的解决方案,但是,这是一个错误的解决方案,因为它没有完全解决问题。相反,它所做的是将每个构建作为生产构建,这意味着您在应用程序中所做的任何细微更改都意味着需要重建整个应用程序。
虽然这是一个暂时的解决方案,但从长远来看,它的效果非常糟糕,因为您无法再利用 React Native 令人惊叹的开发工具,例如热重载等。
显示了正确的解决方案:
在您的 MainApplication.java
文件中,替换以下内容:
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
和
@Override
public boolean getUseDeveloperSupport() {
return true;
}
因为某些原因 BuildConfig.DEBUG
总是返回 false 并在资产目录中生成一个包文件。
通过手动将其设置为 true,您将强制应用程序使用打包程序。这在生产中不起作用,因此请务必将其更改为 false 或默认值。
别忘了运行
$ adb reverse tcp:8081 tcp:8081
我想你没有安装 yarn 尝试用 chocolatey 或其他东西安装它。它应该在创建项目之前安装(react-native init 命令)。
无需创建资产目录。
不行就回复。
编辑:
在最近版本的 react-native 中,他们已经修复了它。如果你想完全摆脱这个只需卸载节点(对于完全卸载 Completely remove node 参考这个 link)并重新安装节点,react-native-cli 然后创建你的新项目。
这个问题我直接用运行ning解决了:
react-native start
然后
adb reverse tcp:8081 tcp:8081
在命令行上。然后我可以 运行:
react-native run-android
所以我不会浪费时间运行:
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
每次。
我的 mac 阻塞端口 8081 上的 McAfee 有问题,不得不将其更改为 8082。
首先运行你的包服务器:
react-native start --port 8082
打开另一个终端,照常启动 android 应用程序:
react-native run-android
完成后,现在重写 adb 隧道的 tcp 端口:
adb reverse tcp:8081 tcp:8082
查看 adb tcp 隧道列表:
adb reverse --list
您现在应该会看到一条温馨的消息:
(reverse) tcp:8081 tcp:8082
转到您的应用并重新加载,完成!
PS:不要更改应用程序开发设置中的任何内容,如果您添加了 "localhost:8082",只需删除它,将其留空。
编辑:
对于那里的所有 McAfee 受害者,如果您具有 root 访问权限,则有更简单的解决方案,只需暂时终止位于端口 8081 上的 McAfee 进程,根本不需要更改端口:
sudo launchctl remove com.mcafee.agent.macmn
我也遇到了这个问题,因为当我 运行 在模拟器上投影时它工作正常但在真实设备上它给出了这个错误。所以我通过以下解决方案解决了这个问题
第一步: 首先打开 cmd 并转到您的 SDK 管理器 Platform-tools 文件夹
cd C:Development\Android\Sdk\Platform-tools
第二步:现在运行这个命令:
adb devices
执行此命令后检查命令提示符中列出的设备
第三步:现在运行这个
adb reverse tcp:8081 tcp:8081
现在您的设置已完成
第 4 步:转到您的项目目录并运行此命令
react-native run-android
我在尝试调试我的代码时遇到了这个问题,(在我的 android phone 和 React 开发中使用 Toggle 检查器),我做了这个简单的步骤:
- 在 phone 中打开菜单(其中 Reload 是,我可以通过长按 back-button 或摇动 phone 来打开它)
enter image description here
- 点击开发设置
- 在调试 -> 设备的调试服务器主机和端口应为空
注意:如果你在这里写了端口或任何东西(用于调试)你应该清除它。
我遇到了这个问题,经过大量搜索后我解决了这个问题。
c:\ProjectFolder\ProjectName> react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
比 运行 本机反应:
c:\ProjectFolder\ProjectName>react-native run-android
我遇到这个问题不是在真实设备上,而是在模拟器上。在尝试使用 android studio 运行 代码之前,我通过 运行ning react-native 在终端中启动来修复它。我在终端中 运行ning react-native run-android 时从未遇到过这个问题。
我通过这个cmd解决了它:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
就我而言,我忘记了 Android Emulator
wifi 已禁用。
为了解决这个问题,我只是向下滑动通知栏以展开菜单并启用 Wifi
连接。
激活Wifi
连接后,我的问题已经解决。
不要忘记在模拟器设备中打开互联网,
我解决了这个错误,它工作完美:V
我收到此错误是因为我关闭互联网以测试 NetInfo :D
这可能是由于您的 React Native 项目代码库中未linked 资产引起的,例如当您重命名项目 application/bundle id 或添加没有 link 的外部包时正确的,例如。
直接在你的项目根目录下试试:
react-native link
react-native run-android
对于所有从 create-react-native-app 开发并被弹出并在 development
中遇到此问题的人,
这对我有用
接受的答案中的一些细节
(in project directory) mkdir android/app/src/main/assets
这里是更改的部分,因为您正在开发中摆脱 --dev: false
部分:
react-native bundle --platform android --entry-file
index.js --bundle-output
android/app/src/main/assets/index.android.bundle --assets-dest
android/app/src/main/res
关闭所有终端后,从 android/app/ 中删除构建文件夹以确保您开始干净地构建您的应用程序,打开一个新终端,然后
(in project directory) npm run android
将提示打包程序控制台(在另一个终端中)并成功构建
上Windows
如果你确定node.js在你的系统上安装成功,请检查系统环境变量并在系统变量路径中添加C:\windows\system32
对于IOS:
在终端中:
cd ios
删除构建文件夹: rm -r build
运行 再一次: react-native run-ios
或者,您可以打开 Finder,导航至 YOUR_PROJECT/ios 并 删除 build 文件夹。
然后 运行 再次:react-native run-ios
对于ANDROID:
在终端中:
cd android/app
删除构建文件夹: rm -r build
运行 再一次: react-native run-android
或者,您可以打开 Finder,导航至 YOUR_PROJECT/android/app 并 删除 build 文件夹。
然后 运行 再次:react-native run-android
这是一个一般的错误信息,你可能在react native应用开发过程中遇到过。因此,在本教程中,我们将为该问题提供解决方案。
问题描述:
无法从 windows 上的资产 index.android.bundle 加载脚本
无法从 windows
上的资产 index.android.bundle 加载脚本
按照以下步骤解决上述问题:
第 1 步:在您的项目目录中创建 "assets" 文件夹
现在在 "MobileApp\android\app\src\main" 的项目目录中创建资产文件夹。您可以手动创建资产文件夹:
<或>
您也可以使用命令创建文件夹。
命令 :
mkdir android/app/src/main/assets
第 2 步:运行安装您的 React Native 应用程序
让运行下面的命令运行模拟器或物理设备中的本机应用程序。
切换到项目目录。
cd MobileApp
运行 以下命令可帮助您捆绑 android 应用程序项目。
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets -dest android/app/src/main/res
运行 运行 在模拟器或物理设备中响应本机应用程序的最后一步。
本机反应 运行-android
<或>
您也可以将最后两个命令合二为一,在这种情况下您只需执行一次命令。
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets -dest android/app/src/main/res && react-native 运行-android
<或>
您可以通过将它们放在 package.json 的脚本部分来自动执行上述步骤,如下所示:
"android-android": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
如果一切设置正确,您应该很快就会在 Android 模拟器中看到您的新应用 运行ning。
Ubuntu
第一次,我用 react-native init project-name
创建了新应用。
我得到了同样的错误。
所以我按照以下步骤解决了这个问题。
- 首先 运行
sudo chown user-name-of-pc /dev/kvm
我的情况。
从您的 Android phone 进行调试时,select Use USB to Transfer photos (PTP)
.
在 project-name/android/app/src/main
中创建文件夹 assets
- 确保
index.js
可用于您的项目 root
目录,然后 运行 在 cd project-name
目录后的控制台命令下。
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
或
对于 index.android.js 然后
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
运行 命令 ./studio.sh
在 android-studio/bin
目录中。它将打开 Android Studio。
运行命令react-native run-android
.
1 转到您的项目目录并检查此文件夹是否存在 android/app/src/main/assets
- 如果存在则删除两个文件即
index.android.bundle
和index.android.bundle.meta
- 如果文件夹 assets 不存在,则在那里创建 assets 目录。
2.From 你的项目根目录做
cd android && ./gradlew clean
3.Finally,导航回根目录并检查是否有一个名为index.js
的单一入口文件
如果只有一个文件,即 index.js 那么 运行 按照命令 react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
如果有两个文件,即 index.android.js 和 index.ios.js 那么 运行 这个 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
- 现在运行
react-native run-android
关注这个,对我有用。
https://github.com/react-community/lottie-react-native/issues/269
转到您的项目目录并检查此文件夹是否存在android/app/src/main/assets
i) 如果存在则删除两个文件即 index.android.bundle 和 index.android.bundle.meta
ii) 如果文件夹 assets 不存在,则在那里创建 assets 目录。
从你的根项目目录做
cd android && ./gradlew clean
最后,导航回根目录并检查是否有一个名为 index.js 的单一条目文件
i) 如果只有一个文件,即 index.js 然后 运行 下面的命令
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
ii) 如果有两个文件,即 index.android.js 和 index.ios.js 那么 运行 这个
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
现在运行 react-native 运行-android
我花了几个小时试图解决这个问题。我的问题不是 Windows 特有的,而是 Android.
特有的
访问开发服务器在本地和模拟器的浏览器中都有效。唯一不起作用的是在应用程序中访问开发服务器。
Starting with Android 9.0 (API level 28), cleartext support is disabled by default.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
查看更多信息:
确保 Metro Builder 运行 使您的物理设备和服务器同步
首先,运行这个命令给运行地铁建设者
npm start
然后就可以在react native中开始build了
react-native run-android
他们这次应该没有错误。如果您希望您的代码在更改时实时重新加载。摇动您的设备,然后点击启用实时重新加载
就我而言,我已从 MainApplication.java 中删除了下面一行。 (之前是我误加的。):-
import com.facebook.react.BuildConfig;
之后清理项目并点击命令
react-native run-android
我认为在所有其他解决方案之前要做的第一件事是:
1.检查您的设备是否在线?
2。如果您是 运行 真实设备上的应用程序,那么该设备应该与开发服务器 运行.
在同一个网络上
更多信息请见this page.
使用mkdir ... /assets && react-native bundle --platform..
不能完全解决这个问题,
请注意,每次编辑代码时都必须运行此命令重新生成文件,并且在Reload
或Debug JS Remotely
后再次显示错误。
导致此问题的根本原因是您的应用无法连接到服务器(由于某些未知原因)
这是我的解决方案:
首先,在其他主机和端口启动服务,如:
react-native start --port 8082 --host 0.0.0.0
然后,打开应用程序开发菜单 > 开发设置 > 设备的调试服务器主机
- 输入
youripv4address:8082
- 开发菜单 > 重新加载
希望对您有所帮助
我刚遇到完全相同的问题并解决了。所以希望能有所帮助。
假设您正在组装一个 release 应用程序包 (.apk)
检查您的资产文件夹是否存在?:\android\app\src\main\assets
如果没有,创建一个。
执行后"Assemble Release",检查那个文件夹里有没有东西(\android\app\src\main\assets)
如果没有,找到 js bundle file(index.android.bundle),它应该在以下路径之一以上:
*a)\android\app\build\intermediates\merged_assets\release\out\index.android.bundle
b)\android\app\build\intermediates\merged_assets\release\mergeReleaseAssets\out\index.android.bundle
c)\android\app\build\intermediates\assets\release\index.android.bundle
d)\android\app\build\generated\assets\react\release\index.android.bundle*
更好的方法是使用"Everything"搜索文件名:index.android.bundle.
然后将这个文件复制到你的assets文件夹中(\android\app\src\main\assets\index.android.bundle)
回到powershell或者命令控制台,执行:
react-native run-android --variant=release
应该可以。
祝你好运!
转到开发设置 -> 调试设备的服务器主机和端口 -> 输入您的计算机 Wifi IP 地址(Mac OS:转到系统偏好设置 -> Wifi 获取 Wifi IP地址)
最终重建申请和运行
如果您在 Dev Settings 中输入了 'Debug server host & port for device',请确保删除您输入的内容。
这个问题我想了半天...
如果您使用的是 API 目标版本高于 28.0.0 那么您可能会遇到这个问题。
只需添加这一行
android:usesCleartextTraffic="true"
在您的清单应用程序块中。
清单应用程序块代码。
<application
....
android:usesCleartextTraffic="true"
.../>
对我来说 gradle 当我在 Android
上遇到问题时彻底修复了它
cd android
./gradlew clean
投票最多的答案似乎有效,但让开发人员在几分钟后看到他们的小改动变得很忙。我按照以下步骤解决了这个问题:
1- 将我的代码推送到 bitbucket/github 仓库(稍后查看更改)
2- 剪切粘贴 android 文件夹到任何安全位置以进行恢复
3- 从我的项目中删除 android 文件夹
4- 运行 react-native 升级
5- 现在,我看到了之前版本和最新版本之间的所有变化(使用 VsCode)
6- 我在这些代码行的 build.gradle 文件中发现了问题。
ext {
buildToolsVersion = "28.0.2"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 27
supportLibVersion = "28.0.0"
}
7- 我复制了这些行(由 react-native 升级脚本生成并再次删除 android 文件夹。
8- 然后我将粘贴 android 文件夹剪切回我在步骤 2 中剪切粘贴的项目文件夹中。
9 - 用复制的行替换 build.gradle 文件行。
10- 现在一切正常。
希望对您有所帮助。
首先检查您的资产文件夹是否存在于此位置\android\app\src\main\assets
如果否,则 运行 终端中的此命令
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
然后 运行 您的 android 设备上的项目使用
react-native run-android
如果您在主 AndroidManifest.xml
中定义 android:networkSecurityConfig
,也会发生此问题。您的调试 AndroidManifest.xml
中的 android:usesCleartextTraffic="true"
将被忽略。
要解决此问题,您必须将应用配置为允许到本地主机的 http 流量。
创建文件android/src/debug/res/xml/network_security_config.xml
:
<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
并在 android/src/debug/AndroidManifest.xml
中引用它:
<?xml version="1.0" encoding="utf-8" ?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning" />
</manifest>
实际上,在我的情况下(React-native
版本 0.61.5 并尝试在设备上安装调试 APK)none 的答案对我有帮助,我的解决方案是将 bundleInDebug: true
添加到android/app/build.gradle
像这样:
project.ext.react = [
entryFile: "index.js",
enableHermes: true, // clean and rebuild if changing
bundleInDebug: true
]
在命令对我有用之前使用 npx,命令如下所示。
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
为什么要用npx,这里是post
我正在尝试 运行 我的第一个 React Native 项目,这是我第一次在我的设备上 (Android 4.2.2)。
然后我得到:
unable to load script from assets index.android.bundle
我使用的命令:
cd (project directory)
react-native start
react-native run-android
我在关注 React Native tutorial(在 Linux 上开发并针对 Android)时遇到了同样的问题。
这 issue 帮助我解决了以下步骤中的问题。
- (在项目目录中)
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
您可以通过将它们放在 package.json
的 scripts
部分来自动执行上述步骤,如下所示:
"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
然后您每次都可以从命令行执行npm run android-linux
。
您可以按照official page中提到的说明来解决这个问题。此问题发生在 真实设备 上,因为 JS 包位于您的开发系统上,而您真实设备中的应用不知道它的位置。
OS: Windows
Another way to resolve this problem after trying two methods above
(because I installed SDK not in DEFAULT LOCATION like C:\users\"user_name"\appdata\local\sdk)
If you noticed that command line announced: "'adb' is not recognized as an internal or external command..."
So this is how I get over:
Examples: I installed SDK in D:\Android\sdk
So I will insert path in System Variables 2 more lines:
D:\Android\sdk\tools
D:\Android\sdk\platform-tools
(If you don't know how to edit path System Variables, here's the topic: https://android.stackexchange.com/questions/38321/what-do-i-type-in-path-variable-for-adb-server-to-start-from-cmd/38324)
Then I 运行 cmd again: react-native run-android
It worked for me.
我在真实的 android 设备上遇到过同样的问题。
解决方案:基于此 answer by Niltoid
- 查找您的本地 IP
- 打开应用并摇晃您的 Android 设备
- 转到开发设置并>调试服务器...
- 粘贴你的IP和端口; X.X.X.X:8088"(其中 X 是您的本地 IP)
对于 Mac 用户:打开您的网络首选项,在这里您将获得您的本地 IP。
如果当运行 react-native run-android
命令时,跟踪的第二行是
JS server not recognized, continuing with build...
这意味着应用程序的打包程序无法启动,如果没有一些额外的步骤,应用程序将无法加载。注意trace结尾还是报成功:
BUILD SUCCESSFUL
问题可能是某些端口冲突(在我的情况下,它是我完全忘记的默认 IIS 站点)。该问题的另一种表现形式是无法在 Chrome 中打开 http://localhost:8081/debugger-ui
URL。
解决端口冲突后,跟踪将报告
Starting JS server...
然后另一个节点 window 将打开 (node ...cli.js start
),应用程序将 load/reload 成功。
之后您应该可以在 Chrome 中使用 http://localhost:8081/debugger-ui
打开调试控制台。
确保您已将 /path/to/sdk/platform-tools 添加到您的路径变量。
当你运行 react-native 运行-android时,它运行s adb reverse tcp:< device-port > tcp:< local-port >命令将请求从您的设备转发到计算机本地的服务器 运行ning。 如果未找到 adb,您将看到类似的内容。
/bin/sh: 1: adb: not found
Starting the app (.../platform-tools/adb shell am start -n
com.first_app/com.first_app.MainActivity...
Starting: Intent { cmp=com.first_app/.MainActivity }
如果您运行您的应用程序在物理设备上运行并收到此错误
unable to load script from assets index.android.bundle
尝试运行命令:
adb reverse tcp:8081 tcp:8081
它对我有用...
这个问题也可能是由于设备/模拟器的蜂窝数据被关闭引起的。确保检查一下。
在 mac 中遇到了同样的问题,花了 2 天后我终于能够正常工作了。
从 Emulator cellular data was turned off
开始,我得到了 unable to load script from assets index.android.bundle make sure your bundle is running
。
确保您的 Emulator cellular data is turned on
通过执行此程序包服务器能够捆绑 index.android.js
。希望对处于开发阶段的人有所帮助。
如果您按以下方式使用Windows 运行命令,或者出现错误"Cannot find entry file index.android.js"
mkdir android\app\src\main\assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
对于此错误:"unable to load script from assets 'index.android.bundle'"
1).在以下位置检查 "assets" 文件夹:mkdir android\app\src\main\assets
如果文件夹不可用,请手动创建名称为 "assets" 的文件夹。并在终端中执行 Curl 命令。
2).卷曲命令:curl "http://localhost:8081/index.android.bundle?platform=android" -o"android/app/src/main/assets/index.android.bundle"
它将自动在资产文件夹中创建 "index.android.bundle" 文件并解决问题。
3).本机反应 运行-android
使用 npm 版本 4.3.0 react-native-cli 版本 2.01 react-native 版本 0.49.5
在项目目录中,
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
文件名由index.android.js更改为index.js
即使在模拟器上 运行 我也遇到了同样的问题。我做了一个快速的解决方法,这样我就可以拥有正常的开发工作流程。
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
// return true here to load JS from the packager
// BuildConfig.DEBUG for me was set to false which meant it
// it was always trying to load the assets from assets folder.
return true;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
尝试进行生产构建时可能必须还原更改。
当我将 react-native 更新到 0.49.5 时,出现了这个问题,当我按照这个 Breaking changes and deprecations
它消失了。
补充一个对我有用的明显建议。删除应用程序,重新启动服务器并再次从您的工具部署到设备。
如果已经尝试了以上所有解决方案但仍然遇到错误。 尝试像我一样配置你的 genymotion:
几个月来我一直遇到同样的问题。我最初使用@Jerry 的解决方案,但是,这是一个错误的解决方案,因为它没有完全解决问题。相反,它所做的是将每个构建作为生产构建,这意味着您在应用程序中所做的任何细微更改都意味着需要重建整个应用程序。
虽然这是一个暂时的解决方案,但从长远来看,它的效果非常糟糕,因为您无法再利用 React Native 令人惊叹的开发工具,例如热重载等。
显示了正确的解决方案:
在您的 MainApplication.java
文件中,替换以下内容:
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
和
@Override
public boolean getUseDeveloperSupport() {
return true;
}
因为某些原因 BuildConfig.DEBUG
总是返回 false 并在资产目录中生成一个包文件。
通过手动将其设置为 true,您将强制应用程序使用打包程序。这在生产中不起作用,因此请务必将其更改为 false 或默认值。
别忘了运行
$ adb reverse tcp:8081 tcp:8081
我想你没有安装 yarn 尝试用 chocolatey 或其他东西安装它。它应该在创建项目之前安装(react-native init 命令)。
无需创建资产目录。
不行就回复。
编辑: 在最近版本的 react-native 中,他们已经修复了它。如果你想完全摆脱这个只需卸载节点(对于完全卸载 Completely remove node 参考这个 link)并重新安装节点,react-native-cli 然后创建你的新项目。
这个问题我直接用运行ning解决了:
react-native start
然后
adb reverse tcp:8081 tcp:8081
在命令行上。然后我可以 运行:
react-native run-android
所以我不会浪费时间运行:
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
每次。
我的 mac 阻塞端口 8081 上的 McAfee 有问题,不得不将其更改为 8082。
首先运行你的包服务器:
react-native start --port 8082
打开另一个终端,照常启动 android 应用程序:
react-native run-android
完成后,现在重写 adb 隧道的 tcp 端口:
adb reverse tcp:8081 tcp:8082
查看 adb tcp 隧道列表:
adb reverse --list
您现在应该会看到一条温馨的消息:
(reverse) tcp:8081 tcp:8082
转到您的应用并重新加载,完成!
PS:不要更改应用程序开发设置中的任何内容,如果您添加了 "localhost:8082",只需删除它,将其留空。
编辑: 对于那里的所有 McAfee 受害者,如果您具有 root 访问权限,则有更简单的解决方案,只需暂时终止位于端口 8081 上的 McAfee 进程,根本不需要更改端口:
sudo launchctl remove com.mcafee.agent.macmn
我也遇到了这个问题,因为当我 运行 在模拟器上投影时它工作正常但在真实设备上它给出了这个错误。所以我通过以下解决方案解决了这个问题
第一步: 首先打开 cmd 并转到您的 SDK 管理器 Platform-tools 文件夹
cd C:Development\Android\Sdk\Platform-tools
第二步:现在运行这个命令:
adb devices
执行此命令后检查命令提示符中列出的设备
第三步:现在运行这个
adb reverse tcp:8081 tcp:8081
现在您的设置已完成
第 4 步:转到您的项目目录并运行此命令
react-native run-android
我在尝试调试我的代码时遇到了这个问题,(在我的 android phone 和 React 开发中使用 Toggle 检查器),我做了这个简单的步骤:
- 在 phone 中打开菜单(其中 Reload 是,我可以通过长按 back-button 或摇动 phone 来打开它) enter image description here
- 点击开发设置
- 在调试 -> 设备的调试服务器主机和端口应为空 注意:如果你在这里写了端口或任何东西(用于调试)你应该清除它。
我遇到了这个问题,经过大量搜索后我解决了这个问题。
c:\ProjectFolder\ProjectName> react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
比 运行 本机反应:
c:\ProjectFolder\ProjectName>react-native run-android
我遇到这个问题不是在真实设备上,而是在模拟器上。在尝试使用 android studio 运行 代码之前,我通过 运行ning react-native 在终端中启动来修复它。我在终端中 运行ning react-native run-android 时从未遇到过这个问题。
我通过这个cmd解决了它:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
就我而言,我忘记了 Android Emulator
wifi 已禁用。
为了解决这个问题,我只是向下滑动通知栏以展开菜单并启用 Wifi
连接。
激活Wifi
连接后,我的问题已经解决。
不要忘记在模拟器设备中打开互联网, 我解决了这个错误,它工作完美:V 我收到此错误是因为我关闭互联网以测试 NetInfo :D
这可能是由于您的 React Native 项目代码库中未linked 资产引起的,例如当您重命名项目 application/bundle id 或添加没有 link 的外部包时正确的,例如。
直接在你的项目根目录下试试:
react-native link
react-native run-android
对于所有从 create-react-native-app 开发并被弹出并在 development
中遇到此问题的人,
这对我有用
接受的答案中的一些细节
(in project directory) mkdir android/app/src/main/assets
这里是更改的部分,因为您正在开发中摆脱 --dev: false
部分:
react-native bundle --platform android --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
关闭所有终端后,从 android/app/ 中删除构建文件夹以确保您开始干净地构建您的应用程序,打开一个新终端,然后
(in project directory) npm run android
将提示打包程序控制台(在另一个终端中)并成功构建
上Windows
如果你确定node.js在你的系统上安装成功,请检查系统环境变量并在系统变量路径中添加C:\windows\system32
对于IOS:
在终端中:
cd ios
删除构建文件夹: rm -r build
运行 再一次: react-native run-ios
或者,您可以打开 Finder,导航至 YOUR_PROJECT/ios 并 删除 build 文件夹。
然后 运行 再次:react-native run-ios
对于ANDROID:
在终端中:
cd android/app
删除构建文件夹: rm -r build
运行 再一次: react-native run-android
或者,您可以打开 Finder,导航至 YOUR_PROJECT/android/app 并 删除 build 文件夹。
然后 运行 再次:react-native run-android
这是一个一般的错误信息,你可能在react native应用开发过程中遇到过。因此,在本教程中,我们将为该问题提供解决方案。
问题描述: 无法从 windows 上的资产 index.android.bundle 加载脚本 无法从 windows
上的资产 index.android.bundle 加载脚本按照以下步骤解决上述问题:
第 1 步:在您的项目目录中创建 "assets" 文件夹 现在在 "MobileApp\android\app\src\main" 的项目目录中创建资产文件夹。您可以手动创建资产文件夹:
<或>
您也可以使用命令创建文件夹。 命令 : mkdir android/app/src/main/assets
第 2 步:运行安装您的 React Native 应用程序 让运行下面的命令运行模拟器或物理设备中的本机应用程序。
切换到项目目录。 cd MobileApp
运行 以下命令可帮助您捆绑 android 应用程序项目。
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets -dest android/app/src/main/res
运行 运行 在模拟器或物理设备中响应本机应用程序的最后一步。 本机反应 运行-android
<或>
您也可以将最后两个命令合二为一,在这种情况下您只需执行一次命令。
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets -dest android/app/src/main/res && react-native 运行-android
<或>
您可以通过将它们放在 package.json 的脚本部分来自动执行上述步骤,如下所示:
"android-android": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
如果一切设置正确,您应该很快就会在 Android 模拟器中看到您的新应用 运行ning。
Ubuntu
第一次,我用 react-native init project-name
创建了新应用。
我得到了同样的错误。
所以我按照以下步骤解决了这个问题。
- 首先 运行
sudo chown user-name-of-pc /dev/kvm
我的情况。 从您的 Android phone 进行调试时,select
Use USB to Transfer photos (PTP)
.在 project-name/android/app/src/main
中创建文件夹 - 确保
index.js
可用于您的项目root
目录,然后 运行 在cd project-name
目录后的控制台命令下。
assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
或 对于 index.android.js 然后
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
运行 命令
./studio.sh
在android-studio/bin
目录中。它将打开 Android Studio。运行命令
react-native run-android
.
1 转到您的项目目录并检查此文件夹是否存在 android/app/src/main/assets
- 如果存在则删除两个文件即
index.android.bundle
和index.android.bundle.meta
- 如果文件夹 assets 不存在,则在那里创建 assets 目录。
2.From 你的项目根目录做
cd android && ./gradlew clean
3.Finally,导航回根目录并检查是否有一个名为index.js
如果只有一个文件,即 index.js 那么 运行 按照命令
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
如果有两个文件,即 index.android.js 和 index.ios.js 那么 运行 这个
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
- 现在运行
react-native run-android
- 现在运行
关注这个,对我有用。
https://github.com/react-community/lottie-react-native/issues/269
转到您的项目目录并检查此文件夹是否存在android/app/src/main/assets i) 如果存在则删除两个文件即 index.android.bundle 和 index.android.bundle.meta ii) 如果文件夹 assets 不存在,则在那里创建 assets 目录。
从你的根项目目录做 cd android && ./gradlew clean
最后,导航回根目录并检查是否有一个名为 index.js 的单一条目文件 i) 如果只有一个文件,即 index.js 然后 运行 下面的命令 react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
ii) 如果有两个文件,即 index.android.js 和 index.ios.js 那么 运行 这个 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
现在运行 react-native 运行-android
我花了几个小时试图解决这个问题。我的问题不是 Windows 特有的,而是 Android.
特有的访问开发服务器在本地和模拟器的浏览器中都有效。唯一不起作用的是在应用程序中访问开发服务器。
Starting with Android 9.0 (API level 28), cleartext support is disabled by default.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
查看更多信息:
确保 Metro Builder 运行 使您的物理设备和服务器同步
首先,运行这个命令给运行地铁建设者
npm start
然后就可以在react native中开始build了
react-native run-android
他们这次应该没有错误。如果您希望您的代码在更改时实时重新加载。摇动您的设备,然后点击启用实时重新加载
就我而言,我已从 MainApplication.java 中删除了下面一行。 (之前是我误加的。):-
import com.facebook.react.BuildConfig;
之后清理项目并点击命令
react-native run-android
我认为在所有其他解决方案之前要做的第一件事是:
1.检查您的设备是否在线?
2。如果您是 运行 真实设备上的应用程序,那么该设备应该与开发服务器 运行.
在同一个网络上更多信息请见this page.
使用mkdir ... /assets && react-native bundle --platform..
不能完全解决这个问题,
请注意,每次编辑代码时都必须运行此命令重新生成文件,并且在Reload
或Debug JS Remotely
后再次显示错误。
导致此问题的根本原因是您的应用无法连接到服务器(由于某些未知原因)
这是我的解决方案:
首先,在其他主机和端口启动服务,如:
react-native start --port 8082 --host 0.0.0.0
然后,打开应用程序开发菜单 > 开发设置 > 设备的调试服务器主机
- 输入
youripv4address:8082
- 开发菜单 > 重新加载
希望对您有所帮助
我刚遇到完全相同的问题并解决了。所以希望能有所帮助。
假设您正在组装一个 release 应用程序包 (.apk)
检查您的资产文件夹是否存在?:\android\app\src\main\assets 如果没有,创建一个。
执行后"Assemble Release",检查那个文件夹里有没有东西(\android\app\src\main\assets) 如果没有,找到 js bundle file(index.android.bundle),它应该在以下路径之一以上:
*a)\android\app\build\intermediates\merged_assets\release\out\index.android.bundle
b)\android\app\build\intermediates\merged_assets\release\mergeReleaseAssets\out\index.android.bundle
c)\android\app\build\intermediates\assets\release\index.android.bundle
d)\android\app\build\generated\assets\react\release\index.android.bundle*
更好的方法是使用"Everything"搜索文件名:index.android.bundle.
然后将这个文件复制到你的assets文件夹中(\android\app\src\main\assets\index.android.bundle)
回到powershell或者命令控制台,执行:
react-native run-android --variant=release
应该可以。
祝你好运!
转到开发设置 -> 调试设备的服务器主机和端口 -> 输入您的计算机 Wifi IP 地址(Mac OS:转到系统偏好设置 -> Wifi 获取 Wifi IP地址)
最终重建申请和运行
如果您在 Dev Settings 中输入了 'Debug server host & port for device',请确保删除您输入的内容。
这个问题我想了半天...
如果您使用的是 API 目标版本高于 28.0.0 那么您可能会遇到这个问题。
只需添加这一行
android:usesCleartextTraffic="true"
在您的清单应用程序块中。
清单应用程序块代码。
<application
....
android:usesCleartextTraffic="true"
.../>
对我来说 gradle 当我在 Android
上遇到问题时彻底修复了它cd android
./gradlew clean
投票最多的答案似乎有效,但让开发人员在几分钟后看到他们的小改动变得很忙。我按照以下步骤解决了这个问题: 1- 将我的代码推送到 bitbucket/github 仓库(稍后查看更改) 2- 剪切粘贴 android 文件夹到任何安全位置以进行恢复 3- 从我的项目中删除 android 文件夹 4- 运行 react-native 升级 5- 现在,我看到了之前版本和最新版本之间的所有变化(使用 VsCode) 6- 我在这些代码行的 build.gradle 文件中发现了问题。
ext {
buildToolsVersion = "28.0.2"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 27
supportLibVersion = "28.0.0"
}
7- 我复制了这些行(由 react-native 升级脚本生成并再次删除 android 文件夹。 8- 然后我将粘贴 android 文件夹剪切回我在步骤 2 中剪切粘贴的项目文件夹中。 9 - 用复制的行替换 build.gradle 文件行。 10- 现在一切正常。
希望对您有所帮助。
首先检查您的资产文件夹是否存在于此位置\android\app\src\main\assets
如果否,则 运行 终端中的此命令
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
然后 运行 您的 android 设备上的项目使用
react-native run-android
如果您在主 AndroidManifest.xml
中定义 android:networkSecurityConfig
,也会发生此问题。您的调试 AndroidManifest.xml
中的 android:usesCleartextTraffic="true"
将被忽略。
要解决此问题,您必须将应用配置为允许到本地主机的 http 流量。
创建文件android/src/debug/res/xml/network_security_config.xml
:
<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
并在 android/src/debug/AndroidManifest.xml
中引用它:
<?xml version="1.0" encoding="utf-8" ?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning" />
</manifest>
实际上,在我的情况下(React-native
版本 0.61.5 并尝试在设备上安装调试 APK)none 的答案对我有帮助,我的解决方案是将 bundleInDebug: true
添加到android/app/build.gradle
像这样:
project.ext.react = [
entryFile: "index.js",
enableHermes: true, // clean and rebuild if changing
bundleInDebug: true
]
在命令对我有用之前使用 npx,命令如下所示。
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
为什么要用npx,这里是post