mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-09 05:24:44 +01:00
935932f440
Add BuildConfig boolean that's true when a gradle property is passed in from the fdroid metadata/build file. Test when putting together upgrade state and omit app info when it's true, same as if from Play store.
247 lines
7.7 KiB
Groovy
247 lines
7.7 KiB
Groovy
def INITIAL_CLIENT_VERS = 8
|
|
def VERSION_CODE_BASE = 114
|
|
def VERSION_NAME = '4.4.118'
|
|
def VARIANTS = [ "xw4", "xw4d" ]
|
|
def BUILDS = [ "Debug", "Release" ]
|
|
boolean forFDroid = hasProperty('forFDroid')
|
|
|
|
// Get the git revision we're using. Since fdroid modifies files as
|
|
// part of its build process -dirty will always be added, confusing
|
|
// users. So add that for the non-fdroid case.
|
|
def GITREV = "git describe --tags"
|
|
if (! forFDroid) {
|
|
GITREV += " --dirty"
|
|
}
|
|
GITREV = GITREV.execute().text.trim()
|
|
|
|
apply plugin: 'com.android.application'
|
|
|
|
android {
|
|
buildToolsVersion '23.0.3'
|
|
defaultConfig {
|
|
minSdkVersion 7
|
|
targetSdkVersion 23
|
|
versionCode VERSION_CODE_BASE
|
|
versionName VERSION_NAME
|
|
}
|
|
|
|
// Rename all output artifacts to include version information
|
|
applicationVariants.all { variant ->
|
|
// renameArtifact(variant)
|
|
// variant.buildConfigField "String", "FIELD_NAME", "\"my String\""
|
|
def GCM_SENDER_ID = System.getenv("GCM_SENDER_ID")
|
|
variant.buildConfigField "String", "SENDER_ID", "\"$GCM_SENDER_ID\""
|
|
def CRITTERCISM_APP_ID = System.getenv("CRITTERCISM_APP_ID")
|
|
variant.buildConfigField "String", "CRITTERCISM_APP_ID", "\"$CRITTERCISM_APP_ID\""
|
|
|
|
resValue "string", "git_rev", "$GITREV"
|
|
variant.buildConfigField "String", "GIT_REV", "\"$GITREV\""
|
|
|
|
// def stamp = Long.valueOf('date +\'%s\''.execute().text.trim());
|
|
def stamp = Math.round(System.currentTimeMillis() / 1000)
|
|
variant.buildConfigField "long", "BUILD_STAMP", "$stamp"
|
|
|
|
// FIX ME
|
|
variant.buildConfigField "String", "STRINGS_HASH", "\"00000\""
|
|
|
|
def senderID = System.getenv("GCM_SENDER_ID")
|
|
variant.buildConfigField "String", "GCM_SENDER_ID", "\"$senderID\""
|
|
|
|
variant.buildConfigField "short", "CLIENT_VERS_RELAY", "$INITIAL_CLIENT_VERS"
|
|
|
|
variant.buildConfigField "boolean", "FOR_FDROID", "$forFDroid"
|
|
}
|
|
|
|
flavorDimensions "variant"//, "abi"
|
|
productFlavors {
|
|
xw4 {
|
|
dimension "variant"
|
|
applicationId "org.eehouse.android.xw4"
|
|
manifestPlaceholders = [ APP_ID: applicationId ]
|
|
resValue "string", "app_name", "CrossWords"
|
|
resValue "string", "nbs_port", "3344"
|
|
resValue "string", "invite_prefix", "/and/"
|
|
buildConfigField "boolean", "WIDIR_ENABLED", "false"
|
|
}
|
|
xw4d {
|
|
dimension "variant"
|
|
applicationId "org.eehouse.android.xw4dbg"
|
|
manifestPlaceholders = [ APP_ID: applicationId ]
|
|
resValue "string", "app_name", "CrossDbg"
|
|
resValue "string", "nbs_port", "3345"
|
|
resValue "string", "invite_prefix", "/anddbg/"
|
|
buildConfigField "boolean", "WIDIR_ENABLED", "true"
|
|
}
|
|
|
|
// WARNING: "all" breaks things. Seems to be a keyword. Need
|
|
// to figure out how to express include-all-abis
|
|
// all {
|
|
// dimension "abi"
|
|
// versionCode 0 + VERSION_CODE_BASE
|
|
// }
|
|
// armeabi {
|
|
// dimension "abi"
|
|
// versionCode 1 + VERSION_CODE_BASE
|
|
// }
|
|
// x86 {
|
|
// dimension "abi"
|
|
// versionCode 2 + VERSION_CODE_BASE
|
|
// }
|
|
// armeabiv7a {
|
|
// dimension "abi"
|
|
// versionCode 3 + VERSION_CODE_BASE
|
|
// }
|
|
}
|
|
|
|
signingConfigs {
|
|
debug {
|
|
def path = System.getenv("DEBUG_KEYSTORE_PATH")
|
|
if (! path) {
|
|
path = "./debug.keystore"
|
|
}
|
|
storeFile file(path)
|
|
keyAlias "androiddebugkey"
|
|
storePassword "android"
|
|
keyPassword "android"
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
debuggable false
|
|
minifyEnabled false // PENDING
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
}
|
|
debug {
|
|
debuggable true
|
|
// This doesn't work on marshmallow: duplicate permission error
|
|
// applicationIdSuffix ".debug"
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
// Use symlinks instead of setting non-conventional
|
|
// directories here. AS doesn't respect what's set here: it'll
|
|
// compile, but post-install app launch and source-level
|
|
// debugging don't work.
|
|
xw4 {
|
|
release {
|
|
jniLibs.srcDir "../libs-release-xw4"
|
|
}
|
|
debug {
|
|
jniLibs.srcDir "../libs-debug-xw4"
|
|
}
|
|
}
|
|
xw4d {
|
|
release {
|
|
jniLibs.srcDir "../libs-release-xw4d"
|
|
}
|
|
debug {
|
|
jniLibs.srcDir "../libs-debug-xw4d"
|
|
}
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
abortOnError false
|
|
}
|
|
|
|
applicationVariants.all { variant ->
|
|
variant.outputs.each { output ->
|
|
def newName = output.outputFile.name
|
|
newName = newName.replace(".apk","-${GITREV}.apk")
|
|
newName = newName.replace("app-","")
|
|
output.outputFile = new File(output.outputFile.parent, newName)
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// Look into replacing this with a fetch too PENDING
|
|
compile files('../libs/gcm.jar')
|
|
|
|
compile 'com.android.support:support-v4:23.4.0'
|
|
|
|
xw4dCompile 'com.crittercism:crittercism-android-agent:+'
|
|
}
|
|
|
|
task mkImages(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/mkimages.sh'
|
|
}
|
|
|
|
task copyStrings(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/copy-strings.py'
|
|
}
|
|
|
|
task ndkSetup(type: Exec) {
|
|
workingDir '../'
|
|
commandLine "./scripts/ndksetup.sh", "--with-clang"
|
|
}
|
|
|
|
task myPreBuild(dependsOn: ['ndkSetup', 'mkImages', 'copyStrings', 'mkXml']) {
|
|
}
|
|
preBuild.dependsOn myPreBuild
|
|
|
|
task mkXml(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/mk_xml.py', '-o',
|
|
"app/src/main/java/org/eehouse/android/xw4/loc/LocIDsData.java",
|
|
'-t', "debug"
|
|
}
|
|
|
|
afterEvaluate {
|
|
VARIANTS.each { VARIANT ->
|
|
String variantCaps = VARIANT.capitalize()
|
|
BUILDS.each { BUILD ->
|
|
String nameLC = BUILD.toLowerCase()
|
|
String lib = "libs-${nameLC}-${VARIANT}"
|
|
String ndkBuildTask = "ndkBuild${variantCaps}${BUILD}"
|
|
task "$ndkBuildTask"(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/ndkbuild.sh', '-j3',
|
|
"BUILD_TARGET=${nameLC}", "INITIAL_CLIENT_VERS=$INITIAL_CLIENT_VERS",
|
|
"VARIANT=$VARIANT", "NDK_LIBS_OUT=${lib}", "NDK_OUT=./obj-${nameLC}-${VARIANT}"
|
|
}
|
|
|
|
String compileTask = "compile${variantCaps}${BUILD}Ndk"
|
|
tasks.getByName(compileTask).dependsOn ndkBuildTask
|
|
}
|
|
}
|
|
|
|
String copyStringsTask = "copyStringsXw4D"
|
|
task "$copyStringsTask"(type: Exec) {
|
|
workingDir './'
|
|
environment.put('APPNAME', 'CrossDbg')
|
|
commandLine 'make', '-f', '../scripts/Variant.mk',
|
|
"src/xw4d/res/values/strings.xml"
|
|
}
|
|
preBuild.dependsOn copyStringsTask
|
|
}
|
|
|
|
clean.dependsOn 'cleanNDK'
|
|
task cleanNDK(type: Exec) {
|
|
ArrayList<String> lst = new ArrayList<String>(["rm", "-rf"]);
|
|
BUILDS.each { BUILD ->
|
|
String buildLC = BUILD.toLowerCase()
|
|
VARIANTS.each { VARIANT ->
|
|
lst.add("libs-${buildLC}-${VARIANT}")
|
|
lst.add("obj-${buildLC}-${VARIANT}")
|
|
}
|
|
}
|
|
|
|
workingDir '../'
|
|
commandLine lst
|
|
}
|
|
|
|
task makeBuildAssets() {
|
|
def assetsDir = android.sourceSets.main.assets.srcDirs.toArray()[0]
|
|
String path = new File(assetsDir, 'build-info.txt').getAbsolutePath()
|
|
File file = new File(path);
|
|
file.write("git: ${GITREV}\n");
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
build.dependsOn(makeBuildAssets)
|
|
}
|