Add support for proguard preprocessing.
* Adds support for running proguard on our libraries before they are added to the final release APK. * Start using the proguard preprocessing for third_party/guava. BUG=272790 NOTRY=true TBR=darin@chromium.org Review URL: https://chromiumcodereview.appspot.com/23213002 git-svn-id: http://src.chromium.org/svn/trunk/src/build@217706 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This commit is contained in:
Родитель
157740f828
Коммит
819b1a6f40
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright 2013 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.
|
||||
|
||||
import fnmatch
|
||||
import optparse
|
||||
import os
|
||||
import sys
|
||||
|
||||
from util import build_utils
|
||||
|
||||
def DoProguard(options):
|
||||
injars = options.input_path
|
||||
outjars = options.output_path
|
||||
classpath = build_utils.ParseGypList(options.classpath)
|
||||
classpath = list(set(classpath))
|
||||
libraryjars = ':'.join(classpath)
|
||||
# proguard does its own dependency checking, which can be avoided by deleting
|
||||
# the output.
|
||||
if os.path.exists(options.output_path):
|
||||
os.remove(options.output_path)
|
||||
proguard_cmd = [options.proguard_path,
|
||||
'-injars', injars,
|
||||
'-outjars', outjars,
|
||||
'-libraryjars', libraryjars,
|
||||
'@' + options.proguard_config]
|
||||
build_utils.CheckCallDie(proguard_cmd)
|
||||
|
||||
def main(argv):
|
||||
parser = optparse.OptionParser()
|
||||
parser.add_option('--proguard-path',
|
||||
help='Path to the proguard executable.')
|
||||
parser.add_option('--input-path',
|
||||
help='Path to the .jar file proguard should run on.')
|
||||
parser.add_option('--output-path', help='Path to the generated .jar file.')
|
||||
parser.add_option('--proguard-config',
|
||||
help='Path to the proguard configuration file.')
|
||||
parser.add_option('--classpath', help="Classpath for proguard.")
|
||||
parser.add_option('--stamp', help='Path to touch on success.')
|
||||
|
||||
# TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
|
||||
parser.add_option('--ignore', help='Ignored.')
|
||||
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
DoProguard(options)
|
||||
|
||||
if options.stamp:
|
||||
build_utils.Touch(options.stamp)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
48
java.gypi
48
java.gypi
|
@ -70,6 +70,21 @@
|
|||
'intermediate_dir': '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)',
|
||||
'classes_dir': '<(intermediate_dir)/classes',
|
||||
'compile_stamp': '<(intermediate_dir)/compile.stamp',
|
||||
'proguard_config%': '',
|
||||
'proguard_preprocess%': '0',
|
||||
'variables': {
|
||||
'variables': {
|
||||
'proguard_preprocess%': 0,
|
||||
},
|
||||
'conditions': [
|
||||
['proguard_preprocess == 1', {
|
||||
'javac_jar_path': '<(intermediate_dir)/<(_target_name).pre.jar'
|
||||
}, {
|
||||
'javac_jar_path': '<(PRODUCT_DIR)/lib.java/<(jar_name)'
|
||||
}],
|
||||
],
|
||||
},
|
||||
'javac_jar_path': '<(javac_jar_path)',
|
||||
},
|
||||
# This all_dependent_settings is used for java targets only. This will add the
|
||||
# jar path to the classpath of dependent java targets.
|
||||
|
@ -218,6 +233,35 @@
|
|||
},
|
||||
],
|
||||
}],
|
||||
['proguard_preprocess == 1', {
|
||||
'actions': [
|
||||
{
|
||||
'action_name': 'proguard_<(_target_name)',
|
||||
'message': 'Proguard preprocessing <(_target_name) jar',
|
||||
'inputs': [
|
||||
'<(android_sdk_root)/tools/proguard/bin/proguard.sh',
|
||||
'<(DEPTH)/build/android/gyp/util/build_utils.py',
|
||||
'<(DEPTH)/build/android/gyp/proguard.py',
|
||||
'<(javac_jar_path)',
|
||||
'<(proguard_config)',
|
||||
],
|
||||
'outputs': [
|
||||
'<(jar_path)',
|
||||
],
|
||||
'action': [
|
||||
'python', '<(DEPTH)/build/android/gyp/proguard.py',
|
||||
'--proguard-path=<(android_sdk_root)/tools/proguard/bin/proguard.sh',
|
||||
'--input-path=<(javac_jar_path)',
|
||||
'--output-path=<(jar_path)',
|
||||
'--proguard-config=<(proguard_config)',
|
||||
'--classpath=<(android_sdk_jar) >(input_jars_paths)',
|
||||
|
||||
# TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
|
||||
'--ignore=>!(echo \'>(_inputs)\' | md5sum)',
|
||||
]
|
||||
},
|
||||
],
|
||||
}],
|
||||
],
|
||||
'actions': [
|
||||
{
|
||||
|
@ -263,12 +307,12 @@
|
|||
'<(compile_stamp)',
|
||||
],
|
||||
'outputs': [
|
||||
'<(jar_path)',
|
||||
'<(javac_jar_path)',
|
||||
],
|
||||
'action': [
|
||||
'python', '<(DEPTH)/build/android/gyp/jar.py',
|
||||
'--classes-dir=<(classes_dir)',
|
||||
'--jar-path=<(jar_path)',
|
||||
'--jar-path=<(javac_jar_path)',
|
||||
'--excluded-classes=<(jar_excluded_classes)',
|
||||
|
||||
# TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
|
||||
|
|
Загрузка…
Ссылка в новой задаче