android: un script deja el proyecto listo para Android Studio
Clona el Oasis oficial en su commit, descarga su APK de la misma version y lanza prepare.sh. Despues basta con abrir android/ y darle a Build APK.
This commit is contained in:
parent
101bdfe4e8
commit
de5e8fba20
3 changed files with 92 additions and 0 deletions
12
README.md
12
README.md
|
|
@ -161,6 +161,18 @@ descomprime el servidor.
|
||||||
|
|
||||||
### Compilar
|
### Compilar
|
||||||
|
|
||||||
|
**Con Android Studio**, lo más fácil:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./android/scripts/android-studio.sh # trae el Oasis oficial y su APK, y empaqueta el backend
|
||||||
|
```
|
||||||
|
|
||||||
|
Después, en Android Studio: *File → Open →* la carpeta `android/`, esperar al Gradle
|
||||||
|
Sync, y *Build → Build App Bundle(s) / APK(s) → Build APK(s)*. Si cambias algo en
|
||||||
|
`src/` o en `main.js`, vuelve a lanzar el script antes de compilar.
|
||||||
|
|
||||||
|
**Desde la terminal**, paso a paso:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd android
|
cd android
|
||||||
# la primera vez hace falta la APK oficial de la MISMA versión (ahora la 1.3.3):
|
# la primera vez hace falta la APK oficial de la MISMA versión (ahora la 1.3.3):
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,10 @@ el NDK.
|
||||||
|
|
||||||
## Construir
|
## Construir
|
||||||
|
|
||||||
|
Con Android Studio basta con `./scripts/android-studio.sh`: clona el Oasis oficial,
|
||||||
|
descarga su APK de la misma version y empaqueta el backend. Luego *File > Open >*
|
||||||
|
esta carpeta y *Build > Build APK(s)*. A mano, paso a paso:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# 1. dependencias del backend (una vez)
|
# 1. dependencias del backend (una vez)
|
||||||
(cd ../src/server && npm install)
|
(cd ../src/server && npm install)
|
||||||
|
|
|
||||||
76
android/scripts/android-studio.sh
Executable file
76
android/scripts/android-studio.sh
Executable file
|
|
@ -0,0 +1,76 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Deja el proyecto listo para compilarlo desde Android Studio.
|
||||||
|
#
|
||||||
|
# Android Studio solo compila: no sabe traer el Oasis oficial, ni sacar libnode.so
|
||||||
|
# del APK de epsylon, ni empaquetar el backend. Esto lo hace todo de una vez:
|
||||||
|
#
|
||||||
|
# 1. clona el Oasis oficial en ../upstream, en el commit de .upstream-commit
|
||||||
|
# (de ahi salen las dependencias del backend, src/base/node_modules)
|
||||||
|
# 2. descarga el APK oficial de la misma version a android/native/
|
||||||
|
# (de ahi salen libnode.so y los modulos nativos de Node para Android)
|
||||||
|
# 3. lanza prepare.sh, que copia las librerias y empaqueta el backend
|
||||||
|
#
|
||||||
|
# Uso, desde la raiz del repo o desde android/:
|
||||||
|
# ./android/scripts/android-studio.sh
|
||||||
|
#
|
||||||
|
# Despues, en Android Studio: File > Open > la carpeta android/, esperar a que
|
||||||
|
# termine el Gradle Sync, y Build > Build App Bundle(s) / APK(s) > Build APK(s).
|
||||||
|
#
|
||||||
|
# Cada vez que cambies algo en src/ o en main.js, vuelve a lanzarlo: la APK lleva
|
||||||
|
# el backend empaquetado y Android Studio no lo rehace solo.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
HERE="$(cd "$(dirname "$0")/.." && pwd)" # android/
|
||||||
|
REPO="$(cd "$HERE/.." && pwd)" # raiz del repo
|
||||||
|
UPSTREAM="${OASIS_UPSTREAM:-$REPO/../upstream}"
|
||||||
|
|
||||||
|
say() { printf '\n== %s\n' "$*"; }
|
||||||
|
die() { printf '\n!! %s\n' "$*" >&2; exit 1; }
|
||||||
|
|
||||||
|
for cmd in git node curl zip unzip; do
|
||||||
|
command -v "$cmd" >/dev/null || die "falta '$cmd': instalalo y vuelve a lanzarlo"
|
||||||
|
done
|
||||||
|
|
||||||
|
# --- 1) el Oasis oficial, en el mismo commit que src/ -----------------------------
|
||||||
|
COMMIT="$(cat "$REPO/.upstream-commit")"
|
||||||
|
if [ ! -d "$UPSTREAM/.git" ]; then
|
||||||
|
say "clonando el Oasis oficial en $UPSTREAM (unos 300 MB, solo la primera vez)"
|
||||||
|
git clone https://github.com/epsylon/oasis "$UPSTREAM"
|
||||||
|
fi
|
||||||
|
if [ "$(git -C "$UPSTREAM" rev-parse HEAD)" != "$COMMIT" ]; then
|
||||||
|
say "poniendo el Oasis oficial en el commit $COMMIT"
|
||||||
|
git -C "$UPSTREAM" fetch --quiet origin || true
|
||||||
|
git -C "$UPSTREAM" checkout --quiet "$COMMIT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 2) el APK oficial de la misma version ----------------------------------------
|
||||||
|
VERSION="$(node -p "require('$REPO/src/server/package.json').version")"
|
||||||
|
BASE="$HERE/native/oasis-v$VERSION.apk"
|
||||||
|
if [ ! -f "$BASE" ]; then
|
||||||
|
say "descargando el APK oficial $VERSION (unos 50 MB, solo la primera vez)"
|
||||||
|
mkdir -p "$HERE/native"
|
||||||
|
curl -fL --progress-bar -o "$BASE.part" \
|
||||||
|
"https://github.com/epsylon/oasis/releases/download/oasis-android-v$VERSION/oasis-v$VERSION.apk" \
|
||||||
|
|| die "no se ha podido descargar el APK oficial de la $VERSION"
|
||||||
|
mv "$BASE.part" "$BASE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 3) librerias y backend --------------------------------------------------------
|
||||||
|
say "empaquetando el backend (un minuto o dos)"
|
||||||
|
OASIS_UPSTREAM="$UPSTREAM" "$HERE/scripts/prepare.sh" "$BASE"
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
== listo
|
||||||
|
|
||||||
|
Ahora, en Android Studio:
|
||||||
|
1. File > Open > $HERE
|
||||||
|
2. espera a que termine el Gradle Sync (la primera vez descarga bastante)
|
||||||
|
3. Build > Build App Bundle(s) / APK(s) > Build APK(s)
|
||||||
|
|
||||||
|
La APK sale en:
|
||||||
|
$HERE/app/build/outputs/apk/debug/app-debug.apk
|
||||||
|
|
||||||
|
Si cambias algo en src/ o en main.js, vuelve a lanzar este script antes de compilar.
|
||||||
|
EOF
|
||||||
Loading…
Add table
Add a link
Reference in a new issue