.png)
Tengo instalado el SDK de Android y quiero que los binarios build-tools/android-VERSION
estén disponibles en PATH, así que agrego algunas líneas:
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/
Este es el problema: puedo actualizar el SDK en cualquier momento, por lo que build-tools/android-4.4.2/
podría cambiarlo. Si es así, tendría que editar el archivo nuevamente y actualizar la android-version
parte en $PATH.
Entonces cambié el perfil a algo como esto,
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
Parece una tontería, ¿hay alguna forma mejor de escribirlo?
Respuesta1
La forma ideal es crear un directorio de enlace suave llamado adt
y volver a crearlo después de los cambios en el SDK.
Por lo tanto, tu PATH
seguirás siendo el mismo.
Respuesta2
En este enfoque, en dos ocasiones la salida de ls
, ordenada a tiempo y solo para directorios ( -td
), se canaliza al head
comando que luego selecciona la primera línea. El resultado es que se debe utilizar la versión más reciente de ambos adt-bundle-linux-x86_64-*/sdk
y de build-tools/android-*/
para modificar la variable de entorno 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
Respuesta3
PATH="$PATH:$(printf '%s:' $ANDROID_SDK/build-tools/android-[0-9.]*/)"
Deberia trabajar.
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" )"
que se aprovechasort's -Version
manejo, que debe garantizar que el parámetro posicional"$1"
siempre está configurado en la última versión de su SDK de Android. Por ejemplo:
SIN CLASE:
% printf %s\\n ~/dir[0-9]*
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir45
CON ESO:
% printf %s\\n ~/dir[0-9]* | sort -V
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir3
/home/mikeserv/dir23
/home/mikeserv/dir45
Y AL INVERTIDO:
% printf %s\\n ~/dir[0-9]* | sort -rV
/home/mikeserv/dir45
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir2
/home/mikeserv/dir1