From 6a6c46fefd1554b609c4ca5ee798cfc7797fedcf Mon Sep 17 00:00:00 2001 From: Stefano D'Angelo Date: Tue, 23 Jan 2024 10:39:30 +0100 Subject: [PATCH] android app works at least --- templates/android-make/.Makefile.swp | Bin 0 -> 12288 bytes templates/android-make/Makefile | 17 +++++++++++------ templates/android-make/vars.mk | 2 +- templates/android/data/AndroidManifest.xml | 6 +++--- templates/android/src/MainActivity.java | 7 ++++--- templates/android/src/index.html | 9 +++++++++ templates/android/tibia-index.js | 1 + test/android-make.json | 2 +- test/keystore.jks | Bin 2592 -> 2592 bytes 9 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 templates/android-make/.Makefile.swp create mode 100644 templates/android/src/index.html diff --git a/templates/android-make/.Makefile.swp b/templates/android-make/.Makefile.swp new file mode 100644 index 0000000000000000000000000000000000000000..cc5b7cedc768f23b2b8c7e186769bb49fd615207 GIT binary patch literal 12288 zcmeI2O>7%Q6vw9^l?F&baN@)etTskjZ(5*AT_LjZI?X2j!gittO15L~IN5l;yY;T4 zgkZQKxFI;hffJk%T#AGQoH+0;PH+Q>dl3Z*Zv6MlabgqEW2Le3x7Rao-n{plH?y*` zjoCG=NH1p25xgEGguVVDzg7N`JewlK^LdNePSA7g%W|5`+HyQU6J8lkhne=65wFA! zM{E8L#wyzMc4}hf`A|(2nYg#fFK|U2m*q@9ZbM?Pmos;|6Oqo^YQ12BcJhC z@gWEZ0)l`bAP5Kof`A|(2nYg#fFK|U2m*H?0cH^L#YsYbx(C7I|NrxG4!=J@$W7>1 z=ojb)^d@v2T7#Z|($J&ODd^^DLcW6DgWiBzkOIv^r=dycuSr7wgnov;hQ5S8fj)*l zg5HMSf)=57?Si{Ans;w1AA9&d|dnA@S2>G{-U%{JTQ9(|c^;>kU_ z5jSL0`^(CjqF0pMigG!xmy}|@e{G7sNY9+1v8SFLPm6|8<4ct9nm(N+u~C*bdZuN_ zsr`l3l3IveW|-SX)ZGr1THVNkgehgw+G!hRmr5>8&68;GCbwfZ7#CkTjqRk(^SJK? zBbykraWIU99kOW~d^fY@cdRV+y3L{QNI#k&vJ5!}DdqZ9YFcP?nZHG+Qqx|q0cxq~ zbfB5+Olo>rsn*izDJmI5@c?_|55XbhTtTVT@-@(`FZJ>GqiHKm-`p|%y-esm3g=M! zHrru?sNf|GNuBFs-j>tltht4yM_`B`_MVERsQ%WSi5 z_P9X*Z=C4?fv8NH3FBb(!$J&*j7=qzk?|K40cx{a>j&l-9ySjJokWbnND6c`myo@p zROS>4t&?H4OBWdVBLmJDm7%-1( z5L+U;Lb)H^FFo5cH*IbN8)rD;p+x>Wtl0n2-7uhx`NCYE*D6XuyIcZWY1$ul8w>6;`tCVZm1N>w2wTuI7WaZF^Fi?@5?}C4GoZ!HR}` zE(l{)JP#*UI0gk@i#joCxHs^c^r6fTc#ny6D4%#KMvtw8{_(>PrGrPXEu1~kGK_j8 zgxiMMBJqBt*=Oka3xr!9Kh$)QpwO<<>D2y`Qqzl?s_9y(KSTGpmnJ0Mp26VZ17*+= z9tc5ia+qai!rf%0TrX&)D|)V6Ew9$K5>7E(=Jn;ZqQ0mV^8MqCLIZmB zzy!;x7PN(EWYnRQ)M{B%ujp&}YE3Jb@@hq?=JEw)0r!X@2Lro;wwTYY=g^xg7mMZ6 zSfen;(a}22f`NT-E(9R1;@7OYKtW_boh*HDP>W2BITD-^<2xC1eUfae@g^^sZdi6iNp{6}J8b;$2 literal 0 HcmV?d00001 diff --git a/templates/android-make/Makefile b/templates/android-make/Makefile index 0bd33b0..ba193d1 100644 --- a/templates/android-make/Makefile +++ b/templates/android-make/Makefile @@ -6,6 +6,7 @@ APKSIGNER = ${BUILD_TOOLS_DIR}/apksigner ZIPALIGN = ${BUILD_TOOLS_DIR}/zipalign AAPT = ${BUILD_TOOLS_DIR}/aapt D8 = ${BUILD_TOOLS_DIR}/d8 +ADB = ${ANDROID_SDK_DIR}/platform-tools/adb JARS := \ ${ANDROID_JAR_FILE} \ @@ -16,7 +17,7 @@ JARS := \ ${KOTLINX_COROUTINES_CORE_FILE} \ ${KOTLINX_COROUTINES_CORE_JVM_FILE} -CLASSES_PATH := $(subst /,.,$(JAVA_PACKAGE_NAME)) +CLASSES_PATH := $(subst .,/,$(JAVA_PACKAGE_NAME)) CLASSES := MainActivity @@ -29,31 +30,35 @@ endif all: build/${BUNDLE_NAME}.apk build/${BUNDLE_NAME}.apk: build/gen/${BUNDLE_NAME}.aligned.apk ${KEY_STORE} - ${APKSIGNER} sign --ks ${KEY_STORE} --ks-key-alias ${KEY_ALIAS} --ks-pass ${STORE_PASS} --key-pass ${KEY_PASS} --out $@ build/gen/${BUNDLE_NAME}.aligned.apk + ${APKSIGNER} sign --ks ${KEY_STORE} --ks-key-alias ${KEY_ALIAS} --ks-pass pass:${STORE_PASS} --key-pass pass:${KEY_PASS} --out $@ build/gen/${BUNDLE_NAME}.aligned.apk build/gen/${BUNDLE_NAME}.aligned.apk: build/gen/${BUNDLE_NAME}.unsigned.apk ${ZIPALIGN} -f -p 4 $^ $@ -build/gen/${BUNDLE_NAME}.unsigned.apk: build/apk/classes.dex src/AndroidManifest.xml | build/gen - ${AAPT} package -f -M src/AndroidManifest.xml $(foreach jar,$(JARS),-I $(jar)) -F $@ build/apk +build/gen/${BUNDLE_NAME}.unsigned.apk: build/apk/classes.dex data/AndroidManifest.xml build/assets/index.html | build/gen + ${AAPT} package -f -M data/AndroidManifest.xml -A build/assets $(foreach jar,$(JARS),-I $(jar)) -F $@ build/apk build/apk/classes.dex: build/apk/my_classes.jar cd build/apk && ${D8} --min-api ${MIN_API} ../../$^ ${JARS} && cd ../.. build/apk/my_classes.jar: $(foreach class,$(CLASSES),build/obj/$(CLASSES_PATH)/$(class).class) | build/apk + @echo ${CLASSES_PATH} ${D8} $(foreach class,$(CLASSES),'build/obj/$(CLASSES_PATH)/$(class).class') --min-api ${MIN_API} --output $@ --no-desugaring build/obj/${CLASSES_PATH}/MainActivity.class: src/MainActivity.java | build/obj ${JAVAC} -classpath "$(subst $() $(),:,$(JARS))" -d build/obj $^ -build/gen build/obj: +build/assets/index.html: src/index.html | build/assets + cp $^ $@ + +build/gen build/apk build/obj build/assets: mkdir -p $@ clean: rm -fr build install: build/${BUNDLE_NAME}.apk - [ -n "`${ADB} shell pm list packages | grep ^package:${JAVA_PACKAGE_NAME}$`" ] && ${ADB} uninstall ${JAVA_PACKAGE_NAME}; exit 0 + [ -n "`${ADB} shell pm list packages | grep ^package:${JAVA_PACKAGE_NAME}`" ] && ${ADB} uninstall ${JAVA_PACKAGE_NAME}; exit 0 ${ADB} install $^ .PHONY: all clean install diff --git a/templates/android-make/vars.mk b/templates/android-make/vars.mk index 746e222..4ca5994 100644 --- a/templates/android-make/vars.mk +++ b/templates/android-make/vars.mk @@ -7,7 +7,7 @@ STORE_PASS := {{=it.android_make.storePass}} KEY_PASS := {{=it.android_make.keyPass}} ANDROID_SDK_DIR := {{=it.android_make.sdkDir}} -BUILD_TOOLS_DIR := ${ANDROID_SDK_DIR}/build/tools/{{=it.android_make.buildToolsVersion}} +BUILD_TOOLS_DIR := ${ANDROID_SDK_DIR}/build-tools/{{=it.android_make.buildToolsVersion}} ANDROIDX_DIR := {{=it.android_make.androidxDir}} KOTLIN_DIR := {{=it.android_make.kotlinDir}} diff --git a/templates/android/data/AndroidManifest.xml b/templates/android/data/AndroidManifest.xml index 603c4d7..7884df6 100644 --- a/templates/android/data/AndroidManifest.xml +++ b/templates/android/data/AndroidManifest.xml @@ -1,5 +1,5 @@ - + {{?it.product.buses.filter(x => x.type == "audio" && x.direction == "input").length > 0}} {{?}} @@ -9,8 +9,8 @@ {{?}} - - + + diff --git a/templates/android/src/MainActivity.java b/templates/android/src/MainActivity.java index 437f522..819464a 100644 --- a/templates/android/src/MainActivity.java +++ b/templates/android/src/MainActivity.java @@ -25,9 +25,11 @@ public class MainActivity extends Activity { public native void nativeAudioStop(); public native float nativeGetParameter(int i); public native void nativeSetParameter(int i, float v); +*/ private WebView webView; +/* public class WebAppInterface { @JavascriptInterface public boolean hasAudioPermission() { @@ -71,9 +73,8 @@ public class MainActivity extends Activity { webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient()); webSettings.setDomStorageEnabled(true); - webView.addJavascriptInterface(new WebAppInterface(), "Android"); - //webView.loadUrl("file:///android_asset/index.html"); - webView.loadUrl("https://www.orastron.com/"); + //webView.addJavascriptInterface(new WebAppInterface(), "Android"); + webView.loadUrl("file:///android_asset/index.html"); } /* diff --git a/templates/android/src/index.html b/templates/android/src/index.html new file mode 100644 index 0000000..3babf36 --- /dev/null +++ b/templates/android/src/index.html @@ -0,0 +1,9 @@ + + + + {{=it.product.name}} + + + Prova + + diff --git a/templates/android/tibia-index.js b/templates/android/tibia-index.js index bf395d0..e4922c7 100644 --- a/templates/android/tibia-index.js +++ b/templates/android/tibia-index.js @@ -4,4 +4,5 @@ var sep = path.sep; module.exports = function (data, api) { api.generateFileFromTemplateFile(`data${sep}AndroidManifest.xml`, `data${sep}AndroidManifest.xml`, data); api.generateFileFromTemplateFile(`src${sep}MainActivity.java`, `src${sep}MainActivity.java`, data); + api.generateFileFromTemplateFile(`src${sep}index.html`, `src${sep}index.html`, data); }; diff --git a/test/android-make.json b/test/android-make.json index 364b5b6..8cd47ba 100644 --- a/test/android-make.json +++ b/test/android-make.json @@ -6,7 +6,7 @@ "keyPass": "android", "sdkDir": "${HOME}/Android/Sdk", "buildToolsVersion": "34.0.0", - "androidxDir": "{HOME}/Android/androidx", + "androidxDir": "${HOME}/Android/androidx", "kotlinDir": "${HOME}/Android/kotlin", "androidVersion": "34", "androidxCoreVersion": "1.10.1", diff --git a/test/keystore.jks b/test/keystore.jks index b4854b193a9608c37d45635923e00c5b8c368583..e0e59f50ccf28fec168da6a9ee7bb2d2469ce95a 100644 GIT binary patch delta 2309 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 f>{kR79{&PXvP*&wy0v6N!^YE|zI8Ny0s