Commit ca6b5d0f authored by mkosiba@chromium.org's avatar mkosiba@chromium.org

JarJar resources when building the android_webview.

The android_webview build will require there only be
a single R class (details in bug).
This change makes the necessary changes to the build
infrastructure for this to happen but the actual swap
to building the webview this way will land as a subsequent
CL.

BUG=387155
build-only change, all trybots compile fine.
NOTRY=true

Review URL: https://codereview.chromium.org/255613003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278849 0039d316-1c4b-4281-b951-d872f2087c98
parent e3fd0bd1
...@@ -13,73 +13,37 @@ LOCAL_MODULE := android_webview_java ...@@ -13,73 +13,37 @@ LOCAL_MODULE := android_webview_java
LOCAL_MODULE_TAGS := optional LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, java/src) include $(LOCAL_PATH)/java_library_common.mk
# resource glue layer # resource glue layer
LOCAL_SRC_FILES += \ LOCAL_SRC_FILES += \
$(call all-java-files-under, ../content/public/android/java/resource_map) \ $(call all-java-files-under, ../content/public/android/java/resource_map) \
$(call all-java-files-under, ../ui/android/java/resource_map) \ $(call all-java-files-under, ../ui/android/java/resource_map) \
# contentview and its dependencies
LOCAL_AIDL_INCLUDES := \
$(LOCAL_PATH)/../content/public/android/java/src \
$(LOCAL_PATH)/../net/android/java/src \
$(LOCAL_PATH)/../third_party/eyesfree/src/android/java/src
LOCAL_SRC_FILES += \
$(call all-java-files-under, ../content/public/android/java/src) \
../content/public/android/java/src/org/chromium/content/common/IChildProcessCallback.aidl \
../content/public/android/java/src/org/chromium/content/common/IChildProcessService.aidl \
../net/android/java/src/org/chromium/net/IRemoteAndroidKeyStoreCallbacks.aidl \
../net/android/java/src/org/chromium/net/IRemoteAndroidKeyStore.aidl \
$(call all-java-files-under, ../base/android/java/src) \
$(call all-java-files-under, ../media/base/android/java/src) \
$(call all-java-files-under, ../net/android/java/src) \
$(call all-java-files-under, ../ui/android/java/src) \
$(call all-java-files-under, ../third_party/eyesfree/src/android/java/src) \
$(call all-Iaidl-files-under, ../third_party/eyesfree/src/android/java/src)
# browser components
LOCAL_SRC_FILES += \
$(call all-java-files-under, \
../components/web_contents_delegate_android/android/java/src) \
$(call all-java-files-under, \
../components/navigation_interception/android/java/src) \
# This directory includes .java files that are generated by the normal gyp build, but are checked in
# for the Android build.
# TODO(torne, cjhopman): Consider removing this.
LOCAL_SRC_FILES += \
$(call all-java-files-under, java/generated_src)
# Java files generated from .template rules. This list should match list of java dependencies in
# android_webview/all_webview.gyp
# TODO(torne): remove TARGET_2ND_ARCH here once we're no longer 64-bit blacklisted in the Android
# build system. http://crbug.com/358141
LOCAL_GENERATED_SOURCES := \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/base/ApplicationState.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/base/MemoryPressureLevelList.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/GestureEventType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/PageTransitionTypes.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/SpeechRecognitionError.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/input/CanonicalAxisIndex.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/input/CanonicalButtonIndex.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/input/PopupItemType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/common/ResultCodes.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/common/ScreenOrientationValues.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/media/ImageFormat.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/CertificateMimeType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/CertVerifyStatusAndroid.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/NetError.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/PrivateKeyType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/ui/WindowOpenDisposition.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/ui/gfx/BitmapFormat.java \
# content dependencies on java components that are provided by the system on
# android
LOCAL_STATIC_JAVA_LIBRARIES += jsr305 guava
include $(BUILD_STATIC_JAVA_LIBRARY) include $(BUILD_STATIC_JAVA_LIBRARY)
########################################################
# This is intended to replace android_webview_java once the Android side of
# the code that uses the WebView is updated. In the transition period the
# goal of having this here is to make sure the new build isn't broken.
include $(CLEAR_VARS)
LOCAL_MODULE := android_webview_java_with_new_resources
LOCAL_MODULE_TAGS := optional
# Depend on the android_webview_strings target to ensure the grd->string.xml
# processing takes place.
LOCAL_ADDITIONAL_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,android_webview_resources,,,$(TARGET_2ND_ARCH))/android_webview_resources.stamp
include $(LOCAL_PATH)/java_library_common.mk
# resources
include $(LOCAL_PATH)/build/resources_config.mk
LOCAL_FULL_MANIFEST_FILE := $(android_webview_manifest_file)
LOCAL_RESOURCE_DIR := $(android_webview_resources_dirs)
LOCAL_AAPT_FLAGS := $(android_webview_aapt_flags)
include $(BUILD_STATIC_JAVA_LIBRARY)
######################################################## ########################################################
# These packages are the resource paks used by webview. # These packages are the resource paks used by webview.
......
...@@ -266,12 +266,34 @@ ...@@ -266,12 +266,34 @@
}, { # android_webview_build==1 }, { # android_webview_build==1
'targets': [ 'targets': [
{ {
'target_name': 'android_webview_strings', 'target_name': 'android_webview_jarjar_ui_resources',
'android_unmangled_name': 1,
'type': 'none',
'variables': {
'res_dir': '../ui/android/java/res',
'rules_file': '../android_webview/build/jarjar-rules.txt',
},
'includes': ['../android_webview/build/jarjar_resources.gypi'],
},
{
'target_name': 'android_webview_jarjar_content_resources',
'android_unmangled_name': 1,
'type': 'none',
'variables': {
'res_dir': '../content/public/android/java/res',
'rules_file': '../android_webview/build/jarjar-rules.txt',
},
'includes': ['../android_webview/build/jarjar_resources.gypi'],
},
{
'target_name': 'android_webview_resources',
'type': 'none', 'type': 'none',
'android_unmangled_name': 1, 'android_unmangled_name': 1,
'dependencies': [ 'dependencies': [
'../content/content.gyp:content_strings_grd', '../content/content.gyp:content_strings_grd',
'../ui/android/ui_android.gyp:ui_strings_grd', '../ui/android/ui_android.gyp:ui_strings_grd',
'android_webview_jarjar_ui_resources',
'android_webview_jarjar_content_resources'
], ],
}, },
], ],
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.webview.chromium">
</manifest>
# Copyright 2014 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.
#
# This file is meant to be included into a target to provide a rule
# to run the equivalent of jarjar on Java resources (layout.xml files).
#
# To use this, create a gyp target with the following form:
# {
# 'target_name': 'my-package_java',
# 'type': 'none',
# 'variables': {
# 'java_in_dir': 'path/to/package/root',
# },
# 'includes': ['path/to/this/gypi/file'],
# }
#
# Required variables:
# res_dir - The top-level resources folder.
# rules_file - Path to the file containing jar-jar rules.
{
'variables': {
'intermediate_dir': '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)',
'jarjar_stamp': '<(intermediate_dir)/jarjar_resources.stamp',
'resource_input_paths': ['<!@(find <(res_dir) -type f)'],
},
'actions': [{
'action_name': 'jarjar resources',
'message': 'Copying and jar-jaring resources for <(_target_name)',
'variables': {
'out_dir': '<(intermediate_dir)/jarjar_res',
},
'inputs': [
'<(DEPTH)/build/android/gyp/util/build_utils.py',
'<(DEPTH)/build/android/gyp/jarjar_resources.py',
'>@(resource_input_paths)',
],
'outputs': [
'<(jarjar_stamp)',
],
'action': [
'python', '../build/android/gyp/jarjar_resources.py',
'--input-dir', '<(res_dir)',
'--output-dir', '<(out_dir)',
'--rules-path', '<(rules_file)',
'--stamp', '<(jarjar_stamp)',
]
}],
}
# Copyright 2014 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.
android_webview_manifest_file := $(call my-dir)/AndroidManifest.xml
# resources
android_webview_resources_dirs := \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/android_webview_jarjar_content_resources/jarjar_res \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/android_webview_jarjar_ui_resources/jarjar_res \
$(call intermediates-dir-for,GYP,ui_strings_grd,,,$(TARGET_2ND_ARCH))/ui_strings_grd/res_grit \
$(call intermediates-dir-for,GYP,content_strings_grd,,,$(TARGET_2ND_ARCH))/content_strings_grd/res_grit
android_webview_aapt_flags := --auto-add-overlay
android_webview_aapt_flags += --custom-package com.android.webview.chromium
android_webview_aapt_flags += --extra-packages org.chromium.ui
android_webview_aapt_flags += --extra-packages org.chromium.content
# Copyright 2014 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.
LOCAL_SRC_FILES := $(call all-java-files-under, java/src)
# contentview and its dependencies
LOCAL_AIDL_INCLUDES := \
$(LOCAL_PATH)/../content/public/android/java/src \
$(LOCAL_PATH)/../net/android/java/src \
$(LOCAL_PATH)/../third_party/eyesfree/src/android/java/src
LOCAL_SRC_FILES += \
$(call all-java-files-under, ../content/public/android/java/src) \
../content/public/android/java/src/org/chromium/content/common/IChildProcessCallback.aidl \
../content/public/android/java/src/org/chromium/content/common/IChildProcessService.aidl \
../net/android/java/src/org/chromium/net/IRemoteAndroidKeyStoreCallbacks.aidl \
../net/android/java/src/org/chromium/net/IRemoteAndroidKeyStore.aidl \
$(call all-java-files-under, ../base/android/java/src) \
$(call all-java-files-under, ../media/base/android/java/src) \
$(call all-java-files-under, ../net/android/java/src) \
$(call all-java-files-under, ../ui/android/java/src) \
$(call all-java-files-under, ../third_party/eyesfree/src/android/java/src) \
$(call all-Iaidl-files-under, ../third_party/eyesfree/src/android/java/src)
# browser components
LOCAL_SRC_FILES += \
$(call all-java-files-under, \
../components/web_contents_delegate_android/android/java/src) \
$(call all-java-files-under, \
../components/navigation_interception/android/java/src) \
# This directory includes .java files that are generated by the normal gyp build, but are checked in
# for the Android build.
# TODO(torne, cjhopman): Consider removing this.
LOCAL_SRC_FILES += \
$(call all-java-files-under, java/generated_src)
# Java files generated from .template rules. This list should match list of java dependencies in
# android_webview/all_webview.gyp
# TODO(torne): remove TARGET_2ND_ARCH here once we're no longer 64-bit blacklisted in the Android
# build system. http://crbug.com/358141
LOCAL_GENERATED_SOURCES := \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/base/ApplicationState.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/base/MemoryPressureLevelList.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/GestureEventType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/PageTransitionTypes.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/SpeechRecognitionError.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/input/CanonicalAxisIndex.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/input/CanonicalButtonIndex.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/browser/input/PopupItemType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/common/ResultCodes.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/content/common/ScreenOrientationValues.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/media/ImageFormat.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/CertificateMimeType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/CertVerifyStatusAndroid.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/NetError.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/net/PrivateKeyType.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/ui/WindowOpenDisposition.java \
$(call intermediates-dir-for,GYP,shared,,,$(TARGET_2ND_ARCH))/templates/org/chromium/ui/gfx/BitmapFormat.java \
# content dependencies on java components that are provided by the system on
# android
LOCAL_STATIC_JAVA_LIBRARIES += jsr305 guava
...@@ -337,8 +337,11 @@ class JniParams(object): ...@@ -337,8 +337,11 @@ class JniParams(object):
def RemapClassName(class_name): def RemapClassName(class_name):
"""Remaps class names using the jarjar mapping table.""" """Remaps class names using the jarjar mapping table."""
for old, new in JniParams._remappings: for old, new in JniParams._remappings:
if old in class_name: if old.endswith('**') and old[:-2] in class_name:
return class_name.replace(old[:-2], new, 1)
if '*' not in old and class_name.endswith(old):
return class_name.replace(old, new, 1) return class_name.replace(old, new, 1)
return class_name return class_name
@staticmethod @staticmethod
...@@ -346,17 +349,26 @@ class JniParams(object): ...@@ -346,17 +349,26 @@ class JniParams(object):
"""Parse jarjar mappings from a string.""" """Parse jarjar mappings from a string."""
JniParams._remappings = [] JniParams._remappings = []
for line in mappings.splitlines(): for line in mappings.splitlines():
keyword, src, dest = line.split() rule = line.split()
if keyword != 'rule': if rule[0] != 'rule':
continue continue
assert src.endswith('.**') _, src, dest = rule
src = src[:-2].replace('.', '/') src = src.replace('.', '/')
dest = dest.replace('.', '/') dest = dest.replace('.', '/')
if dest.endswith('@0'): if src.endswith('**'):
JniParams._remappings.append((src, dest[:-2] + src)) src_real_name = src[:-2]
else: else:
assert dest.endswith('@1') assert not '*' in src
src_real_name = src
if dest.endswith('@0'):
JniParams._remappings.append((src, dest[:-2] + src_real_name))
elif dest.endswith('@1'):
assert '**' in src
JniParams._remappings.append((src, dest[:-2])) JniParams._remappings.append((src, dest[:-2]))
else:
assert not '@' in dest
JniParams._remappings.append((src, dest))
def ExtractJNINamespace(contents): def ExtractJNINamespace(contents):
......
...@@ -837,13 +837,22 @@ public boolean add(E); ...@@ -837,13 +837,22 @@ public boolean add(E);
import org.chromium.example2.Test; import org.chromium.example2.Test;
import org.chromium.example3.PrefixFoo;
import org.chromium.example3.Prefix;
import org.chromium.example3.Bar$Inner;
class Example { class Example {
private static native void nativeTest(Test t); private static native void nativeTest(Test t);
private static native void nativeTest2(PrefixFoo t);
private static native void nativeTest3(Prefix t);
private static native void nativeTest4(Bar$Inner t);
} }
""" """
jni_generator.JniParams.SetJarJarMappings( jni_generator.JniParams.SetJarJarMappings(
"""rule org.chromium.example.** com.test.@1 """rule org.chromium.example.** com.test.@1
rule org.chromium.example2.** org.test2.@0""") rule org.chromium.example2.** org.test2.@1
rule org.chromium.example3.Prefix org.test3.Test
rule org.chromium.example3.Bar$** org.test3.TestBar$@1""")
jni_from_java = jni_generator.JNIFromJavaSource( jni_from_java = jni_generator.JNIFromJavaSource(
test_data, 'org/chromium/example/jni_generator/Example', TestOptions()) test_data, 'org/chromium/example/jni_generator/Example', TestOptions())
jni_generator.JniParams.SetJarJarMappings('') jni_generator.JniParams.SetJarJarMappings('')
......
...@@ -27,6 +27,15 @@ jclass g_Example_clazz = NULL; ...@@ -27,6 +27,15 @@ jclass g_Example_clazz = NULL;
static void Test(JNIEnv* env, jclass jcaller, static void Test(JNIEnv* env, jclass jcaller,
jobject t); jobject t);
static void Test2(JNIEnv* env, jclass jcaller,
jobject t);
static void Test3(JNIEnv* env, jclass jcaller,
jobject t);
static void Test4(JNIEnv* env, jclass jcaller,
jobject t);
// Step 2: method stubs. // Step 2: method stubs.
// Step 3: RegisterNatives. // Step 3: RegisterNatives.
...@@ -34,9 +43,24 @@ static void Test(JNIEnv* env, jclass jcaller, ...@@ -34,9 +43,24 @@ static void Test(JNIEnv* env, jclass jcaller,
static const JNINativeMethod kMethodsExample[] = { static const JNINativeMethod kMethodsExample[] = {
{ "nativeTest", { "nativeTest",
"(" "("
"Lorg/test2/org/chromium/example2/Test;" "Lorg/test2/Test;"
")" ")"
"V", reinterpret_cast<void*>(Test) }, "V", reinterpret_cast<void*>(Test) },
{ "nativeTest2",
"("
"Lorg/chromium/example3/PrefixFoo;"
")"
"V", reinterpret_cast<void*>(Test2) },
{ "nativeTest3",
"("
"Lorg/test3/Test;"
")"
"V", reinterpret_cast<void*>(Test3) },
{ "nativeTest4",
"("
"Lorg/test3/TestBar$Inner;"
")"
"V", reinterpret_cast<void*>(Test4) },
}; };
static bool RegisterNativesImpl(JNIEnv* env) { static bool RegisterNativesImpl(JNIEnv* env) {
......
#!/usr/bin/env python
# Copyright 2014 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.
"""Transforms direct Java class references in Android layout .xml files
according to the specified JarJar rules."""
import optparse
import os
import shutil
import sys
from xml.dom import minidom
from util import build_utils
class JarJarRules(object):
def __init__(self, jarjar_rules):
self._rules = []
for line in jarjar_rules.splitlines():
rule = line.split()
if rule[0] != 'rule':
continue
_, src, dest = rule
if src.endswith('**'):
src_real_name = src[:-2]
else:
assert not '*' in src
src_real_name = src
if dest.endswith('@0'):
self._rules.append((src, dest[:-2] + src_real_name))
elif dest.endswith('@1'):
assert '**' in src
self._rules.append((src, dest[:-2]))
else:
assert not '@' in dest
self._rules.append((src, dest))
def RenameClass(self, class_name):
for old, new in self._rules:
if old.endswith('**') and old[:-2] in class_name:
return class_name.replace(old[:-2], new, 1)
if '*' not in old and class_name.endswith(old):
return class_name.replace(old, new, 1)
return class_name
def RenameNodes(node, rules):
if node.nodeType == node.ELEMENT_NODE:
if node.tagName.lower() == 'view' and node.attributes.has_key('class'):
node.attributes['class'] = rules.RenameClass(node.attributes['class'])
else:
node.tagName = rules.RenameClass(node.tagName)
for child in node.childNodes:
RenameNodes(child, rules)
def ProcessLayoutFile(path, rules):
xmldoc = minidom.parse(path)
RenameNodes(xmldoc.documentElement, rules)
with open(path, 'w') as f:
xmldoc.writexml(f)
def LayoutFilesFilter(src, names):
if os.path.basename(src).lower() != 'layout':
return []
else:
return filter(lambda n: n.endswith('.xml'), names)
def ProcessResources(options):
with open(options.rules_path) as f:
rules = JarJarRules(f.read())
build_utils.DeleteDirectory(options.output_dir)
for input_dir in options.input_dir:
shutil.copytree(input_dir, options.output_dir)
for root, _dirnames, filenames in os.walk(options.output_dir):
layout_files = LayoutFilesFilter(root, filenames)
for layout_file in layout_files:
ProcessLayoutFile(os.path.join(root, layout_file), rules)
def ParseArgs():
parser = optparse.OptionParser()
parser.add_option('--input-dir', action='append',
help='Path to the resources folder to process.')
parser.add_option('--output-dir',
help=('Directory to hold processed resources. Note: the ' +
'directory will be clobbered on every invocation.'))
parser.add_option('--rules-path',
help='Path to the jarjar rules file.')
parser.add_option('--stamp', help='Path to touch on success.')
options, args = parser.parse_args()
if args:
parser.error('No positional arguments should be given.')
# Check that required options have been provided.
required_options = ('input_dir', 'output_dir', 'rules_path')
build_utils.CheckOptions(options, parser, required=required_options)
return options
def main():
options = ParseArgs()
ProcessResources(options)
if options.stamp:
build_utils.Touch(options.stamp)
if __name__ == '__main__':
sys.exit(main())
...@@ -412,6 +412,8 @@ ...@@ -412,6 +412,8 @@
}, },
{ {
'target_name': 'content_strings_grd', 'target_name': 'content_strings_grd',
# The android_webview/Android.mk file depends on this target directly.
'android_unmangled_name': 1,
'type': 'none', 'type': 'none',
'variables': { 'variables': {
'grd_file': '../content/public/android/java/strings/android_content_strings.grd', 'grd_file': '../content/public/android/java/strings/android_content_strings.grd',
......
...@@ -50,6 +50,8 @@ ...@@ -50,6 +50,8 @@
}, },
{ {
'target_name': 'ui_strings_grd', 'target_name': 'ui_strings_grd',
# The android_webview/Android.mk file depends on this target directly.
'android_unmangled_name': 1,
'type': 'none', 'type': 'none',
'variables': { 'variables': {
'grd_file': '../../ui/android/java/strings/android_ui_strings.grd', 'grd_file': '../../ui/android/java/strings/android_ui_strings.grd',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment