# Repo allowing -in a KISS way- to create a containered way to build an Android App APK ## brach `no-res.xml` this branch features the exmaple.app to not require the compoletely bogus unneeded requirement to setup a `./apk/res/layouts/res.xml` file to setup the layout to be used. Instead a layout is created inline ## tl;dr to `make` minimal exmaple.app via the docker-compose: ``` # clone repo git clone https://git.alexmahr.de/lion/android-app-docker # enter local copy cd android-app-docker # checkout the branch for minmal-example-app git checkout minimal-example-app # set env variable export YESACCEPT=y #to acceccpt the license agreement terms (it is your responsibility to read it) # build app (this involves first building the docker compose setup and container used to build the apk) make build ``` This will generate the APK file `./apk/example.app.apk` this can be installed via `adb` ``` adb install -r ./apk/exmple.app.apk # or alternative type make install ``` which of course would require your mobile device to be connected and setup for USB-debugging. ## a bit longer build an application 0. build the image _*_ ```sh # set YESSACCEPT TO "y" else the buid will not work, you agree to the upstream google corp licenses as shown # without that a dockerimage cannot bu build docker compose build --pull --build-arg YESACCEPT= ``` 1. modify the example minimal application source code found in ```sh vim ./apk/Makefile vim ./apk/..... (other files) ``` 2. run the compilation in the container (which is build via `Dockerfile` and `docker-compose.yml` upon first usage) ```sh docker-compose run compile ``` this should result in the apk being build and be available at `./apk/app.apk` ## Dependencies / Requirementes Ideally to work the system mus have `docker` and `docker-compose` (or some equivalend like `podman` etc.) installed. Having GNU make installed would allow to use the contained Makefile, which however is not necessary ## Concepts and Ideals Many smart folks use [Android Studio](https://en.wikipedia.org/wiki/Android_Studio) IDE to build Applications knowing the in and outs of what such an Android App amounts to. Sadly often the formerly mentioned Software also allows for many less experienced or even uninformed persons to end up with an Application, wiithout having had much or any insight what is really happening. The "comfort" and assistence and overhead of the "automagic" support of the IDE might have drawbacks such as - more complex and hence less understood build system - lower actual understanding of the build system - dependence on the toolset and being basically "spoon-fed" - lack of mastery and dominance and autonomy - needless loss of insight - ... (1001 further permutations of the previous criticisms)... To counteract this "generate an app via mouseclick", this repo strives to provide an alternative route to build an Android application, that via its "Hello World" app example should allow to - generate a "hello world" application (and extend/grow/modify that) easily via CLI - being portable and easily installable (hence the `docker compose`) - reuse Makefile as an often familiar concept of "recipe" way to build the application ## Helpful commands * coerce rebuild: ```sh docker-compose down --remove-orphans --rmi all docker-compose build --no-cache ```