Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Unified Diff: build/android/gyp/process_resources.py

Issue 306453003: Remove apk-codegen.xml (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix proguard.txt Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/ant/apk-package-resources.xml ('k') | build/android/gyp/util/build_utils.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gyp/process_resources.py
diff --git a/build/android/gyp/process_resources.py b/build/android/gyp/process_resources.py
index 9bad5c1bcaedece8076a0d357523cc3e1a421d73..64a756048da9dc4d707bc1bc2c4e3c651c33bcc5 100755
--- a/build/android/gyp/process_resources.py
+++ b/build/android/gyp/process_resources.py
@@ -8,6 +8,7 @@
import optparse
import os
+import re
import shlex
import shutil
@@ -24,30 +25,73 @@ def ParseArgs():
parser.add_option('--android-sdk-tools',
help='path to the Android SDK build tools folder')
parser.add_option('--R-dir', help='directory to hold generated R.java')
- parser.add_option('--res-dirs',
+ parser.add_option('--dependencies-res-dirs',
help='directories containing resources to be packaged')
- parser.add_option('--crunch-input-dir',
- help='directory containing images to be crunched')
+ parser.add_option('--resource-dir',
+ help='directory containing this target\'s resources.')
parser.add_option('--crunch-output-dir',
help='directory to hold crunched resources')
parser.add_option('--non-constant-id', action='store_true')
parser.add_option('--custom-package', help='Java package for R.java')
parser.add_option('--android-manifest', help='AndroidManifest.xml path')
+ parser.add_option('--proguard-file',
+ help='Path to proguard.txt generated file')
parser.add_option('--stamp', help='File to touch on success')
+ parser.add_option(
+ '--extra-res-packages',
+ help='Additional package names to generate R.java files for')
+ parser.add_option(
+ '--extra-r-text-files',
+ help='For each additional package, the R.txt file should contain a '
+ 'list of resources to be included in the R.java file in the format '
+ 'generated by aapt')
+
(options, args) = parser.parse_args()
if args:
parser.error('No positional arguments should be given.')
# Check that required options have been provided.
- required_options = ('android_sdk', 'android_sdk_tools', 'R_dir',
- 'res_dirs', 'crunch_input_dir', 'crunch_output_dir')
+ required_options = (
+ 'android_sdk',
+ 'android_sdk_tools',
+ 'android_manifest',
+ 'dependencies_res_dirs',
+ 'resource_dir',
+ 'crunch_output_dir',
+ 'R_dir',
+ )
build_utils.CheckOptions(options, parser, required=required_options)
return options
+def CreateExtraRJavaFiles(
+ r_dir, extra_packages, extra_r_text_files):
+ if len(extra_packages) != len(extra_r_text_files):
+ raise Exception('--extra-res-packages and --extra-r-text-files'
+ 'should have the same length')
+
+ java_files = build_utils.FindInDirectory(r_dir, "R.java")
+ if len(java_files) != 1:
+ return
+ r_java_file = java_files[0]
+ r_java_contents = open(r_java_file).read()
+
+ for package in extra_packages:
+ package_r_java_dir = os.path.join(r_dir, *package.split('.'))
+ build_utils.MakeDirectory(package_r_java_dir)
+ package_r_java_path = os.path.join(package_r_java_dir, 'R.java')
+ open(package_r_java_path, 'w').write(
+ re.sub(r'package [.\w]*;', 'package %s;' % package, r_java_contents))
+ # TODO(cjhopman): These extra package's R.java files should be filtered to
+ # only contain the resources listed in their R.txt files. At this point, we
+ # have already compiled those other libraries, so doing this would only
+ # affect how the code in this .apk target could refer to the resources.
+
+
+
def MoveImagesToNonMdpiFolders(res_root):
"""Move images from drawable-*-mdpi-* folders to drawable-* folders.
@@ -95,6 +139,7 @@ def main():
android_jar = os.path.join(options.android_sdk, 'android.jar')
aapt = os.path.join(options.android_sdk_tools, 'aapt')
+ build_utils.DeleteDirectory(options.R_dir)
build_utils.MakeDirectory(options.R_dir)
# Generate R.java. This R.java contains non-final constants and is used only
@@ -110,21 +155,32 @@ def main():
'-I', android_jar,
'--output-text-symbols', options.R_dir,
'-J', options.R_dir]
- res_dirs = shlex.split(options.res_dirs)
- for res_dir in res_dirs:
+ all_res_dirs = ([options.resource_dir]
+ + shlex.split(options.dependencies_res_dirs))
+ for res_dir in all_res_dirs:
package_command += ['-S', res_dir]
if options.non_constant_id:
package_command.append('--non-constant-id')
if options.custom_package:
package_command += ['--custom-package', options.custom_package]
+ if options.proguard_file:
+ package_command += ['-G', options.proguard_file]
+
build_utils.CheckOutput(package_command)
+ if options.extra_res_packages:
+ CreateExtraRJavaFiles(
+ options.R_dir,
+ build_utils.ParseGypList(options.extra_res_packages),
+ build_utils.ParseGypList(options.extra_r_text_files))
+
# Crunch image resources. This shrinks png files and is necessary for 9-patch
# images to display correctly.
+ build_utils.DeleteDirectory(options.crunch_output_dir)
build_utils.MakeDirectory(options.crunch_output_dir)
aapt_cmd = [aapt,
'crunch',
- '-S', options.crunch_input_dir,
+ '-S', options.resource_dir,
'-C', options.crunch_output_dir]
build_utils.CheckOutput(aapt_cmd, fail_func=DidCrunchFail)
« no previous file with comments | « build/android/ant/apk-package-resources.xml ('k') | build/android/gyp/util/build_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698