在运行react-native run-android
之前,我运行react-native android
将项目设置为Android。好吧,这是我的常用目录
09/02/2019 02:14 PM <DIR> .
09/02/2019 02:14 PM <DIR> ..
08/02/2019 09:27 AM 74 .gitignore
08/02/2019 09:27 AM 3 .watchmanconfig
08/02/2019 09:27 AM 3,186 App.js
08/02/2019 09:27 AM 726 app.json
08/02/2019 09:27 AM <DIR> assets
08/02/2019 09:27 AM 107 babel.config.js
08/02/2019 09:27 AM <DIR> components
09/02/2019 02:01 PM 273 generate-android-project.js
08/02/2019 09:27 AM 1,032 google-services.json
08/02/2019 09:27 AM 1,074 LICENSE
09/02/2019 02:22 PM <DIR> node_modules
09/02/2019 02:14 PM 300,591 package-lock.json
09/02/2019 02:21 PM 682 package.json
08/02/2019 09:27 AM 61 README.md
08/02/2019 09:27 AM <DIR> screens
08/02/2019 09:27 AM <DIR> utils
09/02/2019 02:21 PM 254,814 yarn.lock
当我尝试
react-native android
此消息出现
Unrecognized command 'android'
Run react-native --help to see list of all available commands
然后这是我的解决方法
react-native upgrade
不起作用yarn add react-native-cli
不起作用yarn
也不起作用yarn add android
不起作用引用此link
const fs = require('fs');
const generate = require('react-native/local-cli/generate/generate.js');
generate([
'--platform', 'android',
'--project-path', process.cwd(),
'--project-name', JSON.parse(
fs.readFileSync('package.json', 'utf8')
).name,
]);
node generate-android-project.js
结果相同,不起作用
react-native upgrade
不起作用npm install
仍然不起作用 npm run run:android
npm ERR! missing script: run:android
如何在Android Emulator或Real Devices上正确运行我的项目?
谢谢
更新1:package.json
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"eject": "expo eject",
"start:android": "adb shell am start -n com.airbnb.android.react.maps.example/.MainActivity",
"run:android": "./gradlew installDebug && npm run start:android"
答案 0 :(得分:0)
尝试使用以下项目启动项目
react-native init yourapp
然后在连接手机或打开模拟器时运行此
react-native run-android
答案 1 :(得分:0)
我认为您的问题是您混淆了Expo
和react-native init
,这是创建react-native
应用程序的两种不同方式。
您的package.json
建议您使用expo
脚本中的start
是expo start
是最大的礼物。
这是我拥有的package.json
应用程序中的示例expo
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"eject": "expo eject"
},
"dependencies": {
"expo": "^32.0.0",
"react": "16.5.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
},
"devDependencies": {
"babel-preset-expo": "^5.0.0"
},
"private": true
}
运行expo
应用程序的最简单方法是在项目目录的终端窗口中运行以下命令
expo start
正在启动时,您应该打开模拟器。两者都启动完成后,您应该在终端窗口中看到一些这样的选项
在终端窗口中键入a
应该会在Android模拟器上启动expo项目。
尝试运行gradlew
不适用于expo
项目,因为expo
抽象了android
本机代码。我确定如果您检查文件夹,则没有名为android
或ios
的目录。您已提供了文件夹结构,它看起来与我在expo
项目中拥有的文件夹结构非常相似。
要创建这些文件夹(如果您使用的是expo
且不需要访问本机代码,则不需要此文件夹),可以通过运行expo eject
您可以在此处https://docs.expo.io/versions/latest/expokit/eject/上了解有关使用此命令的更多信息,基本上它将expo
项目转换为完整的react-native init
项目,您可以在其中访问本机代码并链接当前不存在的程序包受expo
支持,但是这并不是轻率的决定
react-native init
使用react-native init
创建的项目与使用expo
创建的项目具有非常不同的结构。它们在本机代码所在的文件夹内包含以下文件夹android
和ios
。
要运行使用react-native init
创建的应用,您可以使用其中一个
react-native run-android
或react-native run-ios
这里是package.json
创建的项目的示例react-native init
{
"name": "MyAwesomeApp",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.6.3",
"react-native": "0.58.4",
},
"devDependencies": {
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "24.1.0",
"jest": "24.1.0",
"metro-react-native-babel-preset": "0.51.1",
"react-test-renderer": "16.6.3"
},
"jest": {
"preset": "react-native"
}
}
请注意,没有提及expo
。
以下是使用react-native init
创建的项目的示例文件夹结构