mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-08-15 15:32:46 +02:00
* Add AndroidX WindowManager unfortunately, this seems to be the only way to get fold state, native Android APIs are internal. To add this, we need to update some dependencies, raise java version and raise compile SDK. * adds separate layouts and separate layout settings for folded and unfolded state of the device. The affected settings are: + the margin bottom settings + the horizontal margin settings + the keyboard height settings * Update shell.nix
198 lines
5.3 KiB
Groovy
198 lines
5.3 KiB
Groovy
plugins {
|
|
id 'com.android.application' version '8.6.0'
|
|
}
|
|
|
|
dependencies {
|
|
implementation "androidx.window:window-java:1.3.0"
|
|
implementation "androidx.core:core:1.16.0"
|
|
testImplementation "junit:junit:4.13.2"
|
|
}
|
|
|
|
android {
|
|
namespace 'juloo.keyboard2'
|
|
compileSdk 35
|
|
|
|
defaultConfig {
|
|
applicationId "juloo.keyboard2"
|
|
minSdk 21
|
|
targetSdkVersion 35
|
|
versionCode 48
|
|
versionName "1.31.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_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
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 {
|
|
workingDir = projectDir
|
|
commandLine("python", "check_layout.py")
|
|
}
|
|
}
|
|
|
|
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"
|
|
}
|
|
}
|