mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-09 05:24:44 +01:00
d257369639
I want to be able to invite one app to the other's games to better test relay. Since I'm the only one using the Dbg variant should be no impact.
311 lines
10 KiB
Groovy
311 lines
10 KiB
Groovy
def INITIAL_CLIENT_VERS = 8
|
|
def VERSION_CODE_BASE = 136
|
|
def VERSION_NAME = '4.4.140'
|
|
def FABRIC_API_KEY = System.getenv("FABRIC_API_KEY")
|
|
def GCM_SENDER_ID = System.getenv("GCM_SENDER_ID")
|
|
def BUILD_INFO_NAME = "build-info.txt"
|
|
|
|
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'
|
|
|
|
|
|
if ( FABRIC_API_KEY && hasProperty('useCrashlytics') ) {
|
|
apply plugin: 'io.fabric'
|
|
}
|
|
repositories {
|
|
google()
|
|
maven { url 'https://maven.fabric.io/public' }
|
|
}
|
|
|
|
android {
|
|
// Specify buildToolsVersion so gradle will inform when the
|
|
// default changes and .travis.yml can be kept in sync
|
|
buildToolsVersion '27.0.3'
|
|
defaultConfig {
|
|
minSdkVersion 14
|
|
targetSdkVersion 26
|
|
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\""
|
|
variant.buildConfigField "String", "FABRIC_API_KEY", "\"$FABRIC_API_KEY\""
|
|
|
|
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\""
|
|
|
|
variant.buildConfigField "short", "CLIENT_VERS_RELAY", "$INITIAL_CLIENT_VERS"
|
|
|
|
variant.buildConfigField "boolean", "FOR_FDROID", "$forFDroid"
|
|
}
|
|
|
|
flavorDimensions "variant"//, "abi"
|
|
productFlavors {
|
|
all {
|
|
buildConfigField "String", "BUILD_INFO_NAME", "\"${BUILD_INFO_NAME}\""
|
|
resValue "string", "invite_prefix", "/and/"
|
|
}
|
|
|
|
xw4 {
|
|
dimension "variant"
|
|
applicationId "org.eehouse.android.xw4"
|
|
manifestPlaceholders = [ APP_ID: applicationId ]
|
|
resValue "string", "app_name", "CrossWords"
|
|
resValue "string", "nbs_port", "3344"
|
|
buildConfigField "boolean", "WIDIR_ENABLED", "false"
|
|
buildConfigField "boolean", "RELAYINVITE_SUPPORTED", "false"
|
|
|
|
buildConfigField "String", "GCM_SENDER_ID", "\"$GCM_SENDER_ID\""
|
|
}
|
|
|
|
xw4fdroid {
|
|
dimension "variant"
|
|
applicationId "org.eehouse.android.xw4"
|
|
manifestPlaceholders = [ APP_ID: applicationId ]
|
|
resValue "string", "app_name", "CrossWords"
|
|
resValue "string", "nbs_port", "3344"
|
|
buildConfigField "boolean", "WIDIR_ENABLED", "false"
|
|
buildConfigField "boolean", "RELAYINVITE_SUPPORTED", "false"
|
|
|
|
buildConfigField "String", "GCM_SENDER_ID", "\"\""
|
|
}
|
|
xw4d {
|
|
dimension "variant"
|
|
applicationId "org.eehouse.android.xw4dbg"
|
|
manifestPlaceholders = [ FABRIC_API_KEY: "$FABRIC_API_KEY", APP_ID: applicationId, ]
|
|
resValue "string", "app_name", "CrossDbg"
|
|
resValue "string", "nbs_port", "3345"
|
|
buildConfigField "boolean", "WIDIR_ENABLED", "true"
|
|
buildConfigField "boolean", "RELAYINVITE_SUPPORTED", "true"
|
|
|
|
buildConfigField "String", "GCM_SENDER_ID", "\"\""
|
|
}
|
|
|
|
// 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
|
|
// proguard crashes when I do this (the optimize part)
|
|
// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
}
|
|
debug {
|
|
debuggable true
|
|
minifyEnabled true // for testing
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
// 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-xw4Release"
|
|
}
|
|
debug {
|
|
jniLibs.srcDir "../libs-xw4Debug"
|
|
}
|
|
}
|
|
xw4d {
|
|
release {
|
|
jniLibs.srcDir "../libs-xw4dRelease"
|
|
}
|
|
debug {
|
|
jniLibs.srcDir "../libs-xw4dDebug"
|
|
}
|
|
}
|
|
xw4fdroid {
|
|
release {
|
|
jniLibs.srcDir "../libs-xw4fdroidRelease"
|
|
}
|
|
debug {
|
|
jniLibs.srcDir "../libs-xw4fdroidDebug"
|
|
}
|
|
}
|
|
}
|
|
|
|
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.outputFileName = newName
|
|
}
|
|
}
|
|
}
|
|
|
|
ext {
|
|
SUPPORT_LIB_VERSION = '27.1.1'
|
|
}
|
|
|
|
dependencies {
|
|
// Look into replacing this with a fetch too PENDING
|
|
xw4Implementation files('../libs/gcm.jar')
|
|
|
|
implementation "com.android.support:support-v4:$SUPPORT_LIB_VERSION"
|
|
implementation "com.android.support:support-compat:$SUPPORT_LIB_VERSION"
|
|
|
|
implementation "android.arch.lifecycle:extensions:1.1.1"
|
|
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
|
|
|
|
// 2.6.8 is probably as far forward as I can go without upping my
|
|
// min-supported SDK version
|
|
xw4dImplementation('com.crashlytics.sdk.android:crashlytics:2.6.3@aar') {
|
|
transitive = true;
|
|
}
|
|
}
|
|
|
|
task mkImages(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/mkimages.sh'
|
|
}
|
|
|
|
task copyStrings(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/copy-strings.py'
|
|
}
|
|
|
|
task ndkSetup(type: Exec) {
|
|
workingDir '../'
|
|
// remove ', "--arm-only"' for Genymotion builds
|
|
|
|
// I'm putting ARM back for a while. It's too much trouble having
|
|
// builds, including those built by travis, that don't run on the
|
|
// emulator. Maybe remove this change before each release?
|
|
commandLine "./scripts/ndksetup.sh", "--with-clang"
|
|
// commandLine "./scripts/ndksetup.sh", "--with-clang", "--arm-only"
|
|
}
|
|
|
|
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 {
|
|
ArrayList<String> cleanCmdLst = new ArrayList<>(["rm", "-rf"]);
|
|
android.applicationVariants.all { variant ->
|
|
// print "variant: " + variant.name + "\n"
|
|
String BUILD = variant.getBuildType().getName()
|
|
// print "type: " + BUILD + "\n"
|
|
String FLAVOR = variant.getFlavorName()
|
|
// print "flavor: " + variant.getFlavorName() + "\n"
|
|
// print "variant: " + variant + "\n"
|
|
|
|
String variantCaps = variant.name.capitalize()
|
|
String nameLC = variant.getBuildType().getName().toLowerCase()
|
|
String lib = "libs-${variant.name}"
|
|
String ndkBuildTask = "ndkBuild${variantCaps}"
|
|
task "$ndkBuildTask"(type: Exec) {
|
|
workingDir '../'
|
|
commandLine './scripts/ndkbuild.sh', '-j3',
|
|
"BUILD_TARGET=${nameLC}", "INITIAL_CLIENT_VERS=$INITIAL_CLIENT_VERS",
|
|
"VARIANT=${FLAVOR}", "NDK_LIBS_OUT=${lib}",
|
|
"NDK_OUT=./obj-${variant.name}"
|
|
}
|
|
|
|
String compileTask = "compile${variantCaps}Ndk"
|
|
tasks.getByName(compileTask).dependsOn ndkBuildTask
|
|
|
|
// For clean task
|
|
cleanCmdLst.add("libs-${variant.name}")
|
|
cleanCmdLst.add("./obj-${variant.name}")
|
|
}
|
|
|
|
task cleanNDK(type: Exec) {
|
|
workingDir '../'
|
|
commandLine cleanCmdLst
|
|
}
|
|
clean.dependsOn 'cleanNDK'
|
|
|
|
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
|
|
}
|
|
|
|
task makeBuildAssets() {
|
|
def assetsDir = android.sourceSets.main.assets.srcDirs.toArray()[0]
|
|
String path = new File(assetsDir, BUILD_INFO_NAME).getAbsolutePath()
|
|
String out = "git: ${GITREV}\n"
|
|
|
|
String diff = "git diff".execute().text.trim()
|
|
if (diff) {
|
|
out += "\n" + diff
|
|
}
|
|
new File(path).write(out)
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
build.dependsOn(makeBuildAssets)
|
|
}
|