aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools
diff options
context:
space:
mode:
authorGravatar Derek Sollenberger <djsollen@google.com>2017-01-06 11:41:56 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-06 17:14:31 +0000
commit6172d432ba550696b29d156aafd98f30ab8d147b (patch)
tree835395d3ad954739f85d1e6c5e7010841eae601f /platform_tools
parent151d3b18fac381bc4d3d3b9017a9673bace889e5 (diff)
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>
Diffstat (limited to 'platform_tools')
-rw-r--r--platform_tools/android/apps/build.gradle22
-rwxr-xr-xplatform_tools/android/bin/android_build_app66
2 files changed, 81 insertions, 7 deletions
diff --git a/platform_tools/android/apps/build.gradle b/platform_tools/android/apps/build.gradle
index 5c49269356..ee279e8b91 100644
--- a/platform_tools/android/apps/build.gradle
+++ b/platform_tools/android/apps/build.gradle
@@ -23,13 +23,13 @@ def setupSkiaLibraryBuild(project, appVariants, appName) {
appVariants.all{ variant ->
def buildNativeLib = project.task("${variant.name}_BuildSkiaLib", type:Exec) {
workingDir '../../../..' // top-level skia directory
- commandLine constructBuildCommand(variant, appName).split()
+ commandLine constructBuildCommand(project, variant, appName).split()
}
buildNativeLib.onlyIf { !project.hasProperty("suppressNativeBuild") }
def copyNativeLib = project.task("${variant.name}_CopySkiaLib", type:Copy) {
- from getVariantOutDir(variant).skiaOut
- into getVariantOutDir(variant).androidOut
+ from getVariantOutDir(project, variant).skiaOut
+ into getVariantOutDir(project, variant).androidOut
include "${appName}.so"
}
@@ -56,7 +56,7 @@ def getLocalProperties() {
return properties
}
-def getVariantOutDir(variant) {
+def getVariantOutDir(project, variant) {
String variantPrefix = null
String androidLibDir = null
if (variant.name.startsWith("arm64")) {
@@ -79,11 +79,19 @@ def getVariantOutDir(variant) {
androidLibDir = "mips64"
}
- return [skiaOut: getLocalProperties().getProperty("${variantPrefix}.out.dir", "missing_variant_out"),
+ 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(variant, appName) {
+def constructBuildCommand(project, variant, appName) {
String depotToolsDir = null
for (String entry : System.getenv("PATH").split(":")) {
if (entry.contains("depot_tools")) {
@@ -100,6 +108,6 @@ def constructBuildCommand(variant, appName) {
" depot_tools or define depot_tools.dir in local.properties")
}
- String out_dir = getVariantOutDir(variant).skiaOut
+ String out_dir = getVariantOutDir(project, variant).skiaOut
return "${depotToolsDir}/ninja -C $out_dir $appName"
}
diff --git a/platform_tools/android/bin/android_build_app b/platform_tools/android/bin/android_build_app
new file mode 100755
index 0000000000..cd044c1468
--- /dev/null
+++ b/platform_tools/android/bin/android_build_app
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+#
+# Copyright 2017 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import os
+import re
+import shutil
+import subprocess
+import sys
+
+parser = argparse.ArgumentParser(description='builds skia android apps')
+parser.add_argument('-C', '--output_dir', help='ninja out dir')
+parser.add_argument('app_name')
+
+args = parser.parse_args()
+
+target_cpu = "arm64"
+android_variant = ""
+android_buildtype = "debug"
+
+if args.output_dir == None:
+ sys.exit("unknown out directory")
+
+args_gn_path = os.path.join(args.output_dir, "args.gn")
+if os.path.exists(args_gn_path):
+ for line in open(args_gn_path):
+ m = re.match('target_cpu = "(.*)"', line.strip())
+ if m:
+ target_cpu = m.group(1)
+
+if target_cpu == "arm":
+ android_variant = "arm"
+elif target_cpu == "arm64":
+ android_variant = "arm64"
+elif target_cpu == "x86":
+ android_variant = "x86"
+elif target_cpu == "x64":
+ android_variant = "x86_64"
+elif target_cpu == "mipsel":
+ android_variant = "mips"
+elif target_cpu == "mips64el":
+ android_variant = "mips64"
+else:
+ sys.exit("unknown target_cpu")
+
+# build the apk using gradle
+try:
+ subprocess.check_call(['./apps/gradlew',
+ ':viewer:assemble' + android_variant + android_buildtype,
+ '-papps/' + args.app_name,
+ '-P' + target_cpu + 'out.dir=' + args.output_dir,
+ '--daemon'], cwd=os.path.join(os.path.dirname(__file__), ".."))
+except subprocess.CalledProcessError as error:
+ print error
+ sys.exit("gradle build failed")
+
+# copy apk back into the main out directory
+current_dir = os.path.dirname(__file__)
+apk_src = os.path.join(current_dir, "..", "apps", args.app_name, "build", "outputs", "apk",
+ args.app_name + "-" + android_variant + "-" + android_buildtype + ".apk")
+apk_dst = os.path.join(args.output_dir, args.app_name + ".apk")
+shutil.copyfile(apk_src, apk_dst)