MAC中如何配置兩套android-sdk環境

1 背景介紹android

   隨着android studio的完善和普及,愈來愈多Android app開發者從Eclipse+ADT環境轉到Android Studio(後文統一用AS表示)。可是,AS每每須要較新的SDK,從目前的測試結果來看,在MAC OSX 10.10系統中不少基於老版本SDK開發的東西並不能完美運行在新版本的SDK中,即二者並不能完美兼容,好比,在Eclipse+ADT環境中建立的模擬器鏡像或快照就沒法在AS中使用(具體表現爲模擬器或快照沒法啓動,或啓動以後立刻crash)。所以,最好的解決方案就是在系統中同時使用兩套SDK,老版本的給Eclipse使用,新版本的用於AS。編程

   目前檢測到的主要問題發生在DDMS上,貌似新版SDK中的DDMS並不能兼容原來版本較舊的Eclipse。具體緣由待之後有時間了再深究~bash

2 如何建立兩套SDKapp

   建立兩套SDK很簡單,可是如何讓兩套SDK獨立運行且互不干擾卻相對麻煩。爲方便描述,下文將老版的SDK目錄稱作old_sdk,新版的SDK目錄稱做new_sdk。測試

   首先因爲筆者當前仍是以Eclipse開發爲主,因此默認SDK就是old_sdk,只有在使用AS的時候才須要用到new_sdk。所以,筆者在~/.bash_profile文件中作了以下配置:spa

#default sdk
export ANDROID_HOME=/Users/your_user_name/android/env/old-android-sdks

   這樣咱們在啓動程序的時候默認就是用上述old_sdk目錄。那麼如何在啓動AS的時候使用new_sdk呢?一樣是在~/.bash_profile中操做,這裏咱們添加一條alias命令:code

# set new sdk envrionment for Android Studio
alias myas='export ANDROID_HOME=/Users/your_user_name/android/env/new-android-sdks && open -a /Applications/Android\ Studio.app/'

   經過上面的設置,當咱們須要使用AS的時候只須要在終端中輸入myas便可。不過這種方式並不完美,由於若是咱們新開一個終端,而後使用adb命令的話,其默認是使用老版的adb,這或多或少會出現一些兼容性問題。爲何會這樣呢?答案見bash_profile中的PATH環境變量的設置:orm

export  PATH=/user/local/bin:$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

   由於PATH的值是在咱們更改ANDROID_HOME以前就設置完成的,因此此時的ANDROID_HOME是old_sdk。所以最好的方式就是提供一個alias命令能夠一次性切換ANDROID_HOME和PATH:blog

# set new sdk envrionment for Android Studio
alias change_android_sdk='export ANDROID_HOME=/Users/your_user_name/android/env/new-android-sdks && export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH'
alias myas='change_android_sdk && open -a /Applications/Android\ Studio.app/'

  經過上述設置,就能確保在AS中使用的必定是new_sdk,且當咱們在AS環境下進行Android編程的時候,若是要使用到adb之類的命令,只須要在新的終端中使用change_android_sdk命令就能切換到new_sdk了。ip

3 遇到的一些奇特bug集錦

   問題一:模擬器快照crash問題

   注意:爲了方便,筆者是使用emulator命令啓動的模擬器快照,而非經過Emulator Devices Manager

   因爲當初是使用old_sdk建立的模擬器快照,所以該快照並不能與new_sdk兼容。具體crash場景就是:

先在old_sdk環境下啓動快照,一切正常。
而後使用myas打開Android Studio,一切正常。
而後在myas中運行一個app到快照中,一切正常。
這時候關閉快照,而後從新啓動快照,出現BUG,快照沒法啓動,或者很快crash!

爲何會這樣呢?由於啓動了AS以後當前系統中運行的adb, ddms之類的組件都是來自new_sdk的,而筆者啓動的快照必須基於old_sdk,因此就出現了兼容性問題。
解決方案以下:
首先關閉Android Studio, 而後打開Eclipse(新開一個終端使用open命令打開,或者直接經過系統自帶的快捷方式啓動),這時候Eclipse會自動啓動old_sdk中的知足Eclipse運行的必備的組件(如adb, ddms等),且這些組件會替換掉當前系統中正在運行的、由AS啓動的那些new_sdk組件,此時咱們再啓動模擬器快照就沒有問題了!

4 總結

   模擬器快照crash問題卡了筆者整整兩天時間,起見還進行過一次系統還原o(╯□╰)o。很幸運最後可以解決這個問題,由於終於能夠一邊保持原有Eclipse環境,一邊享受Android Studio帶來的高效開發了!

   鑑於MAC與Linux的類似性,上述方案應該也能夠應用到Linux環境中,只是上述.bash_profile文件會根據具體的系統而不一樣,常見的等效文件名以下:

   .bash_login   .bashrc   .profile

相關文章
相關標籤/搜索