diff options
author | cjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-19 04:16:27 +0000 |
---|---|---|
committer | cjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-19 04:16:27 +0000 |
commit | 0e44c301ce6cb990c5ee4d9f11e34867d373d2b9 (patch) | |
tree | 986c3b3815b2aac40ca06a96dae9ead6fbf326c0 | |
parent | e985058189e86db1284b43d1526a95c5f8d8d61a (diff) | |
download | chromium_src-0e44c301ce6cb990c5ee4d9f11e34867d373d2b9.zip chromium_src-0e44c301ce6cb990c5ee4d9f11e34867d373d2b9.tar.gz chromium_src-0e44c301ce6cb990c5ee4d9f11e34867d373d2b9.tar.bz2 |
Revert 156308 - Revert 156233 - Make apks be built in a consistent way
This broke non-incremental Android builds.
In the original CL there was a discrepancy in the way that Gyp handled
paths and the way that Ant handled paths. Changed it so that
resource_dir is specified relative to java_in_dir so that Gyp and Ant
treat it the same. For http://crbug.com/145991 I will have to make
resource_dir be in a consistent location for all apk targets and at that
point it can be removed from the gyp files.
Original:https://chromiumcodereview.appspot.com/10914130
BUG=
Review URL: https://chromiumcodereview.appspot.com/10913225
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157502 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | build/java_apk.gypi | 75 | ||||
-rw-r--r-- | content/content_shell.gypi | 49 | ||||
-rw-r--r-- | content/content_tests.gypi | 36 | ||||
-rw-r--r-- | content/shell/android/java/content_shell_apk.xml | 4 | ||||
-rw-r--r-- | content/shell/android/javatests/content_shell_test_apk.xml | 2 |
5 files changed, 96 insertions, 70 deletions
diff --git a/build/java_apk.gypi b/build/java_apk.gypi new file mode 100644 index 0000000..f0d6f2f --- /dev/null +++ b/build/java_apk.gypi @@ -0,0 +1,75 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This file is meant to be included into a target to provide a rule +# to build Android APKs in a consistent manner. +# +# To use this, create a gyp target with the following form: +# { +# 'target_name': 'my_package_apk', +# 'type': 'none', +# 'variables': { +# 'package_name': 'my_package', +# 'apk_name': 'MyPackage', +# 'java_in_dir': 'path/to/package/root', +# 'resource_dir': 'res', +# }, +# 'includes': ['path/to/this/gypi/file'], +# } +# +# Note that this assumes that there's an ant buildfile <package_name>_apk.xml in +# java_in_dir. So, if you have package_name="content_shell" and +# java_in_dir="content/shell/android/java" you should have a directory structure +# like: +# +# content/shell/android/java/content_shell_apk.xml +# content/shell/android/java/src/chromium/base/Foo.java +# content/shell/android/java/src/chromium/base/Bar.java + +{ + 'variables': { + 'input_jars_paths': [], + 'native_libs_paths': [], + 'additional_src_dirs': [], + 'additional_input_paths': [], + }, + 'actions': [ + { + 'action_name': 'ant_<(package_name)_apk', + 'message': 'Building <(package_name) apk.', + 'inputs': [ + '<(java_in_dir)/<(package_name)_apk.xml', + '<(java_in_dir)/AndroidManifest.xml', + '<(DEPTH)/build/android/ant/common.xml', + '<(DEPTH)/build/android/ant/sdk-targets.xml', + '<!@(find <(java_in_dir) -name "*.java")', + '<!@(find <(java_in_dir)/<(resource_dir) -name "*")', + '>@(input_jars_paths)', + '>@(native_libs_paths)', + '>@(additional_input_paths)', + ], + 'outputs': [ + '<(PRODUCT_DIR)/<(package_name)/<(apk_name)-debug.apk', + ], + 'action': [ + 'ant', + '-DPRODUCT_DIR=<(ant_build_out)', + '-DAPP_ABI=<(android_app_abi)', + '-DANDROID_GDBSERVER=<(android_gdbserver)', + '-DANDROID_SDK=<(android_sdk)', + '-DANDROID_SDK_ROOT=<(android_sdk_root)', + '-DANDROID_SDK_TOOLS=<(android_sdk_tools)', + '-DANDROID_SDK_VERSION=<(android_sdk_version)', + '-DANDROID_TOOLCHAIN=<(android_toolchain)', + '-DPACKAGE_NAME=<(package_name)', + '-DCONFIGURATION_NAME=<(CONFIGURATION_NAME)', + '-DINPUT_JARS_PATHS=>(input_jars_paths)', + '-DADDITIONAL_SRC_DIRS=>(additional_src_dirs)', + '-DRESOURCE_DIR=<(resource_dir)', + '-buildfile', + '<(java_in_dir)/<(package_name)_apk.xml' + ] + }, + ], +} diff --git a/content/content_shell.gypi b/content/content_shell.gypi index 2143ed2..1e77bf1 100644 --- a/content/content_shell.gypi +++ b/content/content_shell.gypi @@ -605,6 +605,16 @@ '../net/net.gyp:net_java', '../ui/ui.gyp:ui_java', ], + 'variables': { + 'package_name': 'content_shell', + 'apk_name': 'ContentShell', + 'java_in_dir': 'shell/android/java', + # TODO(cjhopman): The resource directory of all apks should be in + # <java_in_dir>/res. + 'resource_dir': '../res', + 'native_libs_paths': ['<(PRODUCT_DIR)/content_shell/libs/<(android_app_abi)/libcontent_shell_content_view.so'], + 'additional_input_paths': ['<(PRODUCT_DIR)/content_shell/assets/content_shell.pak'], + }, 'actions': [ { 'action_name': 'copy_and_strip_so', @@ -618,45 +628,8 @@ '<@(_outputs)', ], }, - { - 'action_name': 'content_shell_apk', - 'inputs': [ - 'shell/android/java/content_shell_apk.xml', - 'shell/android/java/AndroidManifest.xml', - '../build/android/ant/common.xml', - '../build/android/ant/sdk-targets.xml', - '<!@(find shell/android/java -name "*.java")', - '<!@(find shell/android/res -name "*")', - '>@(input_jars_paths)', - '<(PRODUCT_DIR)/content_shell/assets/content_shell.pak', - '<(PRODUCT_DIR)/content_shell/libs/<(android_app_abi)/libcontent_shell_content_view.so', - ], - 'outputs': [ - # Awkwardly, we build a Debug APK even when gyp is in - # Release mode. I don't think it matters (e.g. we're - # probably happy to not codesign) but naming should be - # fixed. - '<(PRODUCT_DIR)/content_shell/ContentShell-debug.apk', - ], - 'action': [ - # Pass the build type to ant. Currently it only assumes - # debug mode in java. Release mode will break the current - # workflow. - 'ant', - '-DPRODUCT_DIR=<(ant_build_out)', - '-DAPP_ABI=<(android_app_abi)', - '-DANDROID_SDK=<(android_sdk)', - '-DANDROID_SDK_ROOT=<(android_sdk_root)', - '-DANDROID_SDK_TOOLS=<(android_sdk_tools)', - '-DANDROID_SDK_VERSION=<(android_sdk_version)', - '-DANDROID_GDBSERVER=<(android_gdbserver)', - '-DCONFIGURATION_NAME=<(CONFIGURATION_NAME)', - '-DINPUT_JARS_PATHS=>(input_jars_paths)', - '-buildfile', - 'shell/android/java/content_shell_apk.xml', - ], - } ], + 'includes': [ '../build/java_apk.gypi' ], }, ], }], # OS=="android" diff --git a/content/content_tests.gypi b/content/content_tests.gypi index 5920623..ba152cd 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -881,35 +881,13 @@ '../net/net.gyp:net_javatests', '../tools/android/forwarder/forwarder.gyp:forwarder', ], - 'actions': [ - { - 'action_name': 'content_shell_test_generate_apk', - 'inputs': [ - '../build/android/ant/common.xml', - '../build/android/ant/sdk-targets.xml', - '<(DEPTH)/content/shell/android/javatests/content_shell_test_apk.xml', - '<(DEPTH)/content/shell/android/javatests/AndroidManifest.xml', - '>@(input_jars_paths)', - '<!@(find <(DEPTH)/content/shell/android/javatests/ -name "*.java")' - ], - 'outputs': [ - '<(PRODUCT_DIR)/content_shell_test/ContentShellTest-debug.apk', - ], - 'action': [ - 'ant', - '-DPRODUCT_DIR=<(ant_build_out)', - '-DAPP_ABI=<(android_app_abi)', - '-DANDROID_SDK=<(android_sdk)', - '-DANDROID_SDK_ROOT=<(android_sdk_root)', - '-DANDROID_SDK_TOOLS=<(android_sdk_tools)', - '-DANDROID_SDK_VERSION=<(android_sdk_version)', - '-DANDROID_GDBSERVER=<(android_gdbserver)', - '-DINPUT_JARS_PATHS=>(input_jars_paths)', - '-buildfile', - '<(DEPTH)/content/shell/android/javatests/content_shell_test_apk.xml', - ] - } - ], + 'variables': { + 'package_name': 'content_shell_test', + 'apk_name': 'ContentShellTest', + 'java_in_dir': 'shell/android/javatests', + 'resource_dir': '../res', + }, + 'includes': [ '../build/java_apk.gypi' ], }, ], }], diff --git a/content/shell/android/java/content_shell_apk.xml b/content/shell/android/java/content_shell_apk.xml index 9182239..a1caf1a 100644 --- a/content/shell/android/java/content_shell_apk.xml +++ b/content/shell/android/java/content_shell_apk.xml @@ -18,7 +18,7 @@ <property-value name="target.abi" value="${APP_ABI}"/> <property-location name="out.dir" location="${PRODUCT_DIR}/content_shell" check-exists="false"/> - <property name="resource.absolute.dir" value="../res"/> + <property name="resource.absolute.dir" value="${RESOURCE_DIR}"/> <property name="gen.absolute.dir" value="${out.dir}/gen"/> <property name="jar.libs.dir" value="${out.dir}/java/libs"/> <path id="native.libs.gdbserver"> @@ -32,7 +32,7 @@ </path> <property name="java.compilerargs" value="-classpath ${toString:out.dex.jar.input.ref}"/> - <echo>classpath: ${toString:out.dex.jar.input.ref}</echo> + <echo>resources: ${RESOURCE_DIR} classpath: ${toString:out.dex.jar.input.ref}</echo> <!-- We expect PRODUCT_DIR to be set like the gyp var (e.g. $ROOT/out/Debug) --> <fail message="PRODUCT_DIR env var not set?"> diff --git a/content/shell/android/javatests/content_shell_test_apk.xml b/content/shell/android/javatests/content_shell_test_apk.xml index 6d5f6824..b2f8757 100644 --- a/content/shell/android/javatests/content_shell_test_apk.xml +++ b/content/shell/android/javatests/content_shell_test_apk.xml @@ -14,7 +14,7 @@ <property name="target.abi" value="${APP_ABI}"/> <property name="out.dir" location="${PRODUCT_DIR}/content_shell_test"/> - <property name="resource.absolute.dir" value="../res"/> + <property name="resource.absolute.dir" value="${RESOURCE_DIR}"/> <property name="gen.absolute.dir" value="${out.dir}/gen"/> <path id="native.libs.gdbserver"> <fileset file="${android.gdbserver}"/> |