.png)
Eu tenho o SDK do Android instalado e quero que os binários build-tools/android-VERSION
estejam disponíveis no PATH, então adiciono algumas linhas:
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/
Aqui está o problema: posso atualizar o SDK a qualquer momento, então build-tools/android-4.4.2/
posso mudar com isso. Se sim eu teria que editar o arquivo novamente e atualizar a android-version
parte em $PATH
Então mudei o perfil para algo assim,
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
Isso parece idiota, alguma maneira melhor de escrever isso?
Responder1
A maneira ideal é criar um diretório de soft link chamado adt
e recriá-lo após as alterações do SDK.
Assim, o seu PATH
permanecerá o mesmo.
Responder2
Nesta abordagem, em duas ocasiões, a saída de ls
, classificada no tempo e apenas para diretórios ( -td
), é canalizada para o head
comando que então seleciona a primeira linha. O resultado é que a versão mais recente de ambos adt-bundle-linux-x86_64-*/sdk
e de build-tools/android-*/
deve ser usada para a modificação da variável de ambiente 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
Responder3
PATH="$PATH:$(printf '%s:' $ANDROID_SDK/build-tools/android-[0-9.]*/)"
Deveria trabalhar.
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" )"
Isso aproveitasort's -Version
manuseio, o que deve garantir que o parâmetro posicional"$1"
está sempre definido para a versão mais recente do seu Android SDK. Por exemplo:
SEM CLASSIFICAÇÃO:
% printf %s\\n ~/dir[0-9]*
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir45
COM ISSO:
% printf %s\\n ~/dir[0-9]* | sort -V
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir3
/home/mikeserv/dir23
/home/mikeserv/dir45
E REVERTIDO:
% printf %s\\n ~/dir[0-9]* | sort -rV
/home/mikeserv/dir45
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir2
/home/mikeserv/dir1