mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2024-11-21 14:53:11 +01:00
997b7be4c0
Replace the short video with an animated vector image that shows the swipe gesture. This is much lighter and reliable than the mp4 video, which failed to play on many devices. Source for the image of the key is in inkscape SVG format in srcs/res and is converted to an android drawable when needed. The swipe animation is hand-written.
200 lines
5.4 KiB
Groovy
200 lines
5.4 KiB
Groovy
plugins {
|
|
id 'com.android.application' version '8.1.1'
|
|
}
|
|
|
|
dependencies {
|
|
testImplementation "junit:junit:4.13.2"
|
|
}
|
|
|
|
android {
|
|
namespace 'juloo.keyboard2'
|
|
compileSdk 34
|
|
|
|
defaultConfig {
|
|
applicationId "juloo.keyboard2"
|
|
minSdk 11
|
|
targetSdkVersion 35
|
|
versionCode 42
|
|
versionName "1.29.1"
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
manifest.srcFile 'AndroidManifest.xml'
|
|
java.srcDirs = ['srcs/juloo.keyboard2']
|
|
res.srcDirs = ['res', 'build/generated-resources']
|
|
assets.srcDirs = ['assets']
|
|
}
|
|
|
|
test {
|
|
java.srcDirs = ['test']
|
|
}
|
|
}
|
|
|
|
signingConfigs {
|
|
// Debug builds will always be signed. If no environment variables are set, a default
|
|
// keystore will be initialized by the task initDebugKeystore and used. This keystore
|
|
// can be uploaded to GitHub secrets by following instructions in CONTRIBUTING.md
|
|
// in order to always receive correctly signed debug APKs from the CI.
|
|
debug {
|
|
storeFile(System.env.DEBUG_KEYSTORE ? file(System.env.DEBUG_KEYSTORE) : file("debug.keystore"))
|
|
storePassword(System.env.DEBUG_KEYSTORE_PASSWORD ? "$System.env.DEBUG_KEYSTORE_PASSWORD" : "debug0")
|
|
keyAlias(System.env.DEBUG_KEY_ALIAS ? "$System.env.DEBUG_KEY_ALIAS" : "debug")
|
|
keyPassword(System.env.DEBUG_KEY_PASSWORD ? "$System.env.DEBUG_KEY_PASSWORD" : "debug0")
|
|
}
|
|
|
|
release {
|
|
if (System.env.RELEASE_KEYSTORE) {
|
|
storeFile file(System.env.RELEASE_KEYSTORE)
|
|
storePassword "$System.env.RELEASE_KEYSTORE_PASSWORD"
|
|
keyAlias "$System.env.RELEASE_KEY_ALIAS"
|
|
keyPassword "$System.env.RELEASE_KEY_PASSWORD"
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled true
|
|
shrinkResources true
|
|
debuggable false
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
|
|
resValue "string", "app_name", "@string/app_name_release"
|
|
signingConfig signingConfigs.release
|
|
}
|
|
|
|
debug {
|
|
minifyEnabled false
|
|
shrinkResources false
|
|
debuggable true
|
|
applicationIdSuffix ".debug"
|
|
resValue "string", "app_name", "@string/app_name_debug"
|
|
resValue "bool", "debug_logs", "true"
|
|
signingConfig signingConfigs.debug
|
|
}
|
|
}
|
|
|
|
// Name outputs after the application ID.
|
|
android.applicationVariants.all { variant ->
|
|
variant.outputs.all {
|
|
outputFileName = "${applicationId}.apk"
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_7
|
|
targetCompatibility JavaVersion.VERSION_1_7
|
|
}
|
|
|
|
lintOptions {
|
|
// Translation are already checked by 'syncTranslations'
|
|
disable 'MissingTranslation'
|
|
}
|
|
}
|
|
|
|
tasks.register('buildKeyboardFont') {
|
|
println "\nBuilding assets/special_font.ttf"
|
|
mkdir "$buildDir"
|
|
exec {
|
|
workingDir "$projectDir/srcs/special_font"
|
|
def svgFiles = workingDir.listFiles().findAll {
|
|
it.isFile() && it.name.endsWith(".svg")
|
|
}
|
|
commandLine("fontforge", "-lang=ff", "-script", "build.pe", "$buildDir/special_font.ttf", *svgFiles)
|
|
}
|
|
copy {
|
|
from "$buildDir/special_font.ttf"
|
|
into "assets"
|
|
}
|
|
}
|
|
|
|
tasks.register('genEmojis') {
|
|
println "\nGenerating res/raw/emojis.txt"
|
|
exec {
|
|
workingDir = projectDir
|
|
commandLine "python", "gen_emoji.py"
|
|
}
|
|
}
|
|
|
|
tasks.withType(Test).configureEach {
|
|
dependsOn 'genLayoutsList'
|
|
dependsOn 'checkKeyboardLayouts'
|
|
dependsOn 'syncTranslations'
|
|
dependsOn 'compileComposeSequences'
|
|
}
|
|
|
|
tasks.register('genLayoutsList') {
|
|
println "\nGenerating res/values/layouts.xml"
|
|
exec {
|
|
workingDir = projectDir
|
|
commandLine "python", "gen_layouts.py"
|
|
}
|
|
}
|
|
|
|
tasks.register('checkKeyboardLayouts') {
|
|
println "\nChecking layouts"
|
|
exec {
|
|
def layouts = new File(projectDir, "srcs/layouts").listFiles().findAll {
|
|
it.name.endsWith(".xml")
|
|
}
|
|
workingDir = projectDir
|
|
commandLine("python", "check_layout.py", *layouts)
|
|
standardOutput = new FileOutputStream("${projectDir}/check_layout.output")
|
|
}
|
|
}
|
|
|
|
tasks.register('syncTranslations') {
|
|
println "\nUpdating translations"
|
|
exec {
|
|
workingDir = projectDir
|
|
commandLine "python", "sync_translations.py"
|
|
}
|
|
}
|
|
|
|
tasks.register('compileComposeSequences') {
|
|
def out = "srcs/juloo.keyboard2/ComposeKeyData.java"
|
|
println "\nGenerating ${out}"
|
|
exec {
|
|
def sequences = new File(projectDir, "srcs/compose").listFiles().findAll {
|
|
!it.name.endsWith(".py") && !it.name.endsWith(".md")
|
|
}
|
|
workingDir = projectDir
|
|
commandLine("python", "srcs/compose/compile.py", *sequences)
|
|
standardOutput = new FileOutputStream("${projectDir}/${out}")
|
|
}
|
|
}
|
|
|
|
tasks.named("preBuild") {
|
|
dependsOn += "initDebugKeystore"
|
|
dependsOn += "copyRawQwertyUS"
|
|
dependsOn += "copyLayoutDefinitions"
|
|
}
|
|
|
|
tasks.register('initDebugKeystore') {
|
|
if (!file("debug.keystore").exists()) {
|
|
println "Initializing default debug keystore"
|
|
exec {
|
|
// A shell script might be needed if this line requires input from the user
|
|
commandLine "keytool", "-genkeypair", "-dname", "cn=d, ou=e, o=b, c=ug", "-alias", "debug", "-keypass", "debug0", "-keystore", "debug.keystore", "-keyalg", "rsa", "-storepass", "debug0", "-validity", "10000"
|
|
}
|
|
}
|
|
}
|
|
|
|
// latn_qwerty_us is used as a raw resource by the custom layout option.
|
|
tasks.register('copyRawQwertyUS')
|
|
{
|
|
copy {
|
|
from "srcs/layouts/latn_qwerty_us.xml"
|
|
into "build/generated-resources/raw"
|
|
}
|
|
}
|
|
|
|
tasks.register('copyLayoutDefinitions')
|
|
{
|
|
copy {
|
|
from "srcs/layouts"
|
|
include "*.xml"
|
|
into "build/generated-resources/xml"
|
|
}
|
|
}
|