summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-19 04:16:27 +0000
committercjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-19 04:16:27 +0000
commit0e44c301ce6cb990c5ee4d9f11e34867d373d2b9 (patch)
tree986c3b3815b2aac40ca06a96dae9ead6fbf326c0
parente985058189e86db1284b43d1526a95c5f8d8d61a (diff)
downloadchromium_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.gypi75
-rw-r--r--content/content_shell.gypi49
-rw-r--r--content/content_tests.gypi36
-rw-r--r--content/shell/android/java/content_shell_apk.xml4
-rw-r--r--content/shell/android/javatests/content_shell_test_apk.xml2
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}"/>