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

Side by Side Diff: build/android/gradle/generate_gradle.py

Issue 2667023002: Android: Add owned resources to android studio (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
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
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
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
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()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698