运行-android 连接到设备时出错
run-android gives error when connected to a device
我在入门的 AwesomeProject 示例中添加了启动画面https://medium.com/handlebar-labs/how-to-add-a-splash-screen-to-a-react-native-app-ios-and-android-30a3cec835ae (
https://facebook.github.io/react-native/docs/getting-started.html).
我连接了我的 nexus 6p 和 运行 react-native 运行-android 我收到了这个错误
This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html
Running /home/Android/Sdk/platform-tools/adb -s 84B7N15A10013562 reverse tcp:8081 tcp:8081
Starting the app on 84B7N15A10013562 (/home/Android/Sdk/platform-tools/adb -s 84B7N15A10013562 shell am start -n com.testprj1/.MainActivity)...
Starting: Intent { cmp=com.testprj1/.MainActivity }
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.testprj1/.MainActivity } from null (pid=23823, uid=2000) not exported from uid 10161
at android.os.Parcel.readException(Parcel.java:1684)
at android.os.Parcel.readException(Parcel.java:1637)
at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3137)
at com.android.commands.am.Am.runStart(Am.java:643)
at com.android.commands.am.Am.onRun(Am.java:394)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
at com.android.commands.am.Am.main(Am.java:124)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
但是,如果我 运行 在模拟器上相同,则没有错误
根据您发布的教程,您的新启动器 activity 是 SplashActivity 而不是 MainActivity。但默认情况下,react-native cli 会尝试启动导致此权限错误的 MainActivity。在此路径读取runAndroid.js文件中的代码; your_project/node_modules/react-native/local-cli/runAndroid.js。还要检查启动应用程序时可以使用的这些命令。
module.exports = {
name: 'run-android',
description: 'builds your app and starts it on a connected Android
emulator or device',
func: runAndroid,
options: [{
command: '--install-debug',
},
{
command: '--root [string]',
description: 'Override the root directory for the android build (which contains the android directory)',
default: '',
},
{
command: '--flavor [string]',
description: '--flavor has been deprecated. Use --variant instead',
},
{
command: '--variant [string]',
},
{
command: '--main-activity [string]',
description: 'Name of the activity to start',
default: 'MainActivity',
},
{
command: '--deviceId [string]',
description: 'builds your app and starts it on a specific device/simulator with the given device id (listed by running "adb devices" on the command line).',
},
{
command: '--no-packager',
description: 'Do not launch packager while building',
}],
};
它不应该也适用于模拟器。尝试从模拟器中卸载该应用程序并再次 运行,它不会工作。
现在解决问题 运行 在终端中输入以下命令
react-native run-android --main-activity SplashActivity
请注意,我们在最后使用“--main-activity”命令添加 activity 要启动的名称
我在入门的 AwesomeProject 示例中添加了启动画面https://medium.com/handlebar-labs/how-to-add-a-splash-screen-to-a-react-native-app-ios-and-android-30a3cec835ae ( https://facebook.github.io/react-native/docs/getting-started.html).
我连接了我的 nexus 6p 和 运行 react-native 运行-android 我收到了这个错误
This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html
Running /home/Android/Sdk/platform-tools/adb -s 84B7N15A10013562 reverse tcp:8081 tcp:8081
Starting the app on 84B7N15A10013562 (/home/Android/Sdk/platform-tools/adb -s 84B7N15A10013562 shell am start -n com.testprj1/.MainActivity)...
Starting: Intent { cmp=com.testprj1/.MainActivity }
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.testprj1/.MainActivity } from null (pid=23823, uid=2000) not exported from uid 10161
at android.os.Parcel.readException(Parcel.java:1684)
at android.os.Parcel.readException(Parcel.java:1637)
at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3137)
at com.android.commands.am.Am.runStart(Am.java:643)
at com.android.commands.am.Am.onRun(Am.java:394)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
at com.android.commands.am.Am.main(Am.java:124)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
但是,如果我 运行 在模拟器上相同,则没有错误
根据您发布的教程,您的新启动器 activity 是 SplashActivity 而不是 MainActivity。但默认情况下,react-native cli 会尝试启动导致此权限错误的 MainActivity。在此路径读取runAndroid.js文件中的代码; your_project/node_modules/react-native/local-cli/runAndroid.js。还要检查启动应用程序时可以使用的这些命令。
module.exports = {
name: 'run-android',
description: 'builds your app and starts it on a connected Android
emulator or device',
func: runAndroid,
options: [{
command: '--install-debug',
},
{
command: '--root [string]',
description: 'Override the root directory for the android build (which contains the android directory)',
default: '',
},
{
command: '--flavor [string]',
description: '--flavor has been deprecated. Use --variant instead',
},
{
command: '--variant [string]',
},
{
command: '--main-activity [string]',
description: 'Name of the activity to start',
default: 'MainActivity',
},
{
command: '--deviceId [string]',
description: 'builds your app and starts it on a specific device/simulator with the given device id (listed by running "adb devices" on the command line).',
},
{
command: '--no-packager',
description: 'Do not launch packager while building',
}],
};
它不应该也适用于模拟器。尝试从模拟器中卸载该应用程序并再次 运行,它不会工作。
现在解决问题 运行 在终端中输入以下命令
react-native run-android --main-activity SplashActivity
请注意,我们在最后使用“--main-activity”命令添加 activity 要启动的名称