Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Generates an Android Studio project from a GN target.""" | 6 """Generates an Android Studio project from a GN target.""" |
| 7 | 7 |
| 8 import argparse | 8 import argparse |
| 9 import codecs | 9 import codecs |
| 10 import logging | 10 import logging |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 27 from util import build_utils | 27 from util import build_utils |
| 28 | 28 |
| 29 | 29 |
| 30 _DEFAULT_ANDROID_MANIFEST_PATH = os.path.join( | 30 _DEFAULT_ANDROID_MANIFEST_PATH = os.path.join( |
| 31 host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'AndroidManifest.xml') | 31 host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'AndroidManifest.xml') |
| 32 _FILE_DIR = os.path.dirname(__file__) | 32 _FILE_DIR = os.path.dirname(__file__) |
| 33 _JAVA_SUBDIR = 'symlinked-java' | 33 _JAVA_SUBDIR = 'symlinked-java' |
| 34 _SRCJARS_SUBDIR = 'extracted-srcjars' | 34 _SRCJARS_SUBDIR = 'extracted-srcjars' |
| 35 _JNI_LIBS_SUBDIR = 'symlinked-libs' | 35 _JNI_LIBS_SUBDIR = 'symlinked-libs' |
| 36 _ARMEABI_SUBDIR = 'armeabi' | 36 _ARMEABI_SUBDIR = 'armeabi' |
| 37 _RES_SUBDIR = 'extracted-res' | |
| 37 | 38 |
| 38 _DEFAULT_TARGETS = [ | 39 _DEFAULT_TARGETS = [ |
| 39 # TODO(agrieve): Requires alternate android.jar to compile. | 40 # TODO(agrieve): Requires alternate android.jar to compile. |
| 40 # '//android_webview:system_webview_apk', | 41 # '//android_webview:system_webview_apk', |
| 41 '//android_webview/test:android_webview_apk', | 42 '//android_webview/test:android_webview_apk', |
| 42 '//android_webview/test:android_webview_test_apk', | 43 '//android_webview/test:android_webview_test_apk', |
| 43 '//base:base_junit_tests', | 44 '//base:base_junit_tests', |
| 44 '//chrome/android:chrome_junit_tests', | 45 '//chrome/android:chrome_junit_tests', |
| 45 '//chrome/android:chrome_public_apk', | 46 '//chrome/android:chrome_public_apk', |
| 46 '//chrome/android:chrome_public_test_apk', | 47 '//chrome/android:chrome_public_test_apk', |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 205 | 206 |
| 206 def _GenJavaDirs(self, entry): | 207 def _GenJavaDirs(self, entry): |
| 207 java_dirs = _CreateJavaSourceDir( | 208 java_dirs = _CreateJavaSourceDir( |
| 208 constants.GetOutDirectory(), self.EntryOutputDir(entry), | 209 constants.GetOutDirectory(), self.EntryOutputDir(entry), |
| 209 entry.JavaFiles()) | 210 entry.JavaFiles()) |
| 210 if self.Srcjars(entry): | 211 if self.Srcjars(entry): |
| 211 java_dirs.append( | 212 java_dirs.append( |
| 212 os.path.join(self.EntryOutputDir(entry), _SRCJARS_SUBDIR)) | 213 os.path.join(self.EntryOutputDir(entry), _SRCJARS_SUBDIR)) |
| 213 return java_dirs | 214 return java_dirs |
| 214 | 215 |
| 216 def _GenResDirs(self, entry): | |
| 217 res_dirs = entry.DepsInfo().get('owned_resources_dirs', []) | |
|
agrieve
2017/02/01 19:24:12
nit: you're mutating the list that lives in the co
Peter Wen
2017/02/01 22:09:55
Done.
| |
| 218 zips = entry.DepsInfo().get('owned_resources_zips', []) | |
|
agrieve
2017/02/01 19:24:12
nit: don't need the default value of [] since you
Peter Wen
2017/02/01 22:09:54
Done.
| |
| 219 if zips: | |
| 220 res_dir = os.path.join(self.EntryOutputDir(entry), _RES_SUBDIR) | |
|
agrieve
2017/02/01 19:24:12
nit: add a comment that these are just for generat
Peter Wen
2017/02/01 22:09:55
Done.
| |
| 221 for zip_path in _RebasePath(zips): | |
| 222 logging.info('Extracting %s to %s', zip_path, res_dir) | |
|
agrieve
2017/02/01 19:24:12
maybe: Make a helper function for this and share i
Peter Wen
2017/02/01 22:09:55
Done.
| |
| 223 with zipfile.ZipFile(zip_path) as z: | |
| 224 z.extractall(res_dir) | |
| 225 res_dirs.append(res_dir) | |
| 226 return res_dirs | |
| 227 | |
| 215 def _Relativize(self, entry, paths): | 228 def _Relativize(self, entry, paths): |
| 216 return _RebasePath(paths, self.EntryOutputDir(entry)) | 229 return _RebasePath(paths, self.EntryOutputDir(entry)) |
| 217 | 230 |
| 218 def EntryOutputDir(self, entry): | 231 def EntryOutputDir(self, entry): |
| 219 return os.path.join(self.project_dir, entry.GradleSubdir()) | 232 return os.path.join(self.project_dir, entry.GradleSubdir()) |
| 220 | 233 |
| 221 def Srcjars(self, entry): | 234 def Srcjars(self, entry): |
| 222 srcjars = _RebasePath(entry.Gradle().get('bundled_srcjars', [])) | 235 srcjars = _RebasePath(entry.Gradle().get('bundled_srcjars', [])) |
| 223 if not self.use_gradle_process_resources: | 236 if not self.use_gradle_process_resources: |
| 224 srcjars += _RebasePath(entry.BuildConfig()['javac']['srcjars']) | 237 srcjars += _RebasePath(entry.BuildConfig()['javac']['srcjars']) |
| 225 return srcjars | 238 return srcjars |
| 226 | 239 |
| 227 def GeneratedInputs(self, entry): | 240 def GeneratedInputs(self, entry): |
| 228 generated_inputs = [] | 241 generated_inputs = [] |
| 229 generated_inputs.extend(self.Srcjars(entry)) | 242 generated_inputs.extend(self.Srcjars(entry)) |
| 230 generated_inputs.extend( | 243 generated_inputs.extend( |
| 231 p for p in entry.JavaFiles() if not p.startswith('..')) | 244 p for p in entry.JavaFiles() if not p.startswith('..')) |
| 232 generated_inputs.extend(entry.Gradle()['dependent_prebuilt_jars']) | 245 generated_inputs.extend(entry.Gradle()['dependent_prebuilt_jars']) |
| 233 return generated_inputs | 246 return generated_inputs |
| 234 | 247 |
| 235 def Generate(self, entry): | 248 def Generate(self, entry): |
| 236 variables = {} | 249 variables = {} |
| 237 android_test_manifest = entry.Gradle().get( | 250 android_test_manifest = entry.Gradle().get( |
| 238 'android_manifest', _DEFAULT_ANDROID_MANIFEST_PATH) | 251 'android_manifest', _DEFAULT_ANDROID_MANIFEST_PATH) |
| 239 variables['android_manifest'] = self._Relativize( | 252 variables['android_manifest'] = self._Relativize( |
| 240 entry, android_test_manifest) | 253 entry, android_test_manifest) |
| 241 variables['java_dirs'] = self._Relativize(entry, self._GenJavaDirs(entry)) | 254 variables['java_dirs'] = self._Relativize(entry, self._GenJavaDirs(entry)) |
| 242 variables['jni_libs'] = self._Relativize(entry, self._GenJniLibs(entry)) | 255 variables['jni_libs'] = self._Relativize(entry, self._GenJniLibs(entry)) |
| 256 variables['res_dirs'] = self._Relativize(entry, self._GenResDirs(entry)) | |
| 243 deps = [_ProjectEntry.FromBuildConfigPath(p) | 257 deps = [_ProjectEntry.FromBuildConfigPath(p) |
| 244 for p in entry.Gradle()['dependent_android_projects']] | 258 for p in entry.Gradle()['dependent_android_projects']] |
| 245 variables['android_project_deps'] = [d.ProjectName() for d in deps] | 259 variables['android_project_deps'] = [d.ProjectName() for d in deps] |
| 246 # TODO(agrieve): Add an option to use interface jars and see if that speeds | 260 # TODO(agrieve): Add an option to use interface jars and see if that speeds |
| 247 # things up at all. | 261 # things up at all. |
| 248 variables['prebuilts'] = self._Relativize( | 262 variables['prebuilts'] = self._Relativize( |
| 249 entry, entry.Gradle()['dependent_prebuilt_jars']) | 263 entry, entry.Gradle()['dependent_prebuilt_jars']) |
| 250 deps = [_ProjectEntry.FromBuildConfigPath(p) | 264 deps = [_ProjectEntry.FromBuildConfigPath(p) |
| 251 for p in entry.Gradle()['dependent_java_projects']] | 265 for p in entry.Gradle()['dependent_java_projects']] |
| 252 variables['java_project_deps'] = [d.ProjectName() for d in deps] | 266 variables['java_project_deps'] = [d.ProjectName() for d in deps] |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 590 _ExtractSrcjars(generator.project_dir, srcjar_tuples) | 604 _ExtractSrcjars(generator.project_dir, srcjar_tuples) |
| 591 | 605 |
| 592 logging.warning('Project created! (%d subprojects)', len(project_entries)) | 606 logging.warning('Project created! (%d subprojects)', len(project_entries)) |
| 593 logging.warning('Generated projects work best with Android Studio 2.2') | 607 logging.warning('Generated projects work best with Android Studio 2.2') |
| 594 logging.warning('For more tips: https://chromium.googlesource.com/chromium' | 608 logging.warning('For more tips: https://chromium.googlesource.com/chromium' |
| 595 '/src.git/+/master/docs/android_studio.md') | 609 '/src.git/+/master/docs/android_studio.md') |
| 596 | 610 |
| 597 | 611 |
| 598 if __name__ == '__main__': | 612 if __name__ == '__main__': |
| 599 main() | 613 main() |
| OLD | NEW |