3

我们在开发react-native的时候,需要先启动安卓模拟器,然后执行npm start启动编译。正常启动模拟器的方式就是:

1、打开android studio
2、打开一个项目,随便什么吧
3、点击右上角 AVD Manager
4、选择一个模拟器,并双击

对的,如果你用的是android studio,那没什么问题的,举手之劳的事儿。
但是我们一般用webstorm,因为RN是android和ios共享的,所以用xcode和android studio都不舒服。

福利来了

笔者给你们一个快速打开的脚本。你可以保存到项目的文件里,比如 android.sh

#!/usr/bin/env bash

ANDROID_PATH_EXIST=`cat ~/.bash_profile | grep ANDROID_NDK=`

if [ "$ANDROID_PATH_EXIST" == "" ]; then
  echo '
    export ANDROID_NDK=$HOME/Library/Android/ndk 
  ' >> ~/.bash_profile
  
  source $HOME/.bash_profile
fi

avds=`ls ~/.android/avd | grep .avd | sed "s#.avd##"`
avds=(${avds})
avd_count=`ls ~/.android/avd | grep .avd | wc -l`

echo ""
echo "安卓模拟器列表:"
echo ""
ls ~/.android/avd | grep .avd | sed "s#.avd##"
echo ""

if [ ${avd_count} == 0 ]; then
  echo "没有找到安卓模拟器,请到android studio中添加"
  exit 1
elif [ ${avd_count} == 1 ]; then
  avd=${avds[0]}
else
  # 需要从刚才的列表里任选一个
  read -p "你要启动哪个模拟器:" avd
  echo ""
fi


process=`ps aux | grep "\-avd ${avd}" | grep -v grep`
process_count=`echo ${process} | wc -l`

if [ "${process}" != "" ] && [ ${process_count} == 1 ]; then
  process_id=`echo ${process} | awk '{print $2}'`
  echo "正在强制关闭模拟器..."
  kill -9 ${process_id}
  # 防止再次启动失败
  sleep 1
fi

echo "模拟器${avd}正在启动..."
cd ~/Library/Android/sdk/tools/
emulator -avd ${avd} &
echo "模拟器启动完成"

怎么用呢?

sh android.sh && npm start

或者干脆写进npm start的脚本里,更省事的


顺便说一句,ios的启动也是用脚本的

react-native run-ios --port 8081 --simulator 'iPhone 7'

夜葬
3.6k 声望1.2k 粉丝

极客