This file describes the framework ACC and similar projects of mine are built upon.
It's assumed that you are already a flashable zip and/or Magisk module creator.


Generic Project Structure

_builds/ (local only dir)
  $id-$versionCode/
    $id_$version_($versionCode).tar.gz (for front-end apps)
    $id_$version_($versionCode).zip (flashable)
    $id-uninstaller.zip (flashable, copy of bin/$id-uninstaller.zip)
    install-tarball.sh (copied from $id/)

_misc/ (local only dir, for drafts and random stuff)
  random_dir/
  random_file

 $id/ (files to be installed)
  translations/
  aquire-lock.sh (for job control, uses flock)
  default-config.txt
  flash-zips.sh (universal shell-based-zip flasher)
  release-lock.sh
  select.sh ("select" for shells that lack it)
  service.sh (boot/initialization script)
  setup-busybox.sh
  strings.sh (core language strings)
  uninstall.sh

bin/
  $id-uninstaller.zip (generated by build.sh; update-binary is a copy of $id/uninstall.sh)

META-INF/com/google/android/
  update-binary (copy of install.sh)
  updater-script (dummy file)

.gitattributes
.gitignore
build.bat
build.sh
bundle.bat
bundle.sh (copies tarball and install-tarball.sh to front-end-src-code/app/src/main/res/raw/)
check-syntax.bat
check-syntax.sh
customize.sh (copy of install.sh, for compatibility with Magisk)
framework-details.txt (this file)
install.sh (main installer)
install-online.sh (upgrader, online installer)
install-tarball.sh (mainly used by a front-end app)
License.md (GPLv3)
module.prop
README.md (documentation)
TODO.txt (draft for features, issues, thoughts...)


Tasks Carried Out By build.sh

1. Check shell syntax in all scripts.

2. Update version and versionCode in module.prop (values come from README.md > LATEST CHANGES).

3. Set the correct id and domain (from module.prop) in install*.sh, $id/*.sh and bundle.sh.

4. Patch README.md.

5. Update busybox config (from $id/setup-busybox.sh) in $id/uninstall.sh and install scripts.

6. Unify installers for flashable zip (customize.sh and update-binary are copies of install.sh).

7. Generate flashable zips (main & uninstaller) - and tarball for front-ends.
