
我安裝了 android sdk,並且我希望二進位檔案build-tools/android-VERSION
在 PATH 中可用,所以我添加了幾行:
ANDROID_SDK=/Application/Binaries/adt-bundle-linux-x86_64-20140321/sdk/
ANDROID_PATH=$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_SDK/build-tools/android-4.4.2/
問題是,我可能隨時更新 SDK,因此build-tools/android-4.4.2/
可能會發生變化。如果是這樣,我將不得不再次編輯該檔案並更新android-version
$PATH 中的部分
所以我將個人資料改為這樣的內容,
ANDROID_SDK=/Application/Binaries/adt-bundle-linux-x86_64-20140321/sdk/
ANDROID_PATH=$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
for x in $ANDROID_SDK/build-tools/android-*/; do
export PATH=$PATH:$x
done
看起來很蠢,還有更好的寫法嗎?
答案1
理想的方法是建立一個名為 的軟連結目錄adt
,並在 SDK 更改後重新建立它。
因此,你的PATH
意志保持不變。
答案2
在這種方法中,有兩次ls
按時間排序且僅針對目錄 ( -td
) 的輸出透過管道傳輸到head
命令,然後該命令選擇第一行。結果是應該使用adt-bundle-linux-x86_64-*/sdk
兩者的最新版本build-tools/android-*/
來修改 PATH 環境變數。
ANDROID_SDK=$( ls -td /Application/Binaries/adt-bundle-linux-x86_64-*/sdk/ | head -n 1 )
if ! [ -z $ANDROID_SDK ] ; then
ANDROID_PATH=$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
ANDROID_BUILDTOOLS=$( ls -td $ANDROID_SDK/build-tools/android-*/ | head -n 1 )
if ! [ -z $ANDROID_BUILDTOOLS ] ; then
echo "Adding $ANDROID_BUILDTOOLS to PATH"
export PATH=$PATH:$ANDROID_BUILDTOOLS
else
echo "Couldn't find build tools"
fi
else
echo "Couldn't find SDK"
fi
答案3
PATH="$PATH:$(printf '%s:' $ANDROID_SDK/build-tools/android-[0-9.]*/)"
應該管用。
cd ~ ; mkdir dir1 dir2 dir3
( PATH=$(printf %s: $HOME/dir[12])
echo "$PATH" )
/home/mikeserv/dir1:/home/mikeserv/dir2:
Another method:
PATH="$PATH:$( set -- `printf '%s\n' "$ANDROID_SDK"*/android[0-9.]*/ |
sort -rV` ; [ -d "$1" ] && echo "$1" )"
這利用了sort's -Version
處理,這應該確保位置參數"$1"
始終設定為 Android SDK 的最新版本。例如:
不含排序:
% printf %s\\n ~/dir[0-9]*
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir45
用它:
% printf %s\\n ~/dir[0-9]* | sort -V
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir3
/home/mikeserv/dir23
/home/mikeserv/dir45
並反轉:
% printf %s\\n ~/dir[0-9]* | sort -rV
/home/mikeserv/dir45
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir2
/home/mikeserv/dir1