OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """Process Android resources to generate R.java, and prepare for packaging. | 7 """Process Android resources to generate R.java, and prepare for packaging. |
8 | 8 |
9 This will crunch images and generate v14 compatible resources | 9 This will crunch images and generate v14 compatible resources |
10 (see generate_v14_compatible_resources.py). | 10 (see generate_v14_compatible_resources.py). |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 parser.add_option( | 57 parser.add_option( |
58 '--v14-verify-only', | 58 '--v14-verify-only', |
59 action='store_true', | 59 action='store_true', |
60 help='Do not generate v14 resources. Instead, just verify that the ' | 60 help='Do not generate v14 resources. Instead, just verify that the ' |
61 'resources are already compatible with v14, i.e. they don\'t use ' | 61 'resources are already compatible with v14, i.e. they don\'t use ' |
62 'attributes that cause crashes on certain devices.') | 62 'attributes that cause crashes on certain devices.') |
63 | 63 |
64 parser.add_option( | 64 parser.add_option( |
65 '--extra-res-packages', | 65 '--extra-res-packages', |
66 help='Additional package names to generate R.java files for') | 66 help='Additional package names to generate R.java files for') |
| 67 # TODO(cjhopman): Actually use --extra-r-text-files. We currently include all |
| 68 # the resources in all R.java files for a particular apk. |
67 parser.add_option( | 69 parser.add_option( |
68 '--extra-r-text-files', | 70 '--extra-r-text-files', |
69 help='For each additional package, the R.txt file should contain a ' | 71 help='For each additional package, the R.txt file should contain a ' |
70 'list of resources to be included in the R.java file in the format ' | 72 'list of resources to be included in the R.java file in the format ' |
71 'generated by aapt') | 73 'generated by aapt') |
72 | 74 |
73 parser.add_option( | 75 parser.add_option( |
74 '--all-resources-zip-out', | 76 '--all-resources-zip-out', |
75 help='Path for output of all resources. This includes resources in ' | 77 help='Path for output of all resources. This includes resources in ' |
76 'dependencies.') | 78 'dependencies.') |
(...skipping 15 matching lines...) Expand all Loading... |
92 'resource_zip_out', | 94 'resource_zip_out', |
93 ) | 95 ) |
94 build_utils.CheckOptions(options, parser, required=required_options) | 96 build_utils.CheckOptions(options, parser, required=required_options) |
95 | 97 |
96 if (options.R_dir is None) == (options.srcjar_out is None): | 98 if (options.R_dir is None) == (options.srcjar_out is None): |
97 raise Exception('Exactly one of --R-dir or --srcjar-out must be specified.') | 99 raise Exception('Exactly one of --R-dir or --srcjar-out must be specified.') |
98 | 100 |
99 return options | 101 return options |
100 | 102 |
101 | 103 |
102 def CreateExtraRJavaFiles( | 104 def CreateExtraRJavaFiles(r_dir, extra_packages): |
103 r_dir, extra_packages, extra_r_text_files): | |
104 if len(extra_packages) != len(extra_r_text_files): | |
105 raise Exception('--extra-res-packages and --extra-r-text-files' | |
106 'should have the same length') | |
107 | |
108 java_files = build_utils.FindInDirectory(r_dir, "R.java") | 105 java_files = build_utils.FindInDirectory(r_dir, "R.java") |
109 if len(java_files) != 1: | 106 if len(java_files) != 1: |
110 return | 107 return |
111 r_java_file = java_files[0] | 108 r_java_file = java_files[0] |
112 r_java_contents = open(r_java_file).read() | 109 r_java_contents = open(r_java_file).read() |
113 | 110 |
114 for package in extra_packages: | 111 for package in extra_packages: |
115 package_r_java_dir = os.path.join(r_dir, *package.split('.')) | 112 package_r_java_dir = os.path.join(r_dir, *package.split('.')) |
116 build_utils.MakeDirectory(package_r_java_dir) | 113 build_utils.MakeDirectory(package_r_java_dir) |
117 package_r_java_path = os.path.join(package_r_java_dir, 'R.java') | 114 package_r_java_path = os.path.join(package_r_java_dir, 'R.java') |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 package_command.append('--non-constant-id') | 226 package_command.append('--non-constant-id') |
230 if options.custom_package: | 227 if options.custom_package: |
231 package_command += ['--custom-package', options.custom_package] | 228 package_command += ['--custom-package', options.custom_package] |
232 if options.proguard_file: | 229 if options.proguard_file: |
233 package_command += ['-G', options.proguard_file] | 230 package_command += ['-G', options.proguard_file] |
234 build_utils.CheckOutput(package_command, print_stderr=False) | 231 build_utils.CheckOutput(package_command, print_stderr=False) |
235 | 232 |
236 if options.extra_res_packages: | 233 if options.extra_res_packages: |
237 CreateExtraRJavaFiles( | 234 CreateExtraRJavaFiles( |
238 gen_dir, | 235 gen_dir, |
239 build_utils.ParseGypList(options.extra_res_packages), | 236 build_utils.ParseGypList(options.extra_res_packages)) |
240 build_utils.ParseGypList(options.extra_r_text_files)) | |
241 | 237 |
242 # This is the list of directories with resources to put in the final .zip | 238 # This is the list of directories with resources to put in the final .zip |
243 # file. The order of these is important so that crunched/v14 resources | 239 # file. The order of these is important so that crunched/v14 resources |
244 # override the normal ones. | 240 # override the normal ones. |
245 zip_resource_dirs = input_resource_dirs + [v14_dir] | 241 zip_resource_dirs = input_resource_dirs + [v14_dir] |
246 | 242 |
247 base_crunch_dir = os.path.join(temp_dir, 'crunch') | 243 base_crunch_dir = os.path.join(temp_dir, 'crunch') |
248 | 244 |
249 # Crunch image resources. This shrinks png files and is necessary for | 245 # Crunch image resources. This shrinks png files and is necessary for |
250 # 9-patch images to display correctly. 'aapt crunch' accepts only a single | 246 # 9-patch images to display correctly. 'aapt crunch' accepts only a single |
(...skipping 23 matching lines...) Expand all Loading... |
274 if options.depfile: | 270 if options.depfile: |
275 input_files += build_utils.GetPythonDependencies() | 271 input_files += build_utils.GetPythonDependencies() |
276 build_utils.WriteDepfile(options.depfile, input_files) | 272 build_utils.WriteDepfile(options.depfile, input_files) |
277 | 273 |
278 if options.stamp: | 274 if options.stamp: |
279 build_utils.Touch(options.stamp) | 275 build_utils.Touch(options.stamp) |
280 | 276 |
281 | 277 |
282 if __name__ == '__main__': | 278 if __name__ == '__main__': |
283 main() | 279 main() |
OLD | NEW |