如何使用react-native Android修改IP&端口?
How to modify IP & port use react-native Android?
我使用了 react-native Android 演示项目 AwesomeProject 并且在我执行的项目中:
react-native start
在第二个终端中:
react-native run-android
启动网络服务器并安装 Android APK。默认网络服务器配置是 localhost:8081,如何修改网络服务器端口,以及如何在 Android 项目中更新 IP 和端口的记录。
编辑:
我刚刚发现可以在Android调试设置中修改ip地址,好像"getDebugServerHost"是私有的API,Facebook是否提供任何API更改ip&端口?
更新:有关 2019 年当前推荐的方法,请参阅。
不幸的是,端口当前 (2015/09/23) 是硬编码的。我相信这会及时更改,因为它已经从项目的高级贡献者那里提出了一个问题。
https://github.com/facebook/react-native/issues/2704
正如 OP 在 MossP 的 , this can now be achieved using the debug_http_host
shared preference (see this 问题上评论的那样。
因此,如果您想使用端口 8082,您可以在 MainActivity.java
文件中添加一个 onCreate
方法,它可能看起来像这样:
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
preferences.edit().putString("debug_http_host", "localhost:8082").apply();
}
当然不要忘记导入android.content.SharedPreferences
、android.os.Bundle
和android.preference.PreferenceManager
.
这会让您的应用尝试在所需端口而不是 8081 访问打包程序。
然后您只需确保使用 --port 8082
启动打包程序(如 here 所述),您应该已准备就绪。
(除非你碰巧用的是 Nuclide,那是完全不同的story)。
请注意,在 React Native 0.46 之前,这只允许一个 运行 应用程序成功,但仍然无法实际附加一个调试器 在非标准端口上。从 React Native 0.46 开始,附加调试器 should also work.
对此有一个小的变通办法。任何人 运行 在物理设备上( 或者甚至 )都可以使用不同的端口重新启动他们的 adb 会话。
例如。
react-native start --port=1234
在不同的 cmd/terminal window.
react-native run-android
之后我收到了这些消息。
BUILD SUCCESSFUL
Total time: 22.589 secs
Running C:\SDK/platform-tools/adb -s VY0025160560725694 reverse tcp:8081
tcp:8081
这会在被 McAfee 阻止的默认反向端口 8081 上运行。
解决方法:
adb reverse tcp:8081 tcp:1234
试试吧。它对我有用。
注意:您可能需要终止并重新打开该应用程序。
目前我无法为模拟设备提供答案,因为我的系统上没有安装模拟设备。但是语法应该是相似的。
注意:这可能会破坏使用 watchman 的自动代码更新。
如https://facebook.github.io/react-native/docs/debugging.html#accessing-the-in-app-developer-menu、
所述
You can access the developer menu by shaking your device or by
selecting "Shake Gesture" inside the Hardware menu in the iOS
Simulator. You can also use the ⌘D keyboard shortcut when your app is
running in the iOS Simulator, or ⌘M when running in an Android
emulator. Alternatively for Android, you can run the command adb shell
input keyevent 82 to open the dev menu (82 being the Menu key code).
所以在 iOS 设备上摇动它,在 iOS 模拟器上按下控制 D,在 Android 模拟器上控制 M,在 Android 设备上执行 adb shell input keyevent 82
然后在打开的菜单中,转到Dev Settings、debug server & host port for device,然后编辑 IP 和港口.
ps:仅适用于非生产环境
在 Mac 上:
- 转到 Wifi
- 打开网络偏好设置
- Wi-Fi 连接到 {wifi name} 并且 IP 地址为 {xxx.xxx.x.x}。
- 获取您的 IP 地址。
- 转到设备上的应用程序
- 转到开发设置
- 点击以调试设备的服务器主机和端口
- 填写您的 IP 地址和端口为 8081(示例 ipaddress:8081)。
这是 Tomty 回答的扩展。查看示例项目 here:
npm i @nick-bull/react-native-debug-address
# DEBUG_HOST=127.0.0.1:8081 npx react-native start --port 8081
# or, equivalently
DEBUG_PORT=8081 npx react-native start --port 8081
npx react-native run-android --port 8081
我使用了 react-native Android 演示项目 AwesomeProject 并且在我执行的项目中:
react-native start
在第二个终端中:
react-native run-android
启动网络服务器并安装 Android APK。默认网络服务器配置是 localhost:8081,如何修改网络服务器端口,以及如何在 Android 项目中更新 IP 和端口的记录。
编辑:
我刚刚发现可以在Android调试设置中修改ip地址,好像"getDebugServerHost"是私有的API,Facebook是否提供任何API更改ip&端口?
更新:有关 2019 年当前推荐的方法,请参阅
不幸的是,端口当前 (2015/09/23) 是硬编码的。我相信这会及时更改,因为它已经从项目的高级贡献者那里提出了一个问题。 https://github.com/facebook/react-native/issues/2704
正如 OP 在 MossP 的 debug_http_host
shared preference (see this 问题上评论的那样。
因此,如果您想使用端口 8082,您可以在 MainActivity.java
文件中添加一个 onCreate
方法,它可能看起来像这样:
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
preferences.edit().putString("debug_http_host", "localhost:8082").apply();
}
当然不要忘记导入android.content.SharedPreferences
、android.os.Bundle
和android.preference.PreferenceManager
.
这会让您的应用尝试在所需端口而不是 8081 访问打包程序。
然后您只需确保使用 --port 8082
启动打包程序(如 here 所述),您应该已准备就绪。
(除非你碰巧用的是 Nuclide,那是完全不同的story)。
请注意,在 React Native 0.46 之前,这只允许一个 运行 应用程序成功,但仍然无法实际附加一个调试器 在非标准端口上。从 React Native 0.46 开始,附加调试器 should also work.
对此有一个小的变通办法。任何人 运行 在物理设备上( 或者甚至 )都可以使用不同的端口重新启动他们的 adb 会话。
例如。
react-native start --port=1234
在不同的 cmd/terminal window.
react-native run-android
之后我收到了这些消息。
BUILD SUCCESSFUL
Total time: 22.589 secs
Running C:\SDK/platform-tools/adb -s VY0025160560725694 reverse tcp:8081
tcp:8081
这会在被 McAfee 阻止的默认反向端口 8081 上运行。
解决方法:
adb reverse tcp:8081 tcp:1234
试试吧。它对我有用。
注意:您可能需要终止并重新打开该应用程序。
目前我无法为模拟设备提供答案,因为我的系统上没有安装模拟设备。但是语法应该是相似的。
注意:这可能会破坏使用 watchman 的自动代码更新。
如https://facebook.github.io/react-native/docs/debugging.html#accessing-the-in-app-developer-menu、
所述You can access the developer menu by shaking your device or by selecting "Shake Gesture" inside the Hardware menu in the iOS Simulator. You can also use the ⌘D keyboard shortcut when your app is running in the iOS Simulator, or ⌘M when running in an Android emulator. Alternatively for Android, you can run the command adb shell input keyevent 82 to open the dev menu (82 being the Menu key code).
所以在 iOS 设备上摇动它,在 iOS 模拟器上按下控制 D,在 Android 模拟器上控制 M,在 Android 设备上执行 adb shell input keyevent 82
然后在打开的菜单中,转到Dev Settings、debug server & host port for device,然后编辑 IP 和港口.
ps:仅适用于非生产环境
在 Mac 上:
- 转到 Wifi
- 打开网络偏好设置
- Wi-Fi 连接到 {wifi name} 并且 IP 地址为 {xxx.xxx.x.x}。
- 获取您的 IP 地址。
- 转到设备上的应用程序
- 转到开发设置
- 点击以调试设备的服务器主机和端口
- 填写您的 IP 地址和端口为 8081(示例 ipaddress:8081)。
这是 Tomty 回答的扩展。查看示例项目 here:
npm i @nick-bull/react-native-debug-address
# DEBUG_HOST=127.0.0.1:8081 npx react-native start --port 8081
# or, equivalently
DEBUG_PORT=8081 npx react-native start --port 8081
npx react-native run-android --port 8081