-
Notifications
You must be signed in to change notification settings - Fork 84
Description
/static
/css
/js
/templates
evolution.html
accessibilite.html
app.py Android WebView – Passerelle JavaScript + Tailwind hors‑ligne
Ce document décrit exactement comment :
-
Activer une passerelle JavaScript ⇄ Android (Kotlin)
-
Faire fonctionner Tailwind CSS totalement hors‑ligne dans WebView
1️⃣ Passerelle JavaScript ⇄ Android (JavaScriptInterface)
📁 MainActivity.kt
package com.neurallinker.app
import android.os.Bundle
import android.webkit.JavascriptInterface
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
class AndroidBridge {
@JavascriptInterface
fun showMessage(message: String) {
android.util.Log.d("JS_BRIDGE", message)
}
@JavascriptInterface
fun getDeviceType(): String {
return "ANDROID"
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val webView = findViewById<WebView>(R.id.webview)
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.webViewClient = WebViewClient()
webView.addJavascriptInterface(AndroidBridge(), "Android")
webView.loadUrl("file:///android_asset/www/index.html")
}
}
🧠 Utilisation côté JavaScript
<script> Android.showMessage("Interface IA chargée") console.log(Android.getDeviceType()) </script>2️⃣ Tailwind CSS 100% hors‑ligne (build local)
📦 Étape A – Installer Tailwind (PC)
npm install -D tailwindcss
npx tailwindcss init
📄 tailwind.config.js
module.exports = {
content: ["./index.html"],
theme: { extend: {} },
plugins: [],
}
📄 input.css
@tailwind base;
@tailwind components;
@tailwind utilities;
⚙️ Build CSS
npx tailwindcss -i ./input.css -o ./tailwind.css --minify
3️⃣ Intégration dans Android
📁 Structure assets
assets/
└── www/
├── index.html
├── tailwind.css
└── fonts/
📄 index.html (hors‑ligne)
❌ Supprimer :
<script src="https://cdn.tailwindcss.com"></script>4️⃣ Sécurité WebView (recommandé)
webView.settings.allowFileAccess = true
webView.settings.allowContentAccess = false
webView.settings.mixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW
✅ Résultat
Application 100% hors‑ligne
UI Tailwind native
Communication JavaScript ⇄ Android active
Compatible Android & PC (WebView Desktop / Tauri / Electron)
🔜 Prochaines évolutions possibles
Stockage local (SharedPreferences / SQLite)
Capteurs (accéléromètre, biométrie)
Packaging Desktop (Electron / Tauri)
IA locale (ONNX / TensorFlow Lite)
Dis‑moi la prochaine étape.org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
kotlin.code.style=official
🔑 Paramètres de signature de ton APK Release
RELEASE_STORE_FILE=../neurallinker-release-key.jks
RELEASE_STORE_PASSWORD=ton_mot_de_passe_keystore
RELEASE_KEY_ALIAS=neurallinker
RELEASE_KEY_PASSWORD=ton_mot_de_passe_cle