forked from extern/Unexpected-Keyboard
ad7314a016
This separates the layout definitions from the special layouts (bottom_row, greekmath) and other unrelated files (method, settings). This is also a more intuitive location for layouts and make the resource directory easier to navigate. Under the hood, layouts are copied back into build/generated-resources/xml.
168 lines
4.5 KiB
Groovy
168 lines
4.5 KiB
Groovy
plugins {
|
|
id 'com.android.application' version '8.1.1'
|
|
}
|
|
|
|
android {
|
|
namespace 'juloo.keyboard2'
|
|
compileSdk 33
|
|
|
|
defaultConfig {
|
|
applicationId "juloo.keyboard2"
|
|
minSdk 4
|
|
targetSdkVersion 33
|
|
versionCode 37
|
|
versionName "1.25.0"
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
manifest.srcFile 'AndroidManifest.xml'
|
|
java.srcDirs = ['srcs']
|
|
res.srcDirs = ['res', 'build/generated-resources']
|
|
assets.srcDirs = ['assets']
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
|
|
}
|
|
|
|
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.withType(Test).configureEach {
|
|
dependsOn 'genLayoutsList'
|
|
dependsOn 'checkKeyboardLayouts'
|
|
dependsOn 'syncTranslations'
|
|
}
|
|
|
|
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.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"
|
|
into "build/generated-resources/xml"
|
|
}
|
|
}
|