skia2/platform_tools/android/apps/build.gradle
Derek Sollenberger 6172d432ba Add a script and documentation for building the Viewer APK.
BUG=skia:6009

DOCS_PREVIEW= https://skia.org/?cl=6660

Change-Id: Ibcf0d1e7f3519e703bc74f0329d0ac92110e70ec
Reviewed-on: https://skia-review.googlesource.com/6660
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-01-06 17:14:31 +00:00

114 lines
3.7 KiB
Groovy

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
def setupSkiaLibraryBuild(project, appVariants, appName) {
appVariants.all{ variant ->
def buildNativeLib = project.task("${variant.name}_BuildSkiaLib", type:Exec) {
workingDir '../../../..' // top-level skia directory
commandLine constructBuildCommand(project, variant, appName).split()
}
buildNativeLib.onlyIf { !project.hasProperty("suppressNativeBuild") }
def copyNativeLib = project.task("${variant.name}_CopySkiaLib", type:Copy) {
from getVariantOutDir(project, variant).skiaOut
into getVariantOutDir(project, variant).androidOut
include "${appName}.so"
}
TaskCollection<Task> compileTask = project.tasks.matching {
// println(it.name)
it.name.toLowerCase().contains("compile" + variant.name.toLowerCase()) &&
it.name.toLowerCase().endsWith("ndk")
}
compileTask.getAt(0).dependsOn copyNativeLib
copyNativeLib.dependsOn buildNativeLib
}
}
def getLocalProperties() {
Properties properties = new Properties()
File propFile = project.rootProject.file('local.properties')
if (propFile.canRead()) {
properties.load(propFile.newDataInputStream())
}
propFile = project.rootProject.file('gradle.properties')
if (propFile.canRead()) {
properties.load(propFile.newDataInputStream())
}
return properties
}
def getVariantOutDir(project, variant) {
String variantPrefix = null
String androidLibDir = null
if (variant.name.startsWith("arm64")) {
variantPrefix = "arm64"
androidLibDir = "arm64-v8a"
} else if (variant.name.startsWith("arm")) {
variantPrefix = "arm"
androidLibDir = "armeabi-v7a"
} else if (variant.name.startsWith("x86_64")) {
variantPrefix = "x64"
androidLibDir = "x86_64"
} else if (variant.name.startsWith("x86")) {
variantPrefix = "x86"
androidLibDir = "x86"
} else if (variant.name.startsWith("mipsel")) {
variantPrefix = "mipsel"
androidLibDir = "mips"
} else if (variant.name.startsWith("mips64el")) {
variantPrefix = "mips64el"
androidLibDir = "mips64"
}
String skiaOutDir = null
String propName = "${variantPrefix}.out.dir"
if (project.hasProperty(propName)) {
skiaOutDir = project.getProperties().getAt(propName)
} else {
skiaOutDir = getLocalProperties().getProperty(propName, "missing_variant_out")
}
return [skiaOut: skiaOutDir,
androidOut: "src/main/libs/${androidLibDir}"]
}
def constructBuildCommand(project, variant, appName) {
String depotToolsDir = null
for (String entry : System.getenv("PATH").split(":")) {
if (entry.contains("depot_tools")) {
depotToolsDir = entry;
break;
}
}
if (depotToolsDir == null) {
depotToolsDir = getLocalProperties().getProperty('depot_tools.dir', null)
}
if (depotToolsDir == null) {
throw GradleScriptException("Depot Tools not found! Please update your path to include" +
" depot_tools or define depot_tools.dir in local.properties")
}
String out_dir = getVariantOutDir(project, variant).skiaOut
return "${depotToolsDir}/ninja -C $out_dir $appName"
}