From c5cf762177c5708a5efa39f95b086c751e03e2e4 Mon Sep 17 00:00:00 2001 From: Hal Canary Date: Fri, 2 Mar 2018 17:28:39 -0500 Subject: Viewer/Amdroid: universal build, resources in APK Change-Id: I57dda6e3329dbee720333b6e92142fce28f8dbd3 Reviewed-on: https://skia-review.googlesource.com/111940 Commit-Queue: Hal Canary Reviewed-by: Florin Malita Reviewed-by: Yuqian Li --- platform_tools/android/apps/viewer/build.gradle | 2 +- .../android/apps/viewer/src/main/assets/.gitignore | 1 + .../java/org/skia/viewer/ViewerApplication.java | 5 +- .../android/bin/android_build_universal_viewer | 81 ++++++++++++++++++++++ 4 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 platform_tools/android/apps/viewer/src/main/assets/.gitignore create mode 100755 platform_tools/android/bin/android_build_universal_viewer (limited to 'platform_tools/android') diff --git a/platform_tools/android/apps/viewer/build.gradle b/platform_tools/android/apps/viewer/build.gradle index d39e896c41..630544d0bb 100644 --- a/platform_tools/android/apps/viewer/build.gradle +++ b/platform_tools/android/apps/viewer/build.gradle @@ -24,7 +24,7 @@ android { } sourceSets.main.jni.srcDirs = [] //disable automatic ndk-build call sourceSets.main.jniLibs.srcDir "src/main/libs" - productFlavors { arm {}; arm64 {}; x86 {}; x64 {}; arm64vulkan{}; } + productFlavors { universal{}; arm {}; arm64 {}; x86 {}; x64 {}; arm64vulkan{}; } setupSkiaLibraryBuild(project, applicationVariants, "libviewer") } diff --git a/platform_tools/android/apps/viewer/src/main/assets/.gitignore b/platform_tools/android/apps/viewer/src/main/assets/.gitignore new file mode 100644 index 0000000000..e47e1b33a7 --- /dev/null +++ b/platform_tools/android/apps/viewer/src/main/assets/.gitignore @@ -0,0 +1 @@ +/resources diff --git a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java index 2dcce90e63..7253eb7503 100644 --- a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java +++ b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/ViewerApplication.java @@ -8,6 +8,7 @@ package org.skia.viewer; import android.app.Application; +import android.content.res.AssetManager; public class ViewerApplication extends Application { private long mNativeHandle = 0; @@ -18,13 +19,13 @@ public class ViewerApplication extends Application { System.loadLibrary("viewer"); } - private native long createNativeApp(); + private native long createNativeApp(AssetManager assetManager); private native void destroyNativeApp(long handle); @Override public void onCreate() { super.onCreate(); - mNativeHandle = createNativeApp(); + mNativeHandle = createNativeApp(this.getResources().getAssets()); } @Override diff --git a/platform_tools/android/bin/android_build_universal_viewer b/platform_tools/android/bin/android_build_universal_viewer new file mode 100755 index 0000000000..f98eeb8088 --- /dev/null +++ b/platform_tools/android/bin/android_build_universal_viewer @@ -0,0 +1,81 @@ +#! /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. + +make_gn() { + #TODO: make this more configurable + cat << EOF + target_cpu = "$ARCH" + is_debug = false + ndk = "$ANDROID_NDK" + ndk_api = 26 +EOF +} + +main() { + APP="$1" + LIB="$2" + + ANDROID_NDK="$(cd "$ANDROID_NDK"; pwd)" + ANDROID_HOME="$(cd "$ANDROID_HOME"; pwd)" + + cd "$(dirname "$0")/../../.." + + python tools/git-sync-deps + git clean -fxd platform_tools/android/apps/$APP + mkdir -p platform_tools/android/apps/${APP}/src/main/assets + cp -a resources platform_tools/android/apps/${APP}/src/main/assets/ + + for ARCH in arm arm64 x86 x64; do + BUILD=out/${APP}-$ARCH + mkdir -p "$BUILD" + make_gn > "${BUILD}/args.gn" + 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/${APP}-universal + cp platform_tools/android/apps/$APP/build/outputs/apk/${APP}-universal-debug.apk \ + out/${APP}-universal/$APP-universal-debug.apk + ls -l out/${APP}-universal/$APP-universal-debug.apk +} + +usage() { + cat >&2 < /dev/null || usage +command -v python > /dev/null || usage + +set -x # Verbose +set -e # Exit immediately + +main viewer libviewer.so -- cgit v1.2.3