diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..2230ac7
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,3 @@
+build = [
+    "NativeCode.bp",
+]
diff --git a/Android.mk b/Android.mk
index 3c25583..1427f4b 100644
--- a/Android.mk
+++ b/Android.mk
@@ -29,11 +29,6 @@
 include $(LOCAL_PATH)/JavaLibrary.mk
 
 #
-# Include the definitions to build the native code.
-#
-
-include $(LOCAL_PATH)/NativeCode.mk
-
 # Disable test modules if LIBCORE_SKIP_TESTS environment variable is set.
 #
 
diff --git a/NativeCode.bp b/NativeCode.bp
new file mode 100644
index 0000000..3b63072
--- /dev/null
+++ b/NativeCode.bp
@@ -0,0 +1,205 @@
+// Copyright (C) 2007 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// Definitions for building the native code needed for the core library.
+//
+
+// Defaults that apply to all of the modules
+cc_defaults {
+    name: "core_native_defaults",
+    host_supported: true,
+    local_include_dirs: ["include"],
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+    ],
+    cppflags = ["-DU_USING_ICU_NAMESPACE=0"],
+
+    static_libs: [
+        "libbase",
+        "libfdlibm",
+    ],
+
+    shared_libs: [
+        "liblog",
+        "libnativehelper",
+    ],
+
+    host_ldlibs: [
+        "-ldl",
+        "-lpthread",
+    ],
+
+    target: {
+        linux: {
+            host_ldlibs: ["-lrt"],
+        },
+        darwin: {
+            enabled: false,
+        },
+    },
+}
+
+cc_library_shared {
+    name: "libjavacore",
+    defaults: ["core_native_defaults"],
+    srcs: [
+        ":luni_native_srcs",
+        "dalvik/src/main/native/org_apache_harmony_dalvik_NativeTestTarget.cpp"
+    ],
+
+    shared_libs: [
+        "libcrypto",
+        "libexpat",
+        "libicuuc",
+        "libicui18n",
+        "libnativehelper",
+    ],
+    static_libs: [
+        "libziparchive",
+        "libbase",
+    ],
+    target: {
+        android: {
+            shared_libs: [
+                "libutils",
+                "libz",
+            ],
+        },
+        host: {
+            shared_libs: [
+                "libz-host",
+            ],
+        },
+    },
+}
+
+cc_defaults {
+    name: "libopenjdk_native_defaults",
+    defaults: ["core_native_defaults"],
+    srcs: [":libopenjdk_native_srcs"],
+    cflags: [
+        // TODO(narayan): Prune down this list of exclusions once the underlying
+        // issues have been fixed. Most of these are small changes except for
+        // -Wunused-parameter.
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-Wno-parentheses-equality",
+        "-Wno-constant-logical-operand",
+        "-Wno-sometimes-uninitialized",
+
+        // TODO(http://b/64362645): remove when upstream replaces readdir_r with readdir.
+        "-Wno-deprecated-declarations",
+    ],
+
+    shared_libs: [
+        "libcrypto",
+        "libicuuc",
+        "libssl",
+
+        "libnativehelper",
+    ],
+    static_libs: ["libfdlibm"],
+
+    target: {
+        linux: {
+            cflags: [ // Sigh.
+                "-D_LARGEFILE64_SOURCE",
+                "-D_GNU_SOURCE",
+                "-DLINUX",
+                "-D__GLIBC__",
+            ],
+        },
+        android: {
+            shared_libs: ["libz"],
+        },
+        host: {
+            shared_libs: ["libz-host"],
+        },
+    },
+
+    notice: "ojluni/NOTICE",
+}
+
+cc_library_shared {
+    name: "libopenjdk",
+    defaults: ["libopenjdk_native_defaults"],
+    shared_libs: [
+        "libopenjdkjvm",
+    ],
+}
+
+// Debug version of libopenjdk. Depends on libopenjdkjvmd.
+cc_library_shared {
+    name: "libopenjdkd",
+    defaults: ["libopenjdk_native_defaults"],
+    shared_libs: [
+        "libopenjdkjvmd",
+    ],
+}
+
+// Test JNI library.
+cc_library_shared {
+    name: "libjavacoretests",
+    defaults: ["core_native_defaults"],
+    host_supported:true,
+
+    srcs: [
+        "luni/src/test/native/dalvik_system_JniTest.cpp",
+        "luni/src/test/native/libcore_java_io_FileTest.cpp",
+        "luni/src/test/native/libcore_java_lang_ThreadTest.cpp",
+        "luni/src/test/native/libcore_java_nio_BufferTest.cpp",
+        "luni/src/test/native/libcore_util_NativeAllocationRegistryTest.cpp",
+    ],
+    target: {
+        android: {
+            shared_libs: ["libnativehelper_compat_libc++"],
+        },
+    },
+
+    strip: {
+        keep_symbols: true,
+    },
+}
+
+// Set of gtest unit tests.
+cc_test {
+    name: "libjavacore-unit-tests",
+    defaults: ["core_native_defaults"],
+
+    // Add -fno-builtin so that the compiler doesn't attempt to inline
+    // memcpy calls that are not really aligned.
+    cflags: ["-fno-builtin"],
+    srcs: ["luni/src/test/native/libcore_io_Memory_test.cpp"],
+
+    shared_libs: ["libnativehelper"],
+}
+
+// Set of benchmarks for libjavacore functions.
+cc_benchmark {
+    name: "libjavacore-benchmarks",
+    defaults: ["core_native_defaults"],
+
+    srcs: ["luni/src/benchmark/native/libcore_io_Memory_bench.cpp"],
+    test_suites: ["device-tests"],
+
+    shared_libs: ["libnativehelper"],
+}
+
+subdirs = [
+    "luni/src/main/native",
+    "ojluni/src/main/native",
+]
diff --git a/NativeCode.mk b/NativeCode.mk
deleted file mode 100644
index cedc69b..0000000
--- a/NativeCode.mk
+++ /dev/null
@@ -1,293 +0,0 @@
-# -*- mode: makefile -*-
-# Copyright (C) 2007 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# Definitions for building the native code needed for the core library.
-#
-
-#
-# Common definitions for host and target.
-#
-
-# These two definitions are used to help sanity check what's put in
-# sub.mk. See, the "error" directives immediately below.
-core_magic_local_target := ...//::default:://...
-core_local_path := $(LOCAL_PATH)
-
-# Include a submakefile, resolve its source file locations,
-# and stick them on core_src_files.  The submakefiles are
-# free to append to LOCAL_SRC_FILES, LOCAL_C_INCLUDES,
-# LOCAL_SHARED_LIBRARIES, or LOCAL_STATIC_LIBRARIES, but nothing
-# else. All other LOCAL_* variables will be ignored.
-#
-# $(1): directory containing the makefile to include
-define include-core-native-dir
-    LOCAL_SRC_FILES :=
-    include $(LOCAL_PATH)/$(1)/sub.mk
-    ifneq ($$(LOCAL_MODULE),$(core_magic_local_target))
-        $$(error $(LOCAL_PATH)/$(1)/sub.mk should not include CLEAR_VARS \
-            or define LOCAL_MODULE)
-    endif
-    ifneq ($$(LOCAL_PATH),$(core_local_path))
-        $$(error $(LOCAL_PATH)/$(1)/sub.mk should not define LOCAL_PATH)
-    endif
-    core_src_files += $$(addprefix $(1)/,$$(LOCAL_SRC_FILES))
-    LOCAL_SRC_FILES :=
-endef
-
-define include-openjdk-native-dir
-    LOCAL_SRC_FILES :=
-    include $(LOCAL_PATH)/$(1)/openjdksub.mk
-    openjdk_core_src_files += $$(addprefix $(1)/,$$(LOCAL_SRC_FILES))
-    LOCAL_SRC_FILES :=
-endef
-
-# Set up the default state. Note: We use CLEAR_VARS here, even though
-# we aren't quite defining a new rule yet, to make sure that the
-# sub.mk files don't see anything stray from the last rule that was
-# set up.
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := $(core_magic_local_target)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-core_src_files :=
-openjdk_core_src_files :=
-
-#Include the sub.mk for openjdk.
-$(foreach dir, \
-    ojluni/src/main/native, \
-    $(eval $(call include-openjdk-native-dir,$(dir))))
-
-# Include the sub.mk files.
-$(foreach dir, \
-    dalvik/src/main/native luni/src/main/native, \
-    $(eval $(call include-core-native-dir,$(dir))))
-
-# Extract out the allowed LOCAL_* variables.
-core_c_includes := libcore/include $(LOCAL_C_INCLUDES)
-core_shared_libraries := $(LOCAL_SHARED_LIBRARIES)
-core_static_libraries := $(LOCAL_STATIC_LIBRARIES)
-libart_cflags := $(LOCAL_CFLAGS) -Wall -Wextra -Werror
-core_cppflags += -DU_USING_ICU_NAMESPACE=0
-# TODO(narayan): Prune down this list of exclusions once the underlying
-# issues have been fixed. Most of these are small changes except for
-# -Wunused-parameter.
-openjdk_cflags := $(libart_cflags) \
-    -Wno-unused-parameter \
-    -Wno-unused-variable \
-    -Wno-parentheses-equality \
-    -Wno-constant-logical-operand \
-    -Wno-sometimes-uninitialized
-
-# TODO(http://b/64362645): remove when upstream replaces readdir_r with readdir.
-openjdk_cflags += -Wno-deprecated-declarations
-
-core_test_files := \
-  luni/src/test/native/dalvik_system_JniTest.cpp \
-  luni/src/test/native/libcore_java_io_FileTest.cpp \
-  luni/src/test/native/libcore_java_lang_ThreadTest.cpp \
-  luni/src/test/native/libcore_java_nio_BufferTest.cpp \
-  luni/src/test/native/libcore_util_NativeAllocationRegistryTest.cpp \
-
-#
-# Build for the target (device).
-#
-
-include $(CLEAR_VARS)
-LOCAL_CFLAGS += $(libart_cflags)
-LOCAL_CPPFLAGS += $(core_cppflags)
-LOCAL_SRC_FILES += $(core_src_files)
-LOCAL_C_INCLUDES += $(core_c_includes)
-LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libdl libexpat libicuuc libicui18n libnativehelper libz libutils
-LOCAL_STATIC_LIBRARIES += $(core_static_libraries) libziparchive libbase
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := libjavacore
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-LOCAL_CXX_STL := libc++
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS += $(libart_cflags)
-LOCAL_CPPFLAGS += $(core_cppflags)
-ifeq ($(TARGET_ARCH),arm)
-# Ignore "note: the mangling of 'va_list' has changed in GCC 4.4"
-LOCAL_CFLAGS += -Wno-psabi
-endif
-
-# Define the rules.
-LOCAL_CFLAGS += $(openjdk_cflags)
-LOCAL_SRC_FILES := $(openjdk_core_src_files)
-LOCAL_C_INCLUDES := $(core_c_includes)
-LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) libcrypto libicuuc libssl libz
-LOCAL_SHARED_LIBRARIES += libopenjdkjvm libnativehelper libdl
-LOCAL_STATIC_LIBRARIES := $(core_static_libraries) libfdlibm
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := libopenjdk
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/ojluni/NOTICE
-LOCAL_CXX_STL := libc++
-include $(BUILD_SHARED_LIBRARY)
-
-# Debug version of libopenjdk. Depends on libopenjdkjvmd.
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS += $(libart_cflags)
-LOCAL_CPPFLAGS += $(core_cppflags)
-ifeq ($(TARGET_ARCH),arm)
-# Ignore "note: the mangling of 'va_list' has changed in GCC 4.4"
-LOCAL_CFLAGS += -Wno-psabi
-endif
-
-LOCAL_CFLAGS += $(openjdk_cflags)
-LOCAL_SRC_FILES := $(openjdk_core_src_files)
-LOCAL_C_INCLUDES := $(core_c_includes)
-LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) libcrypto libicuuc libssl libz
-LOCAL_SHARED_LIBRARIES += libopenjdkjvmd libnativehelper libdl
-LOCAL_STATIC_LIBRARIES := $(core_static_libraries) libfdlibm
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := libopenjdkd
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/ojluni/NOTICE
-LOCAL_CXX_STL := libc++
-include $(BUILD_SHARED_LIBRARY)
-
-# Test JNI library.
-ifeq ($(LIBCORE_SKIP_TESTS),)
-
-include $(CLEAR_VARS)
-LOCAL_CFLAGS += $(libart_cflags)
-LOCAL_CPPFLAGS += $(core_cppflags)
-LOCAL_SRC_FILES += $(core_test_files)
-LOCAL_C_INCLUDES += libcore/include
-LOCAL_SHARED_LIBRARIES += libnativehelper_compat_libc++
-LOCAL_MODULE_TAGS := optional
-LOCAL_STRIP_MODULE := keep_symbols
-LOCAL_MODULE := libjavacoretests
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-LOCAL_CXX_STL := libc++
-include $(BUILD_SHARED_LIBRARY)
-
-endif # LIBCORE_SKIP_TESTS
-
-# Set of gtest unit tests.
-include $(CLEAR_VARS)
-# Add -fno-builtin so that the compiler doesn't attempt to inline
-# memcpy calls that are not really aligned.
-LOCAL_CFLAGS += $(libart_cflags) -fno-builtin
-LOCAL_CPPFLAGS += $(core_cppflags)
-LOCAL_SRC_FILES += \
-  luni/src/test/native/libcore_io_Memory_test.cpp \
-
-LOCAL_C_INCLUDES += libcore/include
-LOCAL_MODULE_TAGS := debug
-LOCAL_MODULE := libjavacore-unit-tests
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-LOCAL_SHARED_LIBRARIES := libnativehelper
-LOCAL_CXX_STL := libc++
-include $(BUILD_NATIVE_TEST)
-
-# Set of benchmarks for libjavacore functions.
-include $(CLEAR_VARS)
-LOCAL_CFLAGS += $(libart_cflags)
-LOCAL_CPPFLAGS += $(core_cppflags)
-LOCAL_SRC_FILES += \
-  luni/src/benchmark/native/libcore_io_Memory_bench.cpp \
-
-LOCAL_C_INCLUDES += libcore/include
-LOCAL_MODULE_TAGS := debug
-LOCAL_MODULE := libjavacore-benchmarks
-LOCAL_COMPATIBILITY_SUITE := device-tests
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-LOCAL_SHARED_LIBRARIES := libnativehelper
-LOCAL_CXX_STL := libc++
-LOCAL_MULTILIB := both
-LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
-LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
-include $(BUILD_NATIVE_BENCHMARK)
-
-
-#
-# Build for the host.
-#
-
-ifeq ($(HOST_OS),linux)
-
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
-LOCAL_SRC_FILES += $(core_src_files)
-LOCAL_CFLAGS += $(libart_cflags)
-LOCAL_C_INCLUDES += $(core_c_includes)
-LOCAL_CPPFLAGS += $(core_cppflags)
-LOCAL_LDLIBS += -ldl -lpthread
-ifeq ($(HOST_OS),linux)
-LOCAL_LDLIBS += -lrt
-endif
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := libjavacore
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat libicuuc libicui18n libcrypto libz-host libziparchive
-LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
-LOCAL_MULTILIB := both
-LOCAL_CXX_STL := libc++
-include $(BUILD_HOST_SHARED_LIBRARY)
-
-# Debug version of libopenjdk (host). Depends on libopenjdkjvmd.
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(openjdk_core_src_files)
-LOCAL_C_INCLUDES := $(core_c_includes)
-LOCAL_CFLAGS := -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DLINUX -D__GLIBC__ # Sigh.
-LOCAL_CFLAGS += $(openjdk_cflags)
-LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) libicuuc libcrypto libz-host
-LOCAL_SHARED_LIBRARIES += libopenjdkjvmd libnativehelper
-LOCAL_STATIC_LIBRARIES := $(core_static_libraries) libfdlibm
-LOCAL_MODULE_TAGS := optional
-LOCAL_LDLIBS += -ldl -lpthread -lrt
-LOCAL_MODULE := libopenjdkd
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/ojluni/NOTICE
-LOCAL_MULTILIB := both
-include $(BUILD_HOST_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(openjdk_core_src_files)
-LOCAL_C_INCLUDES := $(core_c_includes)
-LOCAL_CFLAGS := -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DLINUX -D__GLIBC__ # Sigh.
-LOCAL_CFLAGS += $(openjdk_cflags)
-LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) libicuuc libcrypto libz-host
-LOCAL_SHARED_LIBRARIES += libopenjdkjvm libnativehelper
-LOCAL_STATIC_LIBRARIES := $(core_static_libraries) libfdlibm
-LOCAL_MODULE_TAGS := optional
-LOCAL_LDLIBS += -ldl -lpthread -lrt
-LOCAL_MODULE := libopenjdk
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/ojluni/NOTICE
-LOCAL_MULTILIB := both
-include $(BUILD_HOST_SHARED_LIBRARY)
-
-ifeq ($(LIBCORE_SKIP_TESTS),)
-    include $(CLEAR_VARS)
-    LOCAL_CLANG := true
-    LOCAL_SRC_FILES += $(core_test_files)
-    LOCAL_CFLAGS += $(libart_cflags)
-    LOCAL_C_INCLUDES += libcore/include
-    LOCAL_CPPFLAGS += $(core_cppflags)
-    LOCAL_LDLIBS += -ldl -lpthread
-    LOCAL_MODULE_TAGS := optional
-    LOCAL_MODULE := libjavacoretests
-    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
-    LOCAL_SHARED_LIBRARIES := libnativehelper
-    LOCAL_MULTILIB := both
-    LOCAL_CXX_STL := libc++
-    include $(BUILD_HOST_SHARED_LIBRARY)
-endif # LIBCORE_SKIP_TESTS
-
-endif # HOST_OS == linux
diff --git a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
index c96016f..47e4ad4 100644
--- a/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
+++ b/dalvik/src/main/java/dalvik/system/ZygoteHooks.java
@@ -53,12 +53,12 @@
     }
 
     /**
-     * Called by the zygote in the child process after every fork. The debug
-     * flags from {@code debugFlags} are applied to the child process. The string
+     * Called by the zygote in the child process after every fork. The runtime
+     * flags from {@code runtimeFlags} are applied to the child process. The string
      * {@code instructionSet} determines whether to use a native bridge.
      */
-    public void postForkChild(int debugFlags, boolean isSystemServer, String instructionSet) {
-        nativePostForkChild(token, debugFlags, isSystemServer, instructionSet);
+    public void postForkChild(int runtimeFlags, boolean isSystemServer, String instructionSet) {
+        nativePostForkChild(token, runtimeFlags, isSystemServer, instructionSet);
 
         Math.setRandomSeedInternal(System.currentTimeMillis());
     }
@@ -73,7 +73,7 @@
     }
 
     private static native long nativePreFork();
-    private static native void nativePostForkChild(long token, int debugFlags,
+    private static native void nativePostForkChild(long token, int runtimeFlags,
                                                    boolean isSystemServer, String instructionSet);
 
     /**
diff --git a/dalvik/src/main/native/sub.mk b/dalvik/src/main/native/sub.mk
deleted file mode 100644
index 4adc8a1..0000000
--- a/dalvik/src/main/native/sub.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- mode: makefile -*-
-# This file is included by the top-level libcore Android.mk.
-# It's not a normal makefile, so we don't include CLEAR_VARS
-# or BUILD_*_LIBRARY.
-
-LOCAL_SRC_FILES := \
-	org_apache_harmony_dalvik_NativeTestTarget.cpp
-
-#LOCAL_C_INCLUDES +=
-
-# Any shared/static libs that are listed here must also
-# be listed in libs/nativehelper/Android.mk.
-# TODO: fix this requirement
-
-#LOCAL_SHARED_LIBRARIES +=
-
-#LOCAL_STATIC_LIBRARIES +=
diff --git a/luni/src/main/native/Android.bp b/luni/src/main/native/Android.bp
new file mode 100644
index 0000000..a8e7ee7
--- /dev/null
+++ b/luni/src/main/native/Android.bp
@@ -0,0 +1,28 @@
+filegroup {
+    name: "luni_native_srcs",
+    srcs: [
+        "ExecStrings.cpp",
+        "IcuUtilities.cpp",
+        "JniException.cpp",
+        "NetworkUtilities.cpp",
+        "Register.cpp",
+        "ZipUtilities.cpp",
+        "android_system_OsConstants.cpp",
+        "cbigint.cpp",
+        "java_lang_StringToReal.cpp",
+        "java_lang_invoke_MethodHandle.cpp",
+        "java_math_NativeBN.cpp",
+        "java_util_regex_Matcher.cpp",
+        "java_util_regex_Pattern.cpp",
+        "libcore_icu_ICU.cpp",
+        "libcore_icu_NativeConverter.cpp",
+        "libcore_icu_TimeZoneNames.cpp",
+        "libcore_io_AsynchronousCloseMonitor.cpp",
+        "libcore_io_Linux.cpp",
+        "libcore_io_Memory.cpp",
+        "libcore_util_NativeAllocationRegistry.cpp",
+        "org_apache_harmony_xml_ExpatParser.cpp",
+        "sun_misc_Unsafe.cpp",
+        "valueOf.cpp",
+    ],
+}
diff --git a/luni/src/main/native/sub.mk b/luni/src/main/native/sub.mk
deleted file mode 100644
index 0706ce8..0000000
--- a/luni/src/main/native/sub.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- mode: makefile -*-
-# This file is included by the top-level libcore Android.mk.
-# It's not a normal makefile, so we don't include CLEAR_VARS
-# or BUILD_*_LIBRARY.
-
-LOCAL_SRC_FILES := \
-    ExecStrings.cpp \
-    IcuUtilities.cpp \
-    JniException.cpp \
-    NetworkUtilities.cpp \
-    Register.cpp \
-    ZipUtilities.cpp \
-    android_system_OsConstants.cpp \
-    cbigint.cpp \
-    java_lang_StringToReal.cpp \
-    java_lang_invoke_MethodHandle.cpp \
-    java_math_NativeBN.cpp \
-    java_util_regex_Matcher.cpp \
-    java_util_regex_Pattern.cpp \
-    libcore_icu_ICU.cpp \
-    libcore_icu_NativeConverter.cpp \
-    libcore_icu_TimeZoneNames.cpp \
-    libcore_io_AsynchronousCloseMonitor.cpp \
-    libcore_io_Linux.cpp \
-    libcore_io_Memory.cpp \
-    libcore_util_NativeAllocationRegistry.cpp \
-    org_apache_harmony_xml_ExpatParser.cpp \
-    sun_misc_Unsafe.cpp \
-    valueOf.cpp \
-
-LOCAL_STATIC_LIBRARIES += \
-    libbase \
-    libfdlibm \
-
-LOCAL_SHARED_LIBRARIES += \
-    liblog \
-    libnativehelper \
diff --git a/luni/src/test/java/libcore/java/net/ServerSocketConcurrentCloseTest.java b/luni/src/test/java/libcore/java/net/ServerSocketConcurrentCloseTest.java
index e6a2938..4171062 100644
--- a/luni/src/test/java/libcore/java/net/ServerSocketConcurrentCloseTest.java
+++ b/luni/src/test/java/libcore/java/net/ServerSocketConcurrentCloseTest.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package libcore.java.net;
 
 import junit.framework.TestCase;
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
index d9a7b4f..eed6b11 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
@@ -33,6 +33,7 @@
 import javax.net.ssl.SSLEngine;
 import javax.net.ssl.SSLEngineResult;
 import javax.net.ssl.SSLEngineResult.HandshakeStatus;
+import javax.net.ssl.SSLEngineResult.Status;
 import javax.net.ssl.SSLException;
 import javax.net.ssl.SSLHandshakeException;
 import javax.net.ssl.SSLParameters;
@@ -850,4 +851,33 @@
             server.get();
         }
     }
+
+    public void test_SSLEngine_CloseOutbound() throws Exception {
+        try (final TestSSLEnginePair pair = TestSSLEnginePair.create()) {
+            assertConnected(pair);
+
+            pair.client.closeOutbound();
+            ByteBuffer clientOut = ByteBuffer.allocate(pair.client.getSession().getPacketBufferSize());
+            SSLEngineResult res = pair.client.wrap(ByteBuffer.wrap(new byte[0]), clientOut);
+            assertEquals(Status.CLOSED, res.getStatus());
+            assertEquals(HandshakeStatus.NOT_HANDSHAKING, res.getHandshakeStatus());
+
+            clientOut.flip();
+            ByteBuffer serverIn = ByteBuffer.allocate(pair.server.getSession().getApplicationBufferSize());
+            res = pair.server.unwrap(clientOut, serverIn);
+            assertEquals(Status.CLOSED, res.getStatus());
+            assertEquals(HandshakeStatus.NEED_WRAP, res.getHandshakeStatus());
+
+            ByteBuffer serverOut = ByteBuffer.allocate(pair.server.getSession().getPacketBufferSize());
+            res = pair.server.wrap(ByteBuffer.wrap(new byte[0]), serverOut);
+            assertEquals(Status.CLOSED, res.getStatus());
+            assertEquals(HandshakeStatus.NOT_HANDSHAKING, res.getHandshakeStatus());
+
+            serverOut.flip();
+            ByteBuffer clientIn = ByteBuffer.allocate(pair.client.getSession().getApplicationBufferSize());
+            res = pair.client.unwrap(serverOut, clientIn);
+            assertEquals(Status.CLOSED, res.getStatus());
+            assertEquals(HandshakeStatus.NOT_HANDSHAKING, res.getHandshakeStatus());
+        }
+    }
 }
diff --git a/ojluni/src/main/java/java/util/Locale.java b/ojluni/src/main/java/java/util/Locale.java
index 9073504..9d9f3e4 100644
--- a/ojluni/src/main/java/java/util/Locale.java
+++ b/ojluni/src/main/java/java/util/Locale.java
@@ -516,7 +516,7 @@
  *     <td><a href="http://site.icu-project.org/download/56">ICU 56.1</a></td>
  *     <td><a href="http://cldr.unicode.org/index/downloads/cldr-28">CLDR 28</a></td>
  *     <td><a href="http://www.unicode.org/versions/Unicode8.0.0/">Unicode 8.0</a></td></tr>
- * <tr><td>Android O</td>
+ * <tr><td>Android 8.0 (Oreo)</td>
  *     <td><a href="http://site.icu-project.org/download/58">ICU 58.2</a></td>
  *     <td><a href="http://cldr.unicode.org/index/downloads/cldr-30">CLDR 30.0.3</a></td>
  *     <td><a href="http://www.unicode.org/versions/Unicode9.0.0/">Unicode 9.0</a></td></tr>
diff --git a/ojluni/src/main/native/Android.bp b/ojluni/src/main/native/Android.bp
new file mode 100644
index 0000000..71546ca
--- /dev/null
+++ b/ojluni/src/main/native/Android.bp
@@ -0,0 +1,65 @@
+filegroup {
+    name: "libopenjdk_native_srcs",
+    srcs: [
+        "java_util_zip_ZipFile.c",
+        "java_util_zip_Inflater.c",
+        "java_util_zip_Deflater.c",
+        "java_util_zip_CRC32.c",
+        "Adler32.c",
+        "zip_util.c",
+        "jni_util.c",
+        "jni_util_md.c",
+        "io_util.c",
+        "canonicalize_md.c",
+        "FileDescriptor_md.c",
+        "DatagramChannelImpl.c",
+        "DatagramDispatcher.c",
+        "Console_md.c",
+        "IOUtil.c",
+        "PollArrayWrapper.c",
+        "SocketChannelImpl.c",
+        "FileChannelImpl.c",
+        "FileDispatcherImpl.c",
+        "FileOutputStream_md.c",
+        "FileInputStream.c",
+        "FileSystemPreferences.c",
+        "EPoll.c",
+        "EPollPort.c",
+        "UnixAsynchronousServerSocketChannelImpl.c",
+        "UnixAsynchronousSocketChannelImpl.c",
+        "io_util_md.c",
+        "NativeThread.c",
+        "FileKey.c",
+        "UnixFileSystem_md.c",
+        "ObjectStreamClass.c",
+        "ObjectOutputStream.c",
+        "ObjectInputStream.c",
+        "LinuxNativeDispatcher.c",
+        "LinuxWatchService.c",
+        "UnixCopyFile.c",
+        "UnixNativeDispatcher.c",
+        "InetAddress.c",
+        "net_util.c",
+        "net_util_md.c",
+        "Net.c",
+        "MappedByteBuffer.c",
+        "Inet6Address.c",
+        "Inet4Address.c",
+        "linux_close.cpp",
+        "ServerSocketChannelImpl.c",
+        "SocketInputStream.c",
+        "SocketOutputStream.c",
+        "Float.c",
+        "Double.c",
+        "StrictMath.c",
+        "Math.c",
+        "ProcessEnvironment_md.c",
+        "System.c",
+        "Runtime.c",
+        "UNIXProcess_md.c",
+        "Bits.c",
+        "Character.cpp",
+        "Register.cpp",
+        "socket_tagger_util.cpp",
+    ],
+}
diff --git a/ojluni/src/main/native/openjdksub.mk b/ojluni/src/main/native/openjdksub.mk
deleted file mode 100644
index d60bc09..0000000
--- a/ojluni/src/main/native/openjdksub.mk
+++ /dev/null
@@ -1,73 +0,0 @@
-# -*- mode: makefile -*-
-# This file is included by the top-level libcore Android.mk.
-# It's not a normal makefile, so we don't include CLEAR_VARS
-# or BUILD_*_LIBRARY.
-
-srcdir := ojluni/src/main/native
-LOCAL_SRC_FILES := \
-    java_util_zip_ZipFile.c \
-    java_util_zip_Inflater.c \
-    java_util_zip_Deflater.c \
-    java_util_zip_CRC32.c \
-    Adler32.c \
-    zip_util.c \
-    jni_util.c \
-    jni_util_md.c \
-    io_util.c \
-    canonicalize_md.c \
-    FileDescriptor_md.c \
-    DatagramChannelImpl.c \
-    DatagramDispatcher.c \
-    Console_md.c \
-    IOUtil.c \
-    PollArrayWrapper.c \
-    SocketChannelImpl.c \
-    FileChannelImpl.c \
-    FileDispatcherImpl.c \
-    FileOutputStream_md.c \
-    FileInputStream.c \
-    FileSystemPreferences.c \
-    EPoll.c \
-    EPollPort.c \
-    UnixAsynchronousServerSocketChannelImpl.c \
-    UnixAsynchronousSocketChannelImpl.c \
-    io_util_md.c \
-    NativeThread.c \
-    FileKey.c \
-    UnixFileSystem_md.c \
-    ObjectStreamClass.c \
-    ObjectOutputStream.c \
-    ObjectInputStream.c \
-    LinuxNativeDispatcher.c \
-    LinuxWatchService.c \
-    UnixCopyFile.c \
-    UnixNativeDispatcher.c \
-    InetAddress.c \
-    net_util.c \
-    net_util_md.c \
-    Net.c \
-    MappedByteBuffer.c \
-    Inet6Address.c \
-    Inet4Address.c \
-    linux_close.cpp \
-    ServerSocketChannelImpl.c \
-    SocketInputStream.c \
-    SocketOutputStream.c \
-    Float.c \
-    Double.c \
-    StrictMath.c \
-    Math.c \
-    ProcessEnvironment_md.c \
-    System.c \
-    Runtime.c \
-    UNIXProcess_md.c \
-    Bits.c \
-    Character.cpp \
-    Register.cpp \
-    socket_tagger_util.cpp \
-
-LOCAL_C_INCLUDES += \
-       libcore/$(srcdir) \
-       external/fdlibm \
-       external/zlib \
-       external/icu/icu4c/source/common \
