fix scripts and Makefile

This commit is contained in:
Alexander Mahr 2024-12-25 15:54:33 +01:00
parent 27f4077ac8
commit 8d4fa5fa11
4 changed files with 146 additions and 105 deletions

View file

@ -0,0 +1,29 @@
#!/bin/bash
test -f app-config.sh && {
source app-config.sh
}
cat > "AndroidManifest.xml" << ANDROIDMANIFEST
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="$APP_PACKAGE"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="$APP_VERSION_SDK_MIN"
android:targetSdkVersion="$APP_VERSION_SDK_TARGET"/>
$(sed 's/^/ /' <<< "$APP_PERMISSIONS")
<application android:label="$APP_NAME" android:icon="@drawable/ic_launcher">
<activity android:name="$APP_PACKAGE.AppActivity"
android:exported="true"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="$APP_NAME">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
ANDROIDMANIFEST

View file

@ -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

View file

@ -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/<uses-permission android:name="an/g;s/" /"\/>\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/<uses-permission android:name="an/g;s/" /"\/>\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
#<?xml version="1.0" encoding="utf-8"?>
#<manifest xmlns:android="http://schemas.android.com/apk/res/android"
# package="$APP_PACKAGE"
# android:versionCode="1"
# android:versionName="1.0">
# <uses-sdk android:minSdkVersion="$APP_VERSION_SDK_MIN"
# android:targetSdkVersion="$APP_VERSION_SDK_TARGET"/>
#$(sed 's/^/ /' <<< "$APP_PERMISSIONS")
# <application android:label="$APP_NAME" android:icon="@drawable/ic_launcher">
# <activity android:name="$APP_PACKAGE.AppActivity"
# android:exported="true"
# android:configChanges="orientation|screenSize|keyboardHidden"
# android:label="$APP_NAME">
# <intent-filter>
# <action android:name="android.intent.action.MAIN" />
# <category android:name="android.intent.category.LAUNCHER" />
# </intent-filter>
# </activity>
# </application>
#</manifest>
#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
#
#
#

View file

@ -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/*