1
0
Fork 0
tt9/build.gradle
Clam 0ec529a6d3 Added French support and many other changes:
* Updated gradle
* Gradle build script changed to prompt for password in UI
* Initial French support NOTE: Missing UI resources.
* IntelliJ IDEA: Optimize Imports
* Fixed dictionary loading UI oddity when loading multiple dicts
2015-08-08 02:37:34 +10:00

191 lines
4.8 KiB
Groovy

import groovy.swing.SwingBuilder
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
apply plugin: 'android'
ext {
keyStorePass = ''
keyPass = ''
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
def execThing ( String cmdStr ) {
def stdout = new ByteArrayOutputStream()
String prefix = System.getenv("GITCMDPREFIX")
if (prefix != null) {
String cmd = prefix + cmdStr
exec {
commandLine cmd.tokenize()
standardOutput = stdout
}
} else {
exec {
commandLine cmdStr.tokenize()
standardOutput = stdout
}
}
return stdout
}
def computeVersionName = { ->
String ver = "git-source"
try {
if (execThing(" git status -z").toString().trim().equals("")) {
return "git-" + execThing(' git log -1 --format="%h"').toString().trim()
} else {
return ver
}
} catch (all) {
ant.echo("Cannot run git (not in path?), using default versioning")
}
return ver
}
def getProps() {
Properties props = new Properties()
File f = new File("t9build.properties")
if (!f.exists()) {
f.createNewFile()
}
props.load(new FileInputStream(f))
return props
}
def saveProps(Properties props) {
props.store(new FileOutputStream(new File("t9build.properties")), null)
}
// -PincrementBuildNumber assembleRelease
def computeVersionNumber = { ->
Properties props = getProps()
int verNum = Integer.valueOf(props.getProperty("verNum", "0"))
if (project.hasProperty('incrementBuildNumber')) {
verNum++
props.setProperty("verNum", String.valueOf(verNum))
saveProps(props)
}
return verNum
}
android {
compileSdkVersion 8
buildToolsVersion "19.1"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
defaultConfig {
versionCode computeVersionNumber()
versionName computeVersionName()
}
// http://stackoverflow.com/a/19130098
signingConfigs {
release {
//storeFile file(System.getenv("KEYSTORE"))
//storePassword project.ext.keyStorePass
//keyAlias System.getenv("KEYALIAS")
//keyPassword project.ext.keyPass
}
}
buildTypes {
release {
signingConfig android.signingConfigs.release
}
}
}
task getDictSizes {
inputs.dir fileTree(dir:'assets', excludes:['dict.properties'])
outputs.file "t9build.properties"
doLast {
ant.echo("Calculating dict size...")
inputs.getFiles().each {File file ->
ant.echo("dict: "+ file.name)
ant.propertyfile(file:"assets/dict.properties") {
entry(key: "size."+ file.name, value: file.length())
}
}
}
}
task readPasswordFromInput << {
// https://www.timroes.de/2014/01/19/using-password-prompts-with-gradle-build-files/
new SwingBuilder().edt {
dialog(modal: true, // Otherwise the build will continue running before you closed the dialog
title: 'KeyStore password', // Dialog title
alwaysOnTop: true, // pretty much what the name says
resizable: false, // Don't allow the user to resize the dialog
locationRelativeTo: null, // Place dialog in center of the screen
pack: true, // We need to pack the dialog (so it will take the size of it's children
show: true // Let's show it
) {
vbox { // Put everything below each other
label(text: "Please enter key passphrase:")
input = passwordField()
button(defaultButton: true, text: 'OK', actionPerformed: {
android.signingConfigs.release.storePassword = input.password; // Set pass variable to value of input field
dispose(); // Close dialog
})
}
}
}
new SwingBuilder().edt {
dialog(modal: true, title: 'Key password', alwaysOnTop: true, resizable: false,
locationRelativeTo: null, pack: true, show: true // Let's show it
) {
vbox { // Put everything below each other
label(text: "Please enter key passphrase:")
input = passwordField()
button(defaultButton: true, text: 'OK', actionPerformed: {
android.signingConfigs.release.keyPassword = input.password; dispose();
})
}
}
}
}
//http://stackoverflow.com/a/17484331
tasks.whenTaskAdded { task ->
if (task.name == 'packageRelease') {
task.dependsOn readPasswordFromInput
}
}
preBuild.dependsOn getDictSizes
preBuild.mustRunAfter getDictSizes