android-app-docker/README.md

101 lines
3.5 KiB
Markdown

# Repo allowing -in a KISS way- to create a containered way to build an Android App APK
## changelog
* using https://android.googlesource.com/platform/cts/+/android-7.1.1_r13/tests/tests/webkit/src/android/webkit/cts/PostMessageTest.java derived
webmessage to send data to Javascript/Webview from Java (using a timer)
## 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 ./example.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
```