linux搭建react-native+android-studio開發環境踩坑

levinit發表於2017-12-22

今天在archlinux下搭建react native + android,遇到一些問題,終於折騰成功,特此記錄。


參照react native文件的步驟進行安裝,安裝完畢後,開啟Android Studio,匯入你的專案專案(或者官方提供的實驗專案AwesomeProject)資料夾,開啟安卓虛擬機器(Android Emulator,當然也可以選擇真機除錯),然後進入命令列,cd到專案資料夾下,中執行:react-native run-anroid就能在模擬器中進行除錯了。

當然你也許會遇到以下問題:

相關問題解決

  • Thread(png-cruncher_20) has a null payload

    安裝lib32zl(包名也可能是 lib32-zlib)

  • Error: java.util.concurrent.ExecutionException: java.lang.RuntimeException: AAPT process not ready to receive commands

    安裝lib32stdc++6(如果沒有6 也可以安裝 lib32stdc++5)

    注意:對於以上兩個軟體安裝,你可能需要手動開啟lib32源(例如archlinux需要開啟multilib源)。目前這兩個軟體還沒法用64位的代替。

    提示:具體包名可在http://pkgs.org 搜尋關鍵字查詢。

  • kvm相關(用以對模擬器加速)

    根據發行版安裝qemu(具體包名可在http://pkgs.org 搜尋關鍵字查詢,或使用包管理器搜尋關鍵字),啟用kvm相關模組(一般會自動啟用)。

    參閱文件qemu#.E5.90.AF.E7.94.A8_KVM) kvm#.E5.A6.82.E4.BD.95.E4.BD.BF.E7.94.A8KVM) kernel modules#.E6.89.8B.E5.8A.A8.E5.8A.A0.E8.BD.BD.E5.8D.B8.E8.BD.BD)

    • kvm硬體支援情況

      grep -E "(vmx|svm)" --color=always /proc/cpuinfo

      如果執行後沒有顯示,那麼你的處理器支援硬體虛擬化

    • 檢查kvm啟用狀況

      • bios裡面檢視是否開啟虛擬化
      • lsmod | grep kvm 檢視是否載入了kvm相關模組 有類似一下輸出

        kvm_intel             225280  4
        kvm                   696320  1 kvm_intel

        一般在安裝kvm後重啟,系統會自動將這些模組進行載入。

  • 啟動安卓模擬器提示 /dev/kvm device permission denied

    將當前使用者新增到kvm使用者組即可,加入當前使用者名稱為username

    usermod -aG kvm username
    newgrp  #立即生效 也可以重啟系統或者登出登入後生效
  • 啟動安卓模擬器失敗Emulator: Process finished with exit code 1

    開啟log有類似:

    libGL error: unable to load driver: i965_dri.so
    libGL error: driver pointer missing
    libGL error: failed to load driver: i965
    libGL error: unable to load driver: swrast_dri.so
    libGL error: failed to load driver: swrast

    ln -sf /usr/lib/libstdc++.so.6* $ANDROID_SDK_HOME/emulator/lib64/libstdc++/

更新:android studio的模擬器效能捉急 建議使用genymotion

安裝genymotion後,在settings-ADB點選use custom android sdk,然後在下面選上sdk的位置(一般是xxx/android-sdk)


命令列控制模擬器

對於react-native開發,大多時候並不需要開啟android studio,只是希望快速開啟android emulator進行除錯,這裡對從命令列啟動和建立虛擬機器進行簡要說明。

更多命令可使用android -h獲取。

啟動虛擬機器

  • 列出所有建立的虛擬機器

    emulator -list-avds    
  • emulator @虛擬機器名字 可啟動一個虛擬機器

    例如某個虛擬機器名為Nexus_5X_API_27_x86,執行以下命令啟動:

    emulator @Nexus_5X_API_27_x86

    如果當前只有一個虛擬機器,可以執行一下命令直接啟動:

    emulator @`emulator -list-avds`

    !錯誤:如果提示

    Could not launch `/home/levin/../emulator/qemu/linux-x86_64/qemu-system-x86_64`: No such file or directory

    可以使用$ANDROID_HOME/tools/emulator代替emulator

    $ANDROID_HOME/tools/emulator @`emulator -list-avds`

    為了方便使用,可在~/.bashrc新增相關別名,例如:

    alias avds=`emulator -list-avds`  #列出所有虛擬機器
    alias emulator=`$ANDROID_HOME/tools/emulator`  #emulator
    #啟動虛擬機器(適合只有一個時)
    alias avd=`$ANDROID_HOME/tools/emulator @`emulator -list-avds``

建立/刪除虛擬機器

  • 列出所有sdk

    android list target

    會有類似以下內容:

    id: 3 or “android-27”

    Name: Android API 27
    Type: Platform
    API level: 27
    Revision: 1

    其中的id就是下面建立虛擬機器需要的選項之一

  • 建立虛擬機器

    android create avd -n new_android -t 3

    其中-n後面指定虛擬機器的名字,-t後面的數字指定上面列出的id值。

    使用emulator @new_android即可啟動名為new_android的虛擬機器。

  • 刪除虛擬機器

    android delete new_android

相關文章