diff options
author | 2015-05-11 08:54:19 -0400 | |
---|---|---|
committer | 2015-05-11 08:54:19 -0400 | |
commit | 7c722197b3e48d28cb063df0b67a0718d8899e58 (patch) | |
tree | 570cb459ca1ee1344f0751c8a35b3cfd12adfdc1 /platform_tools | |
parent | 88f12dbe926df806cfb5b0641f613a2e256a713b (diff) |
Add android_launch_app script to allow command line options to be passed to the sampleApp when starting.
BUG=skia:3815
DOCS_PREVIEW= https://skia.org/?cl=1136753003
R=bungeman@google.com, tomhudson@google.com
Review URL: https://codereview.chromium.org/1136753003
Diffstat (limited to 'platform_tools')
7 files changed, 70 insertions, 21 deletions
diff --git a/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp index 049db97596..7eb1c09388 100644 --- a/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp +++ b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp @@ -172,7 +172,7 @@ static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[], } JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, - jobject thiz, jobject jsampleActivity, jint msaaSampleCount) + jobject thiz, jobject jsampleActivity, jstring cmdLineFlags, jint msaaSampleCount) { // setup jni hooks to the java activity gActivityGlue.m_env = env; @@ -194,15 +194,17 @@ JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, env->DeleteLocalRef(clazz); application_init(); - SkTArray<const char*> args; - args.push_back("SampleApp"); - // TODO: push ability to select skp dir into the UI - args.push_back("--pictureDir"); - args.push_back("/sdcard/skiabot/skia_skp"); + const char* flags = env->GetStringUTFChars(cmdLineFlags, JNI_FALSE); + SkTArray<SkString> flagEntries; + SkStrSplit(flags, " ", &flagEntries); - args.push_back("--resourcePath"); - args.push_back("/data/local/tmp/skia/resources/"); + SkTArray<const char*> args; + args.push_back("SampleApp"); + for (int i = 0; i < flagEntries.count(); i++) { + SkDebugf(flagEntries[i].c_str()); + args.push_back(flagEntries[i].c_str()); + } SkString msaaSampleCountString; if (msaaSampleCount > 0) { @@ -211,7 +213,14 @@ JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, args.push_back(msaaSampleCountString.c_str()); } - gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.begin()), NULL); + if (gWindow) { + SkDebugf("The sample window already exists."); + } else { + gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.begin()), NULL); + } + + // cleanup the command line flags + env->ReleaseStringUTFChars(cmdLineFlags, flags); // send the list of slides up to the activity const int slideCount = gWindow->sampleCount(); diff --git a/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h index 023f679425..263353ac1a 100644 --- a/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h +++ b/platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.h @@ -10,10 +10,10 @@ extern "C" { /* * Class: com_skia_SkiaSampleRenderer * Method: init - * Signature: (Lcom/skia/SkiaSampleActivity;I)V + * Signature: (Lcom/skia/SkiaSampleActivity;Ljava/lang/String;I)V */ JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init - (JNIEnv *, jobject, jobject, jint); + (JNIEnv *, jobject, jobject, jstring, jint); /* * Class: com_skia_SkiaSampleRenderer diff --git a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java index 090d6ad14c..d9cd9f887d 100644 --- a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java +++ b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java @@ -10,6 +10,7 @@ package com.skia; import android.app.ActionBar; import android.app.Activity; import android.app.DownloadManager; +import android.content.Intent; import android.content.Context; import android.os.Build; import android.os.Bundle; @@ -65,7 +66,16 @@ public class SkiaSampleActivity extends Activity mSampleView.terminate(); } - mSampleView = new SkiaSampleView(this, useOpenGLAPI, msaaSampleCount); + // intent get intent extras if triggered from the command line + Intent intent = this.getIntent(); + String flags = intent.getStringExtra("cmdLineFlags"); + + if (flags == null || flags.isEmpty()) { + flags = "--pictureDir /data/local/tmp/skia_skp "; + flags += "--resourcePath /data/local/tmp/skia_resources "; + } + + mSampleView = new SkiaSampleView(this, flags, useOpenGLAPI, msaaSampleCount); LinearLayout holder = (LinearLayout) findViewById(R.id.holder); holder.addView(mSampleView, new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, diff --git a/platform_tools/android/app/src/com/skia/SkiaSampleRenderer.java b/platform_tools/android/app/src/com/skia/SkiaSampleRenderer.java index d8fb8845b4..55257094cd 100644 --- a/platform_tools/android/app/src/com/skia/SkiaSampleRenderer.java +++ b/platform_tools/android/app/src/com/skia/SkiaSampleRenderer.java @@ -20,9 +20,11 @@ public class SkiaSampleRenderer implements GLSurfaceView.Renderer { private final SkiaSampleView mSampleView; private Handler mHandler = new Handler(); private int mMSAASampleCount; + private String mCmdLineFlags; - SkiaSampleRenderer(SkiaSampleView view) { + SkiaSampleRenderer(SkiaSampleView view, String cmdLineFlags) { mSampleView = view; + mCmdLineFlags = cmdLineFlags; } @Override @@ -49,7 +51,8 @@ public class SkiaSampleRenderer implements GLSurfaceView.Renderer { gl.glClearStencil(0); gl.glClear(GL10.GL_STENCIL_BUFFER_BIT); - init((SkiaSampleActivity)mSampleView.getContext(), mMSAASampleCount); + + init((SkiaSampleActivity)mSampleView.getContext(), mCmdLineFlags, mMSAASampleCount); } // Called by JNI and the view. @@ -89,7 +92,7 @@ public class SkiaSampleRenderer implements GLSurfaceView.Renderer { mSampleView.requestRender(); } - native void init(SkiaSampleActivity activity, int msaaSampleCount); + native void init(SkiaSampleActivity activity, String flags, int msaaSampleCount); native void term(); native void draw(); native void updateSize(int w, int h); diff --git a/platform_tools/android/app/src/com/skia/SkiaSampleView.java b/platform_tools/android/app/src/com/skia/SkiaSampleView.java index cf06bea6a8..c33f8ae8ac 100644 --- a/platform_tools/android/app/src/com/skia/SkiaSampleView.java +++ b/platform_tools/android/app/src/com/skia/SkiaSampleView.java @@ -25,10 +25,10 @@ public class SkiaSampleView extends GLSurfaceView { private boolean mRequestedOpenGLAPI; // true == use (desktop) OpenGL. false == use OpenGL ES. private int mRequestedMSAASampleCount; - public SkiaSampleView(Context ctx, boolean useOpenGL, int msaaSampleCount) { + public SkiaSampleView(Context ctx, String cmdLineFlags, boolean useOpenGL, int msaaSampleCount) { super(ctx); - mSampleRenderer = new SkiaSampleRenderer(this); + mSampleRenderer = new SkiaSampleRenderer(this, cmdLineFlags); mRequestedMSAASampleCount = msaaSampleCount; setEGLContextClientVersion(2); diff --git a/platform_tools/android/bin/android_launch_app b/platform_tools/android/bin/android_launch_app new file mode 100755 index 0000000000..d31e5cb350 --- /dev/null +++ b/platform_tools/android/bin/android_launch_app @@ -0,0 +1,16 @@ +#!/bin/bash +# +# android_launch_app: Launches the skia sampleApp on the device. + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $SCRIPT_DIR/android_setup.sh +source $SCRIPT_DIR/utils/setup_adb.sh + +# TODO: check to ensure that the app exists on the device and prompt to install + +if [[ -n $RESOURCE_PATH ]]; then + adb_push_if_needed "${SKIA_SRC_DIR}/resources" $RESOURCE_PATH +fi + +$ADB ${DEVICE_SERIAL} shell am start -S -n "com.skia/.SkiaSampleActivity" --es "cmdLineFlags" "${APP_ARGS[*]}" + diff --git a/platform_tools/android/bin/android_setup.sh b/platform_tools/android/bin/android_setup.sh index b94d230fb5..73fac9a468 100755 --- a/platform_tools/android/bin/android_setup.sh +++ b/platform_tools/android/bin/android_setup.sh @@ -182,8 +182,13 @@ adb_pull_if_needed() { if [ -f $HOST_DST ]; then - #get the MD5 for dst and src - ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_SRC` + #get the MD5 for dst and src depending on OS and/or OS revision + ANDROID_MD5_SUPPORT=`$ADB $DEVICE_SERIAL shell ls -ld /system/bin/md5` + if [ "${ANDROID_MD5_SUPPORT:0:15}" != "/system/bin/md5" ]; then + ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` + else + ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5sum $ANDROID_DST` + fi if [ $(uname) == "Darwin" ]; then HOST_MD5=`md5 -q $HOST_DST` else @@ -220,8 +225,14 @@ adb_push_if_needed() { ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` if [ "${ANDROID_LS:0:1}" == "-" ]; then - #get the MD5 for dst and src - ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` + #get the MD5 for dst and src depending on OS and/or OS revision + ANDROID_MD5_SUPPORT=`$ADB $DEVICE_SERIAL shell ls -ld /system/bin/md5` + if [ "${ANDROID_MD5_SUPPORT:0:15}" != "/system/bin/md5" ]; then + ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` + else + ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5sum $ANDROID_DST` + fi + if [ $(uname) == "Darwin" ]; then HOST_MD5=`md5 -q $HOST_SRC` else |