diff --git a/app/.Makefile.scripts/make--AndroidManifest.xml b/app/.Makefile.scripts/make--AndroidManifest.xml
new file mode 100755
index 0000000..e033664
--- /dev/null
+++ b/app/.Makefile.scripts/make--AndroidManifest.xml
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+test -f app-config.sh && {
+ source app-config.sh
+}
+
+cat > "AndroidManifest.xml" << ANDROIDMANIFEST
+
+
+
+$(sed 's/^/ /' <<< "$APP_PERMISSIONS")
+
+
+
+
+
+
+
+
+
+ANDROIDMANIFEST
+
diff --git a/app/.Makefile.scripts/Makefile.android-sdk.sh b/app/.Makefile.scripts/make--android-sdk.sh
similarity index 59%
rename from app/.Makefile.scripts/Makefile.android-sdk.sh
rename to app/.Makefile.scripts/make--android-sdk.sh
index d46b5d3..1b14330 100755
--- a/app/.Makefile.scripts/Makefile.android-sdk.sh
+++ b/app/.Makefile.scripts/make--android-sdk.sh
@@ -52,9 +52,10 @@ test -f android-sdk/.installed.buildtools.version.$APP_VERSION_SDK_TARGET || {
sdkmanager --install "$EXACTVERSION_BUILDTOOLS"
}
echo "$EXACTVERSION_BUILDTOOLS" > android-sdk/.installed.buildtools.version.$APP_VERSION_SDK_TARGET
+ ln -rvsf android-sdk/.installed.buildtools.version.{$APP_VERSION_SDK_TARGET,current}
}
-test -f android-sdk/.installed.platform.version.$APP_VERSION_SDK_TARGET || {
+test -f android-sdk/.installed.platforms.version.$APP_VERSION_SDK_TARGET || {
EXACTVERSION_PLATFORM="$(
sdkmanager --list 2>/dev/null |
sed 's/^ *//' |
@@ -71,43 +72,8 @@ test -f android-sdk/.installed.platform.version.$APP_VERSION_SDK_TARGET || {
sdkmanager --list_installed | grep -q "$EXACTVERSION_PLATFORM" || {
sdkmanager --install "$EXACTVERSION_PLATFORM"
}
- echo "$EXACTVERSION_PLATFORM" > android-sdk/.installed.platform.version.$APP_VERSION_SDK_TARGET
+ echo "$EXACTVERSION_PLATFORM" > android-sdk/.installed.platforms.version.$APP_VERSION_SDK_TARGET
+ ln -rvsf android-sdk/.installed.platforms.version.{$APP_VERSION_SDK_TARGET,current}
}
-exec bash
-
-#test -f android-sdk/.installed.buildtools.version.$APP_VERSION_SDK_TARGET || { # EXACTVERSION_BUILDTOOLS="$(
-# sdkmanager --list 2>/dev/null |
-# sed 's/^ *//' |
-# grep -e 'build-tools;'"$APP_VERSION_SDK_TARGET"'\.[0-9]*\.[0-9]*\ ' |
-# cut -f1 -d' ' |
-# sort |
-# tail -n 1
-# )"
-# sdkmanager list_installed | -q grep "$EXACTVERSION_BUILDTOOLS" || {
-# sdkmanager --install "$EXACTVERSION_BUILDTOOLS"
-# }
-# touch android-sdk/.installed.buildtools.version.$APP_VERSION_SDK_TARGET
-#}
-
-#sdkmanager --list | grep build-tools | grep -v rc
-
-#
-#ENV PATH="$BUILD_TOOLS_LATEST/bin:$PATH"
-##TODO make this automatic
-#ENV JAVA_HOME="/usr/lib/jvm/java-17-openjdk/"
-#ENV LIBRARY_PATH="$LIBRARY_PATH:$BUILD_TOOLS_LATEST/lib"
-#RUN echo you selected to accept the licenses/TOS
-#RUN echo "$YESACCEPT" | sdkmanager --install "build-tools;33.0.2"
-#RUN echo "$YESACCEPT" | sdkmanager --install "platforms;android-33"
-##RUN echo "$YESACCEPT" | sdkmanager --install "ndk;28.0.12433566"
-##RUN echo "$YESACCEPT" | sdkmanager --install "system-images;android-33;aosp_atd;x86_64"
-##RUN echo "$YESACCEPT" | sdkmanager --install "emulator"
-##RUN echo "no" | avdmanager --verbose create avd --force --name "thedevice" --package 'system-images;android-33;aosp_atd;x86_64' --tag "aosp_atd" --abi "x86_64"
-##RUN echo "$YESACCEPT" | sdkmanager --install "platform-tools"
-#COPY entrypoint.sh /entrypoint.sh
-#RUN chown 0:0 /entrypoint.sh
-#RUN chmod 0700 /entrypoint.sh
-#WORKDIR /apk
-#ENTRYPOINT ["/entrypoint.sh"]
-#RUN echo "$YESACCEPT" | tee yesaccept
+touch android-sdk/installed
diff --git a/app/.Makefile.scripts/Makefile.app-config.sh b/app/.Makefile.scripts/make--app-config.sh
similarity index 98%
rename from app/.Makefile.scripts/Makefile.app-config.sh
rename to app/.Makefile.scripts/make--app-config.sh
index c54c32d..7b35f2c 100755
--- a/app/.Makefile.scripts/Makefile.app-config.sh
+++ b/app/.Makefile.scripts/make--app-config.sh
@@ -670,8 +670,9 @@ APP_PERMISSIONS="${APP_PERMISSIONS:-"$(whiptail --nocancel --notags --checklist
'android.permission.WRITE_SMS' 'WRITE_SMS' 0 \
'android.permission.WRITE_SOCIAL_STREAM' 'WRITE_SOCIAL_STREAM' 0 \
'android.permission.WRITE_SYNC_SETTINGS' 'WRITE_SYNC_SETTINGS - Allows applications to write the sync settings.' 0 \
-'android.permission.WRITE_VOICEMAIL' 'WRITE_VOICEMAIL - Allows an application to modify and remove existing voicemails in the system.' 0 3>&1 1>&2 2>&3 |
- sed 's/"an/\n/g' )"}"
+'android.permission.WRITE_VOICEMAIL' 'WRITE_VOICEMAIL - Allows an application to modify and remove existing voicemails in the system.' 0 3>&1 1>&2 2>&3 |
+ sed 's/$/ /' |
+ sed 's/"an/\n/g' )"}"
@@ -688,36 +689,3 @@ cat << INFO
Creating an skeleton for an Android app with the following info:
$APP_VALUES
INFO
-#
-#
-#cat > "${APP_FOLDER}/AndroidManifest.xml" << ANDROIDMANIFEST
-#
-#
-#
-#$(sed 's/^/ /' <<< "$APP_PERMISSIONS")
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#ANDROIDMANIFEST
-#
-#cat Dockerfile > "${APP_FOLDER}/Dockerfile"
-#cat >> "${APP_FOLDER}/Dockerfile" << DOCKERFILEADDITION
-#RUN echo "$YESACCEPT" | sdkmanager --install "build-tools;33.0.2"
-#RUN echo "$YESACCEPT" | sdkmanager --install "platforms;android-33"
-#DOCKERFILEADDITION
-#
-#
-#
diff --git a/app/Makefile b/app/Makefile
index 41427e4..0c18963 100644
--- a/app/Makefile
+++ b/app/Makefile
@@ -1,46 +1,124 @@
-android-sdk: app-config.sh
- ./.Makefile.scripts/Makefile.android-sdk.sh
+SHELL=/bin/bash
-
-app-config.sh: FORCE
- ./.Makefile.scripts/Makefile.app-config.sh
+#shell:
+# bash
+app.apk: ./result/app.apk
+ ln -srv ./result/app.apk ./app.apk
+
+./result/app.apk : ./result/signed.apk app-config.sh
+ source app-config.sh; $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.buildtools.version.current)/zipalign -v -f 4 $< $@
+ source app-config.sh; $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.buildtools.version.current)/apksigner sign \
+ --ks ToyKey.keystore --key-pass pass:armena --ks-pass pass:armena $@
+
+./result/signed.apk : ./result/unsigned.apk ./ToyKey.keystore ./result
+ jarsigner -verbose -keystore ./ToyKey.keystore -storepass armena -keypass armena -signedjar $@ $< helljniKey
+
+android-sdk/installed: app-config.sh
+ ./.Makefile.scripts/make--android-sdk.sh
AndroidManifest.xml: app-config.sh
- ./.Makefile.scripts/Makefile.AndroidManifest.xml
+ ./.Makefile.scripts/make--AndroidManifest.xml
+
+app-config.sh:
+ ./.Makefile.scripts/make--app-config.sh
+srcj/package: app-config.sh
+ source app-config.sh; PKGDIR=$$(echo "$$APP_PACKAGE" | tr '.' '/'); mkdir -p src/$$PKGDIR; ln -srv src/$$PKGDIR $@
-app.apk:
- echo hallo
+obj/package: app-config.sh
+ source app-config.sh; PKGDIR=$$(echo "$$APP_PACKAGE" | tr '.' '/'); mkdir -p obj/$$PKGDIR; ln -srv obj/$$PKGDIR $@
+
+./result /bin /assets /src/ obj:
+ mkdir -p "$@"
+
+./ToyKey.keystore :
+ keytool -genkeypair -validity 1000 -dname "CN=alexander,O=Android,C=JPN" -keystore $@ \
+ -storepass armena -keypass armena -alias helljniKey -keyalg RSA -v
+
+./src/package/R.java : $(shell find ./res -type f) app-config.sh src/package
+ source app-config.sh; $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.buildtools.version.current)/aapt package \
+ -v -f -m -S ./res -J ./src -M ./AndroidManifest.xml \
+ -I $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.platforms.version.current)/android.jar
+
+./obj/package/AppActivity.class : ./src/package/AppActivity.java ./src/package/R.java obj/package
+ javac -d ./obj -classpath $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.platforms.version.current)/android.jar \
+ -sourcepath ./src $<
+
+
+./result/signed.apk : ./result/unsigned.apk ./ToyKey.keystore ./result
+ jarsigner -verbose -keystore ./ToyKey.keystore -storepass armena -keypass armena -signedjar $@ $< helljniKey
+
+
+./result/unsigned.apk : ./bin/classes.dex ./result ./assets
+ rm -rvf "$@"
+ source app-config.sh; $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.buildtools.version.current)/aapt package \
+ -v -u -f -M ./AndroidManifest.xml -S ./res \
+ -I $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.platforms.version.current)/android.jar -A ./assets -F $@ ./bin
+
+
+./bin/classes.dex : ./obj/package/AppActivity.class ./obj/package/AppActivity$$1.class /bin
+ source app-config.sh; $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.buildtools.version.current)/d8 ./obj/package/*.class \
+ --lib $${ANDROID_SDK_ROOT}/$$(tr ';' '/' < android-sdk/.installed.platforms.version.current)/android.jar --output bin
FORCE:
- true
+ @true
+
+#ANDROID_HOME = /opt/android
+#ANDROID_VERSION = 33.0.2
+#PLATFORM = android-$(shell echo $(ANDROID_VERSION) | sed 's/\..*//')
+#TOOLCHAIN = /Users/amon/grive/development/Android/NativeToolchain
+#GCC = $(TOOLCHAIN)/bin/aarch64-linux-android-gcc
+#CXX_FLAGS = -march=armv8-a --sysroot=$(TOOLCHAIN)/sysroot
-### this includes explicit rules
-##include Makefile.apps
-##Makefile.apps: Makefile apps
-## @./Makefile.make.Makefile.apps.sh
-##
-##apps:
-## mkdir "$@"
-##
-##install: $(shell for APP in apps/*/; do test -d "$$APP" || continue; echo "$$APP""app.apk.install-log"; done)
-##force-install reinstall:
-## for APP in apps/*/; do rm -f "$$APP""app.apk.install-log" 2>/dev/null; done; $(MAKE) install
-##run: $(shell cd apps/; for APP in */; do test -d "$$APP" || continue; echo "run-$${APP%/}"; done)
-##
-##docker-compose-build.log: Dockerfile compose.yml
-## docker-compose down --remove-orphans --rmi all
-## BUILDKIT_PROGRESS=plain docker-compose build | tee docker-compose-build.log
-##
-##new-app: FORCE
-## ./Makefile.make.new-app.sh
-##
-##FORCE:
-## @true
+
+#all: build
+#
+#.PHONY : build
+#.PHONY : deploy
+#.PHONY : clean
+#
+#build : ./result/example.app.apk
+# mv ./result/example.app.apk app.apk
+# true
+#
+#env:
+# set > set ; env > env
+#./result/example.app.apk : ./result/signed.apk
+# $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/zipalign -v -f 4 $< $@
+# $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/apksigner sign --ks ToyKey.keystore --key-pass pass:armena --ks-pass pass:armena $@
+#
+#./result/signed.apk : ./result/unsigned.apk ./ToyKey.keystore ./result
+# jarsigner -verbose -keystore ./ToyKey.keystore -storepass armena -keypass armena -signedjar $@ $< helljniKey
+#
+#./result:
+# mkdir -p "$@"
+#
+#./result/unsigned.apk : ./bin/classes.dex ./result
+# rm -rvf "$@"
+# $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/aapt package -v -u -f -M ./AndroidManifest.xml -S ./res \
+# -I $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -A ./assets -F $@ ./bin
+#
+#./bin/classes.dex : ./obj/app/example/ExampleApp.class ./obj/app/example/ExampleApp$$1.class
+# $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/d8 ./obj/app/example/*.class --lib $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar --output bin
+#
+#./src/app/example/R.java : $(shell find ./res -type f)
+# $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/aapt package -v -f -m -S ./res -J ./src -M ./AndroidManifest.xml \
+# -I $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar
+#
+#./obj/app/example/ExampleApp.class : ./src/app/example/ExampleApp.java ./src/app/example/R.java
+# javac -d ./obj -classpath $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -sourcepath ./src $<
+#
+#./ToyKey.keystore :
+# keytool -genkeypair -validity 1000 -dname "CN=alexander,O=Android,C=JPN" -keystore $@ \
+# -storepass armena -keypass armena -alias helljniKey -keyalg RSA -v
+#
+#clean:
+# rm -f ./bin/* ./lib/arm64-v8a/* ./result/*
+