android app works at least

This commit is contained in:
Stefano D'Angelo 2024-01-23 10:39:30 +01:00
parent 67137cd95f
commit 6a6c46fefd
9 changed files with 30 additions and 14 deletions

Binary file not shown.

View File

@ -6,6 +6,7 @@ APKSIGNER = ${BUILD_TOOLS_DIR}/apksigner
ZIPALIGN = ${BUILD_TOOLS_DIR}/zipalign ZIPALIGN = ${BUILD_TOOLS_DIR}/zipalign
AAPT = ${BUILD_TOOLS_DIR}/aapt AAPT = ${BUILD_TOOLS_DIR}/aapt
D8 = ${BUILD_TOOLS_DIR}/d8 D8 = ${BUILD_TOOLS_DIR}/d8
ADB = ${ANDROID_SDK_DIR}/platform-tools/adb
JARS := \ JARS := \
${ANDROID_JAR_FILE} \ ${ANDROID_JAR_FILE} \
@ -16,7 +17,7 @@ JARS := \
${KOTLINX_COROUTINES_CORE_FILE} \ ${KOTLINX_COROUTINES_CORE_FILE} \
${KOTLINX_COROUTINES_CORE_JVM_FILE} ${KOTLINX_COROUTINES_CORE_JVM_FILE}
CLASSES_PATH := $(subst /,.,$(JAVA_PACKAGE_NAME)) CLASSES_PATH := $(subst .,/,$(JAVA_PACKAGE_NAME))
CLASSES := MainActivity CLASSES := MainActivity
@ -29,31 +30,35 @@ endif
all: build/${BUNDLE_NAME}.apk all: build/${BUNDLE_NAME}.apk
build/${BUNDLE_NAME}.apk: build/gen/${BUNDLE_NAME}.aligned.apk ${KEY_STORE} 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 build/gen/${BUNDLE_NAME}.aligned.apk: build/gen/${BUNDLE_NAME}.unsigned.apk
${ZIPALIGN} -f -p 4 $^ $@ ${ZIPALIGN} -f -p 4 $^ $@
build/gen/${BUNDLE_NAME}.unsigned.apk: build/apk/classes.dex src/AndroidManifest.xml | build/gen build/gen/${BUNDLE_NAME}.unsigned.apk: build/apk/classes.dex data/AndroidManifest.xml build/assets/index.html | build/gen
${AAPT} package -f -M src/AndroidManifest.xml $(foreach jar,$(JARS),-I $(jar)) -F $@ build/apk ${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 build/apk/classes.dex: build/apk/my_classes.jar
cd build/apk && ${D8} --min-api ${MIN_API} ../../$^ ${JARS} && cd ../.. 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 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 ${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 build/obj/${CLASSES_PATH}/MainActivity.class: src/MainActivity.java | build/obj
${JAVAC} -classpath "$(subst $() $(),:,$(JARS))" -d 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 $@ mkdir -p $@
clean: clean:
rm -fr build rm -fr build
install: build/${BUNDLE_NAME}.apk 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 $^ ${ADB} install $^
.PHONY: all clean install .PHONY: all clean install

View File

@ -7,7 +7,7 @@ STORE_PASS := {{=it.android_make.storePass}}
KEY_PASS := {{=it.android_make.keyPass}} KEY_PASS := {{=it.android_make.keyPass}}
ANDROID_SDK_DIR := {{=it.android_make.sdkDir}} 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}} ANDROIDX_DIR := {{=it.android_make.androidxDir}}
KOTLIN_DIR := {{=it.android_make.kotlinDir}} KOTLIN_DIR := {{=it.android_make.kotlinDir}}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.orastron.@NAME@"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="{{=it.android.javaPackageName}}">
{{?it.product.buses.filter(x => x.type == "audio" && x.direction == "input").length > 0}} {{?it.product.buses.filter(x => x.type == "audio" && x.direction == "input").length > 0}}
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
{{?}} {{?}}
@ -9,8 +9,8 @@
<uses-sdk android:minSdkVersion="26" /> <!-- for androidx core and AAudio --> <uses-sdk android:minSdkVersion="26" /> <!-- for androidx core and AAudio -->
{{?}} {{?}}
<uses-sdk android:targetSdkVersion="34" /> <uses-sdk android:targetSdkVersion="34" />
<application android:label="@NAME@"> <application android:label="{{=it.product.bundleName}}">
<activity android:name=".MainActivity" android:label="@NAME@" android:exported="true"> <activity android:name=".MainActivity" android:label="{{=it.product.bundleName}}" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />

View File

@ -25,9 +25,11 @@ public class MainActivity extends Activity {
public native void nativeAudioStop(); public native void nativeAudioStop();
public native float nativeGetParameter(int i); public native float nativeGetParameter(int i);
public native void nativeSetParameter(int i, float v); public native void nativeSetParameter(int i, float v);
*/
private WebView webView; private WebView webView;
/*
public class WebAppInterface { public class WebAppInterface {
@JavascriptInterface @JavascriptInterface
public boolean hasAudioPermission() { public boolean hasAudioPermission() {
@ -71,9 +73,8 @@ public class MainActivity extends Activity {
webView.setWebChromeClient(new WebChromeClient()); webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient()); webView.setWebViewClient(new WebViewClient());
webSettings.setDomStorageEnabled(true); webSettings.setDomStorageEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(), "Android"); //webView.addJavascriptInterface(new WebAppInterface(), "Android");
//webView.loadUrl("file:///android_asset/index.html"); webView.loadUrl("file:///android_asset/index.html");
webView.loadUrl("https://www.orastron.com/");
} }
/* /*

View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<title>{{=it.product.name}}</title>
</head>
<body>
Prova
</body>
</html>

View File

@ -4,4 +4,5 @@ var sep = path.sep;
module.exports = function (data, api) { module.exports = function (data, api) {
api.generateFileFromTemplateFile(`data${sep}AndroidManifest.xml`, `data${sep}AndroidManifest.xml`, data); 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}MainActivity.java`, `src${sep}MainActivity.java`, data);
api.generateFileFromTemplateFile(`src${sep}index.html`, `src${sep}index.html`, data);
}; };

View File

@ -6,7 +6,7 @@
"keyPass": "android", "keyPass": "android",
"sdkDir": "${HOME}/Android/Sdk", "sdkDir": "${HOME}/Android/Sdk",
"buildToolsVersion": "34.0.0", "buildToolsVersion": "34.0.0",
"androidxDir": "{HOME}/Android/androidx", "androidxDir": "${HOME}/Android/androidx",
"kotlinDir": "${HOME}/Android/kotlin", "kotlinDir": "${HOME}/Android/kotlin",
"androidVersion": "34", "androidVersion": "34",
"androidxCoreVersion": "1.10.1", "androidxCoreVersion": "1.10.1",

Binary file not shown.