aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--platform_tools/android/apps/build.gradle2
-rw-r--r--platform_tools/android/apps/skqp/build.gradle2
-rw-r--r--platform_tools/android/apps/skqp/src/main/AndroidManifest.xml3
-rwxr-xr-xplatform_tools/android/bin/android_build_app16
-rwxr-xr-xtools/skqp/make_universal_apk77
5 files changed, 82 insertions, 18 deletions
diff --git a/platform_tools/android/apps/build.gradle b/platform_tools/android/apps/build.gradle
index 0bf9461d7b..9f285e5b06 100644
--- a/platform_tools/android/apps/build.gradle
+++ b/platform_tools/android/apps/build.gradle
@@ -67,7 +67,7 @@ def getVariantOutDir(project, variant) {
} else if (variant.name.startsWith("arm")) {
variantPrefix = "arm"
androidLibDir = "armeabi-v7a"
- } else if (variant.name.startsWith("x86_64")) {
+ } else if (variant.name.startsWith("x64")) {
variantPrefix = "x64"
androidLibDir = "x86_64"
} else if (variant.name.startsWith("x86")) {
diff --git a/platform_tools/android/apps/skqp/build.gradle b/platform_tools/android/apps/skqp/build.gradle
index 3ebfb76bf0..e368a66ef6 100644
--- a/platform_tools/android/apps/skqp/build.gradle
+++ b/platform_tools/android/apps/skqp/build.gradle
@@ -24,6 +24,6 @@ android {
}
sourceSets.main.jni.srcDirs = []
sourceSets.main.jniLibs.srcDir "src/main/libs"
- productFlavors { arm {}; arm64 {}; x86 {}; x64 {}; arm64vulkan{}; }
+ productFlavors { universal{}; arm {}; arm64 {}; x86 {}; x64 {}; arm64vulkan{}; }
setupSkiaLibraryBuild(project, applicationVariants, "libskqp_app")
}
diff --git a/platform_tools/android/apps/skqp/src/main/AndroidManifest.xml b/platform_tools/android/apps/skqp/src/main/AndroidManifest.xml
index f39fddad56..0459522ad3 100644
--- a/platform_tools/android/apps/skqp/src/main/AndroidManifest.xml
+++ b/platform_tools/android/apps/skqp/src/main/AndroidManifest.xml
@@ -9,8 +9,7 @@
<application
android:allowBackup="false"
android:theme="@style/AppTheme"
- android:label="SkQP"
- android:debuggable="true">
+ android:label="SkQP">
<activity android:name=".MainActivity">
<intent-filter>
diff --git a/platform_tools/android/bin/android_build_app b/platform_tools/android/bin/android_build_app
index 5f47ff20a0..bee8cf508a 100755
--- a/platform_tools/android/bin/android_build_app
+++ b/platform_tools/android/bin/android_build_app
@@ -19,7 +19,6 @@ parser.add_argument('app_name')
args = parser.parse_args()
target_cpu = "arm64"
-android_variant = ""
android_buildtype = "debug"
if args.output_dir == None:
@@ -32,21 +31,10 @@ if os.path.exists(args_gn_path):
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"
-else:
- sys.exit("unknown target_cpu")
-
# build the apk using gradle
try:
subprocess.check_call(['./apps/gradlew',
- ':' + args.app_name + ':assemble' + android_variant + android_buildtype,
+ ':' + args.app_name + ':assemble' + target_cpu + android_buildtype,
'-papps/' + args.app_name,
'-P' + target_cpu + '.out.dir=' + os.path.abspath(args.output_dir),
'--daemon'], cwd=os.path.join(os.path.dirname(__file__), ".."))
@@ -57,6 +45,6 @@ except subprocess.CalledProcessError as error:
# 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")
+ args.app_name + "-" + target_cpu + "-" + android_buildtype + ".apk")
apk_dst = os.path.join(args.output_dir, args.app_name + ".apk")
shutil.copyfile(apk_src, apk_dst)
diff --git a/tools/skqp/make_universal_apk b/tools/skqp/make_universal_apk
new file mode 100755
index 0000000000..ce0607119c
--- /dev/null
+++ b/tools/skqp/make_universal_apk
@@ -0,0 +1,77 @@
+#! /bin/sh
+
+# Copyright 2018 Google Inc.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+usage() {
+ cat >&2 <<EOM
+
+This script can be run with no arguments, in which case it will produce an
+APK with native libraries for all four architectures: arm, arm64, x86, and
+x64. You can instead list the architectures you want as arguments to this
+script. For example:
+
+ $0 arm x86
+
+The environment variables ANDROID_NDK and ANDROID_HOME must be set to the
+locations of the Android NDK and SDK. Current values:
+
+ ANDROID_NDK="$ANDROID_NDK"
+ ANDROID_HOME="$ANDROID_HOME"
+
+Additionally, \`python\` and \`ninja\` should be in your path.
+
+EOM
+ exit 1
+}
+
+[ -d "$ANDROID_NDK" ] || usage
+[ -d "$ANDROID_HOME" ] || usage
+command -v ninja > /dev/null || usage
+command -v python > /dev/null || usage
+for ARCH in $*; do case $ARCH in arm|arm64|x86|x64);; *) usage;; esac; done
+
+set -x # Verbose
+set -e # Exit immediately
+
+cd "$(dirname "$0")/../.."
+
+python tools/skqp/download_model
+python tools/skqp/setup_resources
+python tools/git-sync-deps
+
+APP=skqp
+LIB=libskqp_app.so
+
+find platform_tools/android/apps/$APP -name $LIB -exec rm {} +
+
+if [ $# -eq 0 ]; then
+ set -- arm arm64 x86 x64
+fi
+
+for ARCH in $*; do
+ BUILD=out/skqp-$ARCH
+ python tools/skqp/generate_gn_args $BUILD "$ANDROID_NDK" --arch "$ARCH"
+ bin/gn gen $BUILD
+ ninja -C $BUILD $LIB
+ case $ARCH in
+ arm) NATIVE=armeabi-v7a ;;
+ arm64) NATIVE=arm64-v8a ;;
+ x86) NATIVE=x86 ;;
+ x64) NATIVE=x86_64 ;;
+ *) usage ;;
+ esac
+ DST=platform_tools/android/apps/$APP/src/main/libs/$NATIVE
+ mkdir -p $DST
+ cp -a $BUILD/$LIB $DST/$LIB
+done
+
+(
+ cd platform_tools/android
+ apps/gradlew --daemon -p apps/$APP -P suppressNativeBuild :$APP:assembleUniversalDebug
+)
+
+mkdir -p out/skqp
+cp platform_tools/android/apps/$APP/build/outputs/apk/$APP-universal-debug.apk out/skqp/
+