我试图在我的设备上首次运行我的第一个React Native项目(Android 4.2.2)。
我得到了:
无法从资产中加载脚本index.android.bundle
我使用的命令:
cd (project directory)
react-native start
react-native run-android
答案 0 :(得分:852)
我在遵循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
您可以将这些步骤放在scripts
package.json
部分中,自动完成上述步骤:
"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
。
答案 1 :(得分:120)
如果您在物理设备上运行应用程序并收到此错误
unable to load script from assets index.android.bundle
尝试运行命令:
adb reverse tcp:8081 tcp:8081
它为我工作......
答案 2 :(得分:53)
使用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
答案 3 :(得分:40)
我遇到了与真正的Android设备相同的问题。
解决方案:基于Niltoid的answer
对于Mac用户:打开您的网络首选项,在这里您将获得本地IP。
答案 4 :(得分:39)
我花了数小时试图弄清楚这个问题。我的问题并不特定于Windows,而是特定于Android。
访问开发服务器可以在本地和仿真器的浏览器中进行。唯一不起作用的是访问应用程序中的开发服务器。
从Android 9.0(API级别28)开始,默认情况下禁用明文支持。
AndroidManifest.xml
nlme(..., control = nlmeControl(opt = "nlminb", upper = upper_bounds))
有关更多信息,请参见: https://stackoverflow.com/a/50834600/1713216
答案 5 :(得分:19)
如果您使用Windows,请按以下方式运行命令,或者如果出现错误"找不到输入文件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
答案 6 :(得分:18)
You can follow the instruction mentioned on the official page to fix this issue. This issue occur on real device because the JS bundle is located on your development system and the app inside your real device is not aware of it's location.
答案 7 :(得分:15)
在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
。希望对处于开发阶段的人有所帮助。
答案 8 :(得分:11)
我现在已经有好几个月了。我最初使用@Jerry的解决方案,但这是一个错误的解决方案,因为它没有完全解决问题。相反,它所做的是将每个构建作为生产构建,这意味着您在应用程序中所做的任何轻微更改都意味着重建整个应用程序是必要的。
虽然这是一个时间解决方案,但从长远来看,它可以工作得非常糟糕,因为您无法再使用React Native的热门重新加载等令人惊叹的开发工具。
显示了一个正确的解决方案:
在MainApplication.java
文件中,替换以下内容:
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
带
@Override
public boolean getUseDeveloperSupport() {
return true;
}
由于某种原因BuildConfig.DEBUG
总是返回false并导致资产目录中的捆绑文件。
通过手动将其设置为true,您强制应用程序使用打包程序。这个WON无法在生产中工作,因此请务必将其更改为false或默认值。
别忘了跑
$ adb reverse tcp:8081 tcp:8081
答案 9 :(得分:9)
操作系统:Windows
尝试上述两种方法后解决此问题的另一种方法
(因为我安装了SDK 不在DEFAULT LOCATION中,如C:\ users \“user_name”\ appdata \ local \ sdk )
如果您注意到该命令行已宣布:“'adb'未被识别为内部或外部命令......”
所以这就是我如何克服:
示例:我在D:\ Android \ sdk中安装了SDK
所以我将在系统变量2中插入更多行的路径:
D:\Android\sdk\tools
D:\Android\sdk\platform-tools
(如果您不知道如何编辑路径系统变量,请按以下主题进行操作:https://android.stackexchange.com/questions/38321/what-do-i-type-in-path-variable-for-adb-server-to-start-from-cmd/38324)
然后我再次运行cmd:react-native run-android
它对我有用。
答案 10 :(得分:6)
对于 IOS:
在终端中:
cd ios
删除构建文件夹: rm -r build
再次运行: react-native run-ios
或者,您可以打开Finder,导航到 YOUR_PROJECT / ios 和删除 构建 文件夹。
然后再次运行:react-native run-ios
ANDROID:
在终端中:
cd android/app
删除构建文件夹: rm -r build
再次运行: react-native run-android
或者,您可以打开Finder,导航到 YOUR_PROJECT / android / app 和删除 构建 文件夹 。
然后再次运行:react-native run-android
答案 11 :(得分:5)
对于这个问题,我只需运行:
即可解决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
每一次。
答案 12 :(得分:4)
就我而言,我已从MainApplication.java中删除以下行。 (以前我是错误地添加了。):-
导入com.facebook.react.BuildConfig;
完成清理项目并点击命令
react-native run-android
答案 13 :(得分:4)
确保Metro Builder正在运行,以使您的物理设备和服务器同步
首先,运行此命令以运行Metro Builder
npm开始
然后您就可以在react native中开始构建
react-native run-android
这次他们应该没有错误。如果您希望代码保持实时状态,请在更改时重新加载。摇动设备,然后点击启用实时重新加载
答案 14 :(得分:4)
1转到您的项目目录,并检查此文件夹是否存在android/app/src/main/assets
index.android.bundle
和index.android.bundle.meta
2。在您的根项目目录中执行
cd android && ./gradlew clean
3。最后,导航回到根目录并检查是否存在一个名为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
答案 15 :(得分:3)
确保已将/ path / to / sdk / platform-tools添加到路径变量中。
当你运行react-native run-android时,它会运行adb reverse tcp:< device-port> TCP:其中local-port>命令将请求从您的设备转发到计算机上本地运行的服务器。 如果找不到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 }
答案 16 :(得分:3)
Ubuntu
我第一次用react-native init project-name
创建了一个新应用。
我遇到了同样的错误。
因此我将按照以下步骤解决此问题。
sudo chown user-name-of-pc /dev/kvm
。从Android手机调试时,选择Use USB to Transfer photos (PTP)
。
在项目名称/ 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
。
答案 17 :(得分:3)
我也遇到了这个问题,因为当我在模拟器上运行它的工作正常但在真实设备上它会给出这个错误。我通过以下解决方案解决了这个问题
第1步:首先打开cmd,然后转到你的sdk manager Platform-tools文件夹 即 cd C:开发\ Android \ Sdk \ Platform-tools
第二步:现在运行此命令: adb devices
在此命令之后检查命令propmt中列出的设备
第3步:现在运行它 adb reverse tcp:8081 tcp:8081
现在您的设置已完成
第4步:转到项目目录并运行此命令
react-native run-android
答案 18 :(得分:3)
这可能是由React Native项目代码库中的未链接资产引起的,例如,当您重命名项目应用程序/软件包ID或添加外部软件包而没有正确链接时,例如。
只需在项目根目录中尝试:
react-native link
react-native run-android
答案 19 :(得分:2)
我在我的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:不要在应用程序Dev设置中更改任何内容,如果添加了“localhost:8082”,只需删除它,将其留空。
编辑: 对于那里的所有McAfee受害者,如果您具有超级用户访问权限,只需暂时终止位于端口8081上的McAfee进程并且根本不需要更改端口,则可以使用更简单的解决方案:
sudo launchctl remove com.mcafee.agent.macmn
答案 20 :(得分:2)
按照此为我工作。
https://github.com/react-community/lottie-react-native/issues/269
转到您的项目目录,并检查此文件夹是否存在android / app / src / main / assets i)如果存在,则删除两个文件,即index.android.bundle和index.android.bundle.meta ii)如果文件夹资产不存在,请在其中创建资产目录。
在您的根项目目录中执行 cd android && ./gradlew clean
最后,导航回到根目录并检查是否存在一个名为index.js的单个条目文件。 i)如果只有一个文件即index.js,则运行以下命令 react-native包--platform android --dev否--entry-file index.js --bundle-output android / app / src / main / assets / index.android.bundle --assest-dest android / app / src / main / res
ii)如果有两个文件,即index.android.js和index.ios.js,则运行此文件 react-native包--platform android --dev否--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
答案 21 :(得分:2)
这是一般错误消息,您在React Native应用程序开发过程中可能会遇到。因此,在本教程中,我们将提供解决此问题的方法。
问题说明: 无法从Windows上的资产index.android.bundle加载脚本 无法从Windows上的资产index.android.bundle加载脚本
请按照以下步骤解决上述问题:
步骤1:在项目目录中创建“资产”文件夹 现在,在项目目录“ MobileApp \ android \ app \ src \ main”中创建资产文件夹。您可以手动创建资产文件夹:
您也可以使用命令创建文件夹。 命令: mkdir android / app / src / main / assets
第2步:运行您的React Native应用程序 让我们运行以下命令在仿真器或物理设备中运行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
运行“最后一步”以在模拟器或物理设备中运行本机应用程序。 react-native运行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
您可以通过将上述步骤放置在package.json的脚本部分中来自动执行上述步骤:
“ android-android”:“反应本地包--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模拟器中看到新应用正在运行。
答案 22 :(得分:2)
如果在运行react-native run-android
命令时,跟踪的第二行是
JS server not recognized, continuing with build...
这意味着无法启动应用程序的打包程序,如果没有一些额外的步骤,应用程序将无法加载。请注意,跟踪结束仍会报告成功:
BUILD SUCCESSFUL
问题可能是某些端口冲突(在我的情况下,它是我完全忘记的默认IIS站点)。该问题的另一个表现是无法在Chrome中打开http://localhost:8081/debugger-ui
网址。
解决端口冲突后,跟踪将报告
Starting JS server...
然后会打开一个额外的Node窗口(node ...cli.js start
),该应用程序将成功加载/重新加载。
之后,您应该可以使用http://localhost:8081/debugger-ui
在Chrome中打开调试控制台。
答案 23 :(得分:2)
即使在模拟器上运行,我也遇到了同样的问题。我做了一个快速的解决方法,以便我可以拥有正常的开发工作流程。
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";
}
};
尝试进行生产构建时,可能需要还原更改。
答案 24 :(得分:2)
我认为您没有安装纱线尝试使用巧克力或其他东西安装它。它应该在创建项目之前安装(react-native init命令)。
无需创建资产目录。
如果不起作用,请回复。
修改强> 在最近版本的react-native中,他们修复了它。如果您想要完全免于此卸载节点(完全卸载Completely remove node请参阅此链接)并重新安装节点,react-native-cli然后创建新项目。
答案 25 :(得分:1)
我花了半天的时间解决这个问题...
如果您使用的是28.0.0以上的 API目标版本,则可能会遇到此问题。
只需添加此行
android:usesCleartextTraffic="true"
在清单应用程序块中。
清单应用程序块代码。
<application
....
android:usesCleartextTraffic="true"
.../>
答案 26 :(得分:1)
我正面临这个问题,很多搜索,我解决了这个问题。
for($i=1; $i<=40; $i++){
$number = cosh($i*.3);
echo $number;
}
比运行反应本机:
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
答案 27 :(得分:1)
答案 28 :(得分:1)
如果在主android:networkSecurityConfig
中定义一个AndroidManifest.xml
,也会发生此问题。调试android:usesCleartextTraffic="true"
中的AndroidManifest.xml
将被忽略。
要解决此问题,您必须将应用程序配置为允许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>
答案 29 :(得分:1)
对于所有正在使用create-react-native-app开发并弹出的人,并在development
中遇到此问题,
这对我有用
从接受的答案中得到一些细节
(在项目目录中)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 机器人/应用/ SRC /主/ RES
关闭所有终端后,从android / app /中删除build文件夹,确保你开始清理构建应用程序,打开一个新终端,然后
(在项目目录中)npm运行android
将提示打包控制台(在另一个终端中)并成功构建
答案 30 :(得分:1)
当我将react-native更新为0.49.5时,会出现此问题,当我按照此Breaking changes and deprecations
时 它消失了。答案 31 :(得分:1)
首先检查您的资产文件夹是否在此位置\ 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
答案 32 :(得分:0)
使用mkdir ... /assets && react-native bundle --platform..
不能完全解决此问题,
请注意,每次编辑代码时,都必须运行此命令来重新生成文件,并且在Reload
或Debug JS Remotely
之后它再次显示错误。
此问题的根本原因是您的应用无法与服务器连接(由于某些未知原因)
这是我的解决方法:
首先,在其他主机和端口中启动服务,例如:
react-native start --port 8082 --host 0.0.0.0
然后,打开应用程序开发菜单>开发设置>调试设备的服务器主机
youripv4address:8082
希望这会有所帮助
答案 33 :(得分:0)
最受好评的答案似乎可行,但几分钟后开发人员便会忙于看到其微小的变化。我按照以下步骤解决了这个问题: 1-将我的代码推送到bitbucket / github存储库(稍后查看更改) 2-剪切粘贴android文件夹到任何安全位置进行恢复 3-从我的项目中删除android文件夹 4-运行本机升级 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-现在可以正常使用了。
希望这会对您有所帮助。
答案 34 :(得分:0)
实际上,在我的情况下(React-native
版本0.61.5并尝试在设备上安装调试APK),没有一个答案对我有帮助,我的解决方案是将bundleInDebug: true
添加到android/app/build.gradle
这个:
project.ext.react = [
entryFile: "index.js",
enableHermes: true, // clean and rebuild if changing
bundleInDebug: true
]
答案 35 :(得分:0)
我刚刚遇到了完全相同的问题并解决了。因此希望能有所帮助。
假设您正在组装版本应用程序包(.apk)
检查资产文件夹是否存在?: \ android \ app \ src \ main \ assets 如果没有,请创建一个。
执行“ Assemble Release”后,检查该文件夹中是否有任何内容(\ android \ app \ src \ main \ assets) 如果不是,请找到js捆绑文件( 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 \ generate \ assets \ react \ release \ index.android.bundle *
更好的方法是使用“所有内容”搜索文件名:index.android.bundle。
然后将此文件复制到资产文件夹(\ android \ app \ src \ main \ assets \ index.android.bundle)
返回powershell或命令控制台,执行:
react-native run-android --variant = release
应该可以。
祝你好运!
答案 36 :(得分:0)
当我在Android上遇到问题时,gradle clean对我进行了修复
cd android
./gradlew clean
答案 37 :(得分:0)
转到开发设置->调试设备的服务器主机和端口->输入您的计算机Wifi IP地址(Mac OS:转到系统偏好设置-> Wifi以获取Wifi IP地址)
最终重建应用程序并运行
答案 38 :(得分:0)
如果您在“开发设置”中输入了“调试设备的服务器主机和端口”,请确保删除输入的内容。
答案 39 :(得分:0)
我认为在所有其他解决方案之前要做的第一件事是:
1。检查您的设备是否在线?
2。如果您在实际设备上运行该应用程序,则该设备应与运行开发服务器的网络位于同一网络上。
更多信息,请访问this page.
答案 40 :(得分:0)
在Windows上
如果您确定,node.js已在您的系统上成功安装,请检查系统环境变量并在系统变量路径中添加 C:\ windows \ system32
答案 41 :(得分:0)
在我的情况下,我忘记了Android Emulator
wifi被禁用了。
要解决此问题,我只需向下滑动通知栏以展开菜单并启用Wifi
连接。
激活Wifi
连接后,问题已在我的案例中得到解决。
答案 42 :(得分:0)
我通过这个cmd来解决它:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
答案 43 :(得分:0)
我遇到的问题不是真实的设备,而是模拟器。我通过在终端中运行react-native start来修复它,然后尝试使用android studio运行代码。我在终端中运行react-native run-android时从未遇到过这个问题。
答案 44 :(得分:0)
当我试图调试我的代码时,我遇到了这个问题,(在我的Android手机中使用Toggle检查器并做出反应),我做了这个简单的步骤:
答案 45 :(得分:0)
答案 46 :(得分:0)
切入一个对我有用的明显建议。删除应用程序,重新启动服务器并再次从工具部署到设备。
答案 47 :(得分:0)
发生此错误:&#34;无法从资源加载脚本&#39; index.android.bundle&#39;&#34;
1)。检查&#34;资产&#34;文件夹:mkdir android \ app \ src \ main \ assets
如果文件夹不可用,请创建名称为&#34; assets&#34;的文件夹。手动。并在终端中执行Curl命令。
2)。卷曲命令:curl&#34; http://localhost:8081/index.android.bundle?platform=android&#34; -o&#34;机器人/应用/ SRC /主/资产/ index.android.bundle&#34;
它将创建&#34; index.android.bundle&#34;自动在资源文件夹中存档并解决问题。
3)。 react-native run-android
答案 48 :(得分:0)
此问题也可能是由关闭设备/仿真器的蜂窝数据引起的。一定要检查一下。
答案 49 :(得分:-1)
只需关闭Visual Studio并关闭cmd终端即可。重新打开并再次重新启动应用。