# Android App (build via docker/podman) The goal of this repo, is to create a container that can serve to produce an "empty android Application" (i.e `app.apk` file). As such the philosophy is to keep the process "simple" as to now make the understanding too difficult. ## usage 0. clone this repo 1. run ``` ./build-android-app.sh ``` 2. follow the configuration 3. upon success the apk file created is in app/result/app.apk and can be installed via `adb` ``` adb install -r app/result/app.apk ``` ## basic ideas * work within container (debian based image) * use Makefile as a build tool ## benefits of this (compared to AndroidStudio) * no need to install rather bloated hell of software (i.e AndroidStudio) and all * less hidding of internals (i.e Makefile allows to see how app.apk is made) * small app.apk file * oftentimes faster compile time (as compared with AndroidStudio Gradle builds) * quick "webview" which can serve as starting point for people that can to PWA and websites * Assisted initial configuration provides access to configure almost all types of [Android app permissions](app/.Makefile.scripts/make--app-config.sh#L127) * no need to have Kotlin, Gradle setup / ## basic info This repo should allow to generate an empty "android app". by simply cloning this repo and ``` ./build-android-app.sh ``` It does so via: 1. building a container (in any of the runtime/daemons it finds: i.e. docker,podman,etc..) 2. running this container having the `./app` folder being mounted within as `/app` 3. executing the [`app/Makefile`](app/Makefile) which will then: 4. either work with the configuration stored in an `app/app-config.sh` in case such file exists or 5. if not go through a `whiptail` text menu wizzard to configure a new empty app. (Makefile recipe: `./app-config.sh`) 6. it will then download the required android sdk files as necessary (Makefile recipe: `./android-sdk/installed`) 7. go through the further steps to setup the blank app. ## files and purpose Upon `clone` of this repo the `app` folder is setup with these files: ``` # The (GNU) Makefile which... app/Makefile # ... has recipes that call scripts in folder.... app/.Makefile.scripts # .. which creates an `app-config.sh`, a file to keep # the configuration (app name,lable,api-levels,permissions etc)... app/.Makefile.scripts/make--app-config.sh # .. which creates an `AndroidManifest.xml` app/.Makefile.scripts/make--AndroidManifest.xml # .. which creates an `AppActivity.java` file (which just setup a Webview and loads `assets/index.html`) app/.Makefile.scripts/make--AppActivity.java.sh # .. which installs the necessary Android SDK in the correct versions app/.Makefile.scripts/make--android-sdk.sh app/assets # the index.html file app/assets/index.html app/res app/res/drawable # the icon of the app app/res/drawable/appicon.xml ``` Upon further `./build-android-app.sh` execution more folders will appear ``` # a folder in which the Android-sdk stuff (installed via sdkmanager) is stored android-sdk # folders used during build... # ... for temporary files bin/ obj/ result/ # app configuration resulting from text whiptail menu app-config.sh # the Manifest file as resulted from data from app-config.sh AndroidManifest.xml ```