Scaffold tsjetpiti: on-device Qwen3.5-2B chat app

Android app that runs an uncensored Qwen3.5-2B GGUF fully on-device via an
embedded llama.cpp (pinned b10333, built through the NDK) behind a barebones
WebView chat UI. Model is downloaded on first launch. "new tsjet" wipes the
conversation and resets the KV cache.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-09 20:24:14 +02:00
co-authored by Claude Opus 4.8
commit ac8490b452
20 changed files with 1416 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "monster.autisme.tsjetpiti"
compileSdk = 35
// NDK is needed to compile the llama.cpp JNI bridge. Android Studio will
// offer to install this exact version; adjust if you have a different one.
ndkVersion = "27.2.12479018"
defaultConfig {
applicationId = "monster.autisme.tsjetpiti"
minSdk = 26
targetSdk = 35
versionCode = 1
versionName = "0.1.0"
// On-device LLM => 64-bit ARM only. Keeps the APK from ballooning.
ndk {
abiFilters += "arm64-v8a"
}
externalNativeBuild {
cmake {
arguments += "-DANDROID_STL=c++_shared"
cppFlags += "-std=c++17"
}
}
}
externalNativeBuild {
cmake {
path = file("src/main/cpp/CMakeLists.txt")
version = "3.22.1"
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
// Intentionally dependency-free: framework WebView + org.json + native lib.
}