diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-11-26 20:39:11 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-11-26 20:39:11 +0000 |
commit | 3daa1aed7a817f296fffb1e24f86bcb6bf56ce2f (patch) | |
tree | 77ecee952a8a39f5b0a1cf8eaaa0d99ed678dd74 /platform_tools | |
parent | ee21a3e395298021ca70e0d72bf2d983b2fc9225 (diff) |
Support linking skia statically on Android
Support linking skia statically on Android. Skia symbols should be
exported by the app library, to the extent that skia_launcher needs
them.
Syncs libskia_android.so to the device only if it exists.
R=djsollen@google.com
Author: kkinnunen@nvidia.com
Review URL: https://codereview.chromium.org/61893008
git-svn-id: http://skia.googlecode.com/svn/trunk@12399 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'platform_tools')
-rw-r--r-- | platform_tools/android/app/src/com/skia/SkiaSampleActivity.java | 5 | ||||
-rwxr-xr-x | platform_tools/android/bin/android_run_skia | 5 | ||||
-rwxr-xr-x | platform_tools/android/bin/android_setup.sh | 4 | ||||
-rw-r--r-- | platform_tools/android/gyp/skia_android.gypi | 13 | ||||
-rw-r--r-- | platform_tools/android/launcher/skia_launcher.cpp | 10 |
5 files changed, 31 insertions, 6 deletions
diff --git a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java index 62f81a58f5..0a7a569728 100644 --- a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java +++ b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java @@ -43,6 +43,11 @@ public class SkiaSampleActivity extends Activity try { System.loadLibrary("skia_android"); + } catch (UnsatisfiedLinkError e) { + // This might be because skia was linked to SampleApp statically. + } + + try { System.loadLibrary("SampleApp"); LinearLayout holder = (LinearLayout) findViewById(R.id.holder); diff --git a/platform_tools/android/bin/android_run_skia b/platform_tools/android/bin/android_run_skia index 3314225ba4..11c36756f5 100755 --- a/platform_tools/android/bin/android_run_skia +++ b/platform_tools/android/bin/android_run_skia @@ -28,7 +28,10 @@ then fi adb_push_if_needed "${SKIA_OUT}/${configuration}/skia_launcher" /data/local/tmp -adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" /data/local/tmp +if [ -f "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" ]; then + # Does not exist for builds with static skia. + adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/libskia_android.so" /data/local/tmp +fi adb_push_if_needed "${SKIA_OUT}/${configuration}/lib.target/lib${runVars[0]}.so" /data/local/tmp STATUS_FILENAME="/data/local/tmp/.skia_tmp_$(date +%s%N)" diff --git a/platform_tools/android/bin/android_setup.sh b/platform_tools/android/bin/android_setup.sh index 1a5ccf9908..b11fcaccb4 100755 --- a/platform_tools/android/bin/android_setup.sh +++ b/platform_tools/android/bin/android_setup.sh @@ -161,7 +161,9 @@ setup_device() { DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')" DEFINES="${DEFINES} skia_os=android" DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.." - DEFINES="${DEFINES} skia_shared_lib=1" + if [[ "$GYP_DEFINES" != *skia_shared_lib=* ]]; then + DEFINES="${DEFINES} skia_shared_lib=1" + fi # Setup the build variation depending on the target device TARGET_DEVICE="$1" diff --git a/platform_tools/android/gyp/skia_android.gypi b/platform_tools/android/gyp/skia_android.gypi index d4f865a1ae..270b934baf 100644 --- a/platform_tools/android/gyp/skia_android.gypi +++ b/platform_tools/android/gyp/skia_android.gypi @@ -30,9 +30,16 @@ # still build. { 'destination': '<(PRODUCT_DIR)/android/libs/<(android_arch)', - 'files': [ - '<(SHARED_LIB_DIR)/libSampleApp.so', - '<(SHARED_LIB_DIR)/libskia_android.so', + 'conditions': [ + [ 'skia_shared_lib', { + 'files': [ + '<(SHARED_LIB_DIR)/libSampleApp.so', + '<(SHARED_LIB_DIR)/libskia_android.so', + ]}, { + 'files': [ + '<(SHARED_LIB_DIR)/libSampleApp.so', + ]} + ], ], }, ], diff --git a/platform_tools/android/launcher/skia_launcher.cpp b/platform_tools/android/launcher/skia_launcher.cpp index 718a7173da..746d470a3c 100644 --- a/platform_tools/android/launcher/skia_launcher.cpp +++ b/platform_tools/android/launcher/skia_launcher.cpp @@ -67,12 +67,16 @@ int main(int argc, const char** argv) { return -1; } + void* skiaLibrary; + +#if defined(SKIA_DLL) // load the local skia shared library - void* skiaLibrary = load_library(appLocation, "skia_android"); + skiaLibrary = load_library(appLocation, "skia_android"); if (NULL == skiaLibrary) { return -1; } +#endif // load the appropriate library void* appLibrary = load_library(appLocation, argv[1]); @@ -80,6 +84,10 @@ int main(int argc, const char** argv) { return -1; } +#if !defined(SKIA_DLL) + skiaLibrary = appLibrary; +#endif + // find the address of the main function int (*app_main)(int, const char**); *(void **) (&app_main) = dlsym(appLibrary, "main"); |