forked from extern/Unexpected-Keyboard
f913051dca
* Relicense layouts under CC0 Layout definitions are licensed differently from the rest of the application source code to allow use in other projects related or unrelated to Unexpected Keyboard. Some layouts are not re-licensed and their original copyright continues to apply. The copyright notice is added at the top of the files. * Contributing: Mention layout licensing
187 lines
5.1 KiB
Groovy
187 lines
5.1 KiB
Groovy
plugins {
|
|
id 'com.android.application' version '8.1.1'
|
|
}
|
|
|
|
android {
|
|
namespace 'juloo.keyboard2'
|
|
compileSdk 33
|
|
|
|
defaultConfig {
|
|
applicationId "juloo.keyboard2"
|
|
minSdk 11
|
|
targetSdkVersion 33
|
|
versionCode 38
|
|
versionName "1.26.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
|
|
}
|
|
|
|
lintOptions {
|
|
// Translation are already checked by 'syncTranslations'
|
|
disable 'MissingTranslation'
|
|
}
|
|
}
|
|
|
|
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'
|
|
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")
|
|
}
|
|
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"
|
|
}
|
|
}
|