diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..e875a17
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,11 @@
+cc_library_headers {
+    name: "libminikin_headers",
+    host_supported: true,
+    export_include_dirs: ["include"],
+}
+
+subdirs = [
+    "app",
+    "libs/minikin",
+    "tests",
+]
diff --git a/app/Android.bp b/app/Android.bp
new file mode 100644
index 0000000..e8085c1
--- /dev/null
+++ b/app/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2015 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.
+
+// see how_to_run.txt for instructions on running these tests
+
+cc_binary_host {
+    name: "hyphtool",
+
+    static_libs: ["libminikin"],
+
+    // Shared libraries which are dependencies of minikin; these are not automatically
+    // pulled in by the build system (and thus sadly must be repeated).
+    shared_libs: [
+        "liblog",
+        "libicuuc",
+    ],
+
+    srcs: ["HyphTool.cpp"],
+}
diff --git a/app/Android.mk b/app/Android.mk
deleted file mode 100644
index 23305b7..0000000
--- a/app/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2015 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.
-
-# see how_to_run.txt for instructions on running these tests
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := hyphtool
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_LIBRARIES := libminikin_host
-
-# Shared libraries which are dependencies of minikin; these are not automatically
-# pulled in by the build system (and thus sadly must be repeated).
-
-LOCAL_SHARED_LIBRARIES := \
-    liblog \
-    libicuuc
-
-LOCAL_SRC_FILES += \
-    HyphTool.cpp
-
-include $(BUILD_HOST_EXECUTABLE)
diff --git a/libs/minikin/Android.bp b/libs/minikin/Android.bp
new file mode 100644
index 0000000..c0fbbea
--- /dev/null
+++ b/libs/minikin/Android.bp
@@ -0,0 +1,87 @@
+// Copyright (C) 2013 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.
+
+cc_library_headers {
+    name: "libminikin-headers-for-tests",
+    export_include_dirs: ["."],
+    shared_libs: ["libharfbuzz_ng"],
+    export_shared_lib_headers: ["libharfbuzz_ng"],
+}
+
+cc_library {
+    name: "libminikin",
+    host_supported: true,
+    srcs: [
+        "Hyphenator.cpp",
+    ],
+    target: {
+        android: {
+            srcs: [
+                "CmapCoverage.cpp",
+                "Emoji.cpp",
+                "FontCollection.cpp",
+                "FontFamily.cpp",
+                "FontLanguage.cpp",
+                "FontLanguageListCache.cpp",
+                "FontUtils.cpp",
+                "GraphemeBreak.cpp",
+                "HbFontCache.cpp",
+                "Layout.cpp",
+                "LayoutUtils.cpp",
+                "LineBreaker.cpp",
+                "Measurement.cpp",
+                "MinikinInternal.cpp",
+                "MinikinFont.cpp",
+                "SparseBitSet.cpp",
+                "WordBreaker.cpp",
+            ],
+            shared_libs: [
+                "libharfbuzz_ng",
+                "libft2",
+                "libz",
+                "libutils",
+            ],
+            // TODO: clean up Minikin so it doesn't need the freetype include
+            export_shared_lib_headers: ["libft2"],
+
+            sanitize: {
+                misc_undefined: [
+                    "signed-integer-overflow",
+                    // b/26432628.
+                    //"unsigned-integer-overflow",
+                ],
+            },
+        },
+    },
+    cppflags: [
+        "-Werror",
+        "-Wall",
+        "-Wextra",
+    ],
+    product_variables: {
+        debuggable: {
+            // Enable race detection on eng and userdebug build.
+            cppflags: ["-DENABLE_RACE_DETECTION"],
+        },
+    },
+    shared_libs: [
+        "liblog",
+        "libicuuc",
+    ],
+    header_libs: ["libminikin_headers"],
+    export_header_lib_headers: ["libminikin_headers"],
+    export_shared_lib_headers: ["libicuuc"],
+
+    clang: true,
+}
diff --git a/libs/minikin/Android.mk b/libs/minikin/Android.mk
deleted file mode 100644
index bb6234a..0000000
--- a/libs/minikin/Android.mk
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright (C) 2013 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.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-include $(CLEAR_VARS)
-minikin_src_files := \
-    CmapCoverage.cpp \
-    Emoji.cpp \
-    FontCollection.cpp \
-    FontFamily.cpp \
-    FontLanguage.cpp \
-    FontLanguageListCache.cpp \
-    FontUtils.cpp \
-    GraphemeBreak.cpp \
-    HbFontCache.cpp \
-    Hyphenator.cpp \
-    Layout.cpp \
-    LayoutUtils.cpp \
-    LineBreaker.cpp \
-    Measurement.cpp \
-    MinikinInternal.cpp \
-    MinikinFont.cpp \
-    SparseBitSet.cpp \
-    WordBreaker.cpp
-
-minikin_c_includes := \
-    external/harfbuzz_ng/src \
-    frameworks/minikin/include \
-    $(intermediates)
-
-minikin_shared_libraries := \
-    libharfbuzz_ng \
-    libft2 \
-    liblog \
-    libz \
-    libicuuc \
-    libutils
-
-ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
-# Enable race detection on eng and userdebug build.
-enable_race_detection := -DENABLE_RACE_DETECTION
-else
-enable_race_detection :=
-endif
-
-LOCAL_MODULE := libminikin
-LOCAL_EXPORT_C_INCLUDE_DIRS := frameworks/minikin/include
-LOCAL_SRC_FILES := $(minikin_src_files)
-LOCAL_C_INCLUDES := $(minikin_c_includes)
-LOCAL_CPPFLAGS += -Werror -Wall -Wextra $(enable_race_detection)
-LOCAL_SHARED_LIBRARIES := $(minikin_shared_libraries)
-LOCAL_CLANG := true
-LOCAL_SANITIZE := signed-integer-overflow
-# b/26432628.
-#LOCAL_SANITIZE += unsigned-integer-overflow
-
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libminikin
-LOCAL_MODULE_TAGS := optional
-LOCAL_EXPORT_C_INCLUDE_DIRS := frameworks/minikin/include
-LOCAL_SRC_FILES := $(minikin_src_files)
-LOCAL_C_INCLUDES := $(minikin_c_includes)
-LOCAL_CPPFLAGS += -Werror -Wall -Wextra $(enable_race_detection)
-LOCAL_SHARED_LIBRARIES := $(minikin_shared_libraries)
-LOCAL_CLANG := true
-LOCAL_SANITIZE := signed-integer-overflow
-# b/26432628.
-#LOCAL_SANITIZE += unsigned-integer-overflow
-
-include $(BUILD_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-
-# Reduced library (currently just hyphenation) for host
-
-LOCAL_MODULE := libminikin_host
-LOCAL_MODULE_TAGS := optional
-LOCAL_EXPORT_C_INCLUDE_DIRS := frameworks/minikin/include
-LOCAL_C_INCLUDES := $(minikin_c_includes)
-LOCAL_CPPFLAGS += -Werror -Wall -Wextra $(enable_race_detection)
-LOCAL_SHARED_LIBRARIES := liblog libicuuc
-
-LOCAL_SRC_FILES := Hyphenator.cpp
-
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/libs/minikin/LineBreaker.cpp b/libs/minikin/LineBreaker.cpp
index e75c7bf..d247644 100644
--- a/libs/minikin/LineBreaker.cpp
+++ b/libs/minikin/LineBreaker.cpp
@@ -400,7 +400,6 @@
     size_t active = 0;
     size_t nCand = mCandidates.size();
     float width = mLineWidths.getLineWidth(0);
-    float shortLineFactor = mJustified ? 0.75f : 0.5f;
     float maxShrink = mJustified ? SHRINKABILITY * getSpaceWidth() : 0.0f;
 
     // "i" iterates through candidates for the end of the line.
@@ -447,9 +446,6 @@
             } else if (atEnd && mStrategy != kBreakStrategy_Balanced) {
                 // increase penalty for hyphen on last line
                 additionalPenalty = LAST_LINE_PENALTY_MULTIPLIER * mCandidates[j].penalty;
-                // Penalize very short (< 1 - shortLineFactor of total width) lines.
-                float underfill = delta - shortLineFactor * width;
-                widthScore = underfill > 0 ? underfill * underfill : 0;
             } else {
                 widthScore = delta * delta;
                 if (delta < 0) {
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 0000000..ddc5012
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,33 @@
+filegroup {
+    name: "minikin-test-data",
+    srcs: [
+        "data/Bold.ttf",
+        "data/BoldItalic.ttf",
+        "data/ColorEmojiFont.ttf",
+        "data/ColorTextMixedEmojiFont.ttf",
+        "data/Emoji.ttf",
+        "data/Italic.ttf",
+        "data/Ja.ttf",
+        "data/Ko.ttf",
+        "data/MultiAxis.ttf",
+        "data/NoCmapFormat14.ttf",
+        "data/NoGlyphFont.ttf",
+        "data/Regular.ttf",
+        "data/TextEmojiFont.ttf",
+        "data/UnicodeBMPOnly.ttf",
+        "data/UnicodeBMPOnly2.ttf",
+        "data/UnicodeUCS4.ttf",
+        "data/VariationSelectorTest-Regular.ttf",
+        "data/ZhHans.ttf",
+        "data/ZhHant.ttf",
+        "data/emoji.xml",
+        "data/itemize.xml",
+    ],
+}
+
+subdirs = [
+    "perftests",
+    "stresstest",
+    "unittest",
+    "util",
+]
diff --git a/tests/perftests/Android.bp b/tests/perftests/Android.bp
new file mode 100644
index 0000000..f8847ac
--- /dev/null
+++ b/tests/perftests/Android.bp
@@ -0,0 +1,49 @@
+//
+// 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.
+//
+
+cc_benchmark {
+    name: "minikin_perftests",
+    test_suites: ["device-tests"],
+    cppflags: [
+        "-Werror",
+        "-Wall",
+        "-Wextra",
+    ],
+    srcs: [
+        "FontCollection.cpp",
+        "FontFamily.cpp",
+        "FontLanguage.cpp",
+        "GraphemeBreak.cpp",
+        "Hyphenator.cpp",
+        "WordBreaker.cpp",
+        "main.cpp",
+    ],
+
+    header_libs: ["libminikin-headers-for-tests"],
+
+    static_libs: [
+        "libminikin-tests-util",
+        "libminikin",
+        "libxml2",
+    ],
+
+    shared_libs: [
+        "libharfbuzz_ng",
+        "libicuuc",
+        "liblog",
+        "libskia",
+    ],
+}
diff --git a/tests/perftests/Android.mk b/tests/perftests/Android.mk
deleted file mode 100644
index c60123a..0000000
--- a/tests/perftests/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-perftest_src_files := \
-  ../util/FileUtils.cpp \
-  ../util/FontTestUtils.cpp \
-  ../util/MinikinFontForTest.cpp \
-  ../util/UnicodeUtils.cpp \
-  FontCollection.cpp \
-  FontFamily.cpp \
-  FontLanguage.cpp \
-  GraphemeBreak.cpp \
-  Hyphenator.cpp \
-  WordBreaker.cpp \
-  main.cpp
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := minikin_perftests
-LOCAL_CPPFLAGS := -Werror -Wall -Wextra
-LOCAL_SRC_FILES := $(perftest_src_files)
-LOCAL_STATIC_LIBRARIES := \
-  libminikin \
-  libxml2
-
-LOCAL_SHARED_LIBRARIES := \
-  libharfbuzz_ng \
-  libicuuc \
-  liblog \
-  libskia
-
-LOCAL_C_INCLUDES := \
-  $(LOCAL_PATH)/../ \
-  $(LOCAL_PATH)/../../libs/minikin \
-  external/harfbuzz_ng/src \
-  external/libxml2/include
-
-include $(BUILD_NATIVE_BENCHMARK)
diff --git a/tests/perftests/AndroidTest.xml b/tests/perftests/AndroidTest.xml
new file mode 100644
index 0000000..dcbdcf1
--- /dev/null
+++ b/tests/perftests/AndroidTest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for minikin_perftests">
+    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+        <option name="cleanup" value="true" />
+        <option name="push" value="minikin_perftests->/data/benchmarktest/minikin_perftests" />
+    </target_preparer>
+    <option name="test-suite-tag" value="apct" />
+    <test class="com.android.tradefed.testtype.GoogleBenchmarkTest" >
+        <option name="native-benchmark-device-path" value="/data/benchmarktest" />
+        <option name="benchmark-module-name" value="minikin_perftests" />
+    </test>
+</configuration>
diff --git a/tests/perftests/FontCollection.cpp b/tests/perftests/FontCollection.cpp
index fd95cf1..d0fdc6e 100644
--- a/tests/perftests/FontCollection.cpp
+++ b/tests/perftests/FontCollection.cpp
@@ -18,8 +18,8 @@
 #include <memory>
 
 #include <minikin/FontCollection.h>
-#include <util/FontTestUtils.h>
-#include <util/UnicodeUtils.h>
+#include <FontTestUtils.h>
+#include <UnicodeUtils.h>
 #include <MinikinInternal.h>
 
 namespace minikin {
@@ -78,7 +78,7 @@
             getFontCollection(SYSTEM_FONT_PATH, SYSTEM_FONT_XML));
 
     size_t testIndex = state.range(0);
-    state.SetLabel("Itemize: " + ITEMIZE_TEST_CASES[testIndex].labelText);
+    state.SetLabel(("Itemize: " + ITEMIZE_TEST_CASES[testIndex].labelText).c_str());
 
     uint16_t buffer[64];
     size_t utf16_length = 0;
diff --git a/tests/perftests/GraphemeBreak.cpp b/tests/perftests/GraphemeBreak.cpp
index 6d6cf5b..830586f 100644
--- a/tests/perftests/GraphemeBreak.cpp
+++ b/tests/perftests/GraphemeBreak.cpp
@@ -18,7 +18,7 @@
 #include <cutils/log.h>
 
 #include "minikin/GraphemeBreak.h"
-#include "util/UnicodeUtils.h"
+#include "UnicodeUtils.h"
 
 namespace minikin {
 
diff --git a/tests/perftests/Hyphenator.cpp b/tests/perftests/Hyphenator.cpp
index 2107e05..ae62498 100644
--- a/tests/perftests/Hyphenator.cpp
+++ b/tests/perftests/Hyphenator.cpp
@@ -16,8 +16,8 @@
 #include <benchmark/benchmark.h>
 
 #include <minikin/Hyphenator.h>
-#include <util/FileUtils.h>
-#include <util/UnicodeUtils.h>
+#include <FileUtils.h>
+#include <UnicodeUtils.h>
 
 namespace minikin {
 
diff --git a/tests/perftests/WordBreaker.cpp b/tests/perftests/WordBreaker.cpp
index 6758cf9..f9ef214 100644
--- a/tests/perftests/WordBreaker.cpp
+++ b/tests/perftests/WordBreaker.cpp
@@ -16,7 +16,7 @@
 #include <benchmark/benchmark.h>
 
 #include "minikin/WordBreaker.h"
-#include "util/UnicodeUtils.h"
+#include "UnicodeUtils.h"
 
 namespace minikin {
 
diff --git a/tests/stresstest/Android.bp b/tests/stresstest/Android.bp
new file mode 100644
index 0000000..d91007a
--- /dev/null
+++ b/tests/stresstest/Android.bp
@@ -0,0 +1,50 @@
+// Copyright (C) 2017 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.
+
+// see how_to_run.txt for instructions on running these tests
+
+cc_test {
+    name: "minikin_stress_tests",
+
+    header_libs: ["libminikin-headers-for-tests"],
+
+    static_libs: [
+        "libminikin-tests-util",
+        "libminikin",
+        "libxml2",
+    ],
+
+    // Shared libraries which are dependencies of minikin; these are not automatically
+    // pulled in by the build system (and thus sadly must be repeated).
+    shared_libs: [
+        "libskia",
+        "libft2",
+        "libharfbuzz_ng",
+        "libicuuc",
+        "liblog",
+        "libutils",
+        "libz",
+    ],
+
+    srcs: [
+	"FontFamilyTest.cpp",
+        "MultithreadTest.cpp",
+    ],
+
+    cppflags: [
+        "-Werror",
+        "-Wall",
+        "-Wextra",
+    ],
+}
diff --git a/tests/stresstest/Android.mk b/tests/stresstest/Android.mk
deleted file mode 100644
index b655a74..0000000
--- a/tests/stresstest/Android.mk
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2017 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.
-
-# see how_to_run.txt for instructions on running these tests
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_TEST_DATA := $(foreach f,$(LOCAL_TEST_DATA),frameworks/minikin/tests:$(f))
-
-LOCAL_MODULE := minikin_stress_tests
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_CLASS := NATIVE_TESTS
-
-LOCAL_STATIC_LIBRARIES := libminikin
-
-# Shared libraries which are dependencies of minikin; these are not automatically
-# pulled in by the build system (and thus sadly must be repeated).
-
-LOCAL_SHARED_LIBRARIES := \
-    libskia \
-    libft2 \
-    libharfbuzz_ng \
-    libicuuc \
-    liblog \
-    libutils \
-    libz
-
-LOCAL_STATIC_LIBRARIES += \
-    libxml2
-
-LOCAL_SRC_FILES += \
-    ../util/FontTestUtils.cpp \
-    ../util/MinikinFontForTest.cpp \
-    FontFamilyTest.cpp \
-    MultithreadTest.cpp \
-
-LOCAL_C_INCLUDES := \
-    $(LOCAL_PATH)/../../libs/minikin/ \
-    $(LOCAL_PATH)/../util \
-    external/libxml2/include \
-
-LOCAL_CPPFLAGS += -Werror -Wall -Wextra
-
-include $(BUILD_NATIVE_TEST)
diff --git a/tests/unittest/Android.bp b/tests/unittest/Android.bp
new file mode 100644
index 0000000..2353d4c
--- /dev/null
+++ b/tests/unittest/Android.bp
@@ -0,0 +1,74 @@
+// Copyright (C) 2015 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.
+
+// see how_to_run.txt for instructions on running these tests
+
+cc_test {
+    name: "minikin_tests",
+    test_suites: ["device-tests"],
+    data: [":minikin-test-data"],
+
+    header_libs: ["libminikin-headers-for-tests"],
+
+    static_libs: [
+        "libminikin-tests-util",
+        "libminikin",
+        "libxml2",
+    ],
+
+    // Shared libraries which are dependencies of minikin; these are not automatically
+    // pulled in by the build system (and thus sadly must be repeated).
+    shared_libs: [
+        "libskia",
+        "libft2",
+        "libharfbuzz_ng",
+        "libicuuc",
+        "liblog",
+        "libutils",
+        "libz",
+    ],
+
+    srcs: [
+        "CmapCoverageTest.cpp",
+        "EmojiTest.cpp",
+        "FontCollectionTest.cpp",
+        "FontCollectionItemizeTest.cpp",
+        "FontFamilyTest.cpp",
+        "FontLanguageListCacheTest.cpp",
+        "HbFontCacheTest.cpp",
+        "HyphenatorTest.cpp",
+        "GraphemeBreakTests.cpp",
+        "LayoutTest.cpp",
+        "LayoutUtilsTest.cpp",
+        "MeasurementTests.cpp",
+        "SparseBitSetTest.cpp",
+        "UnicodeUtilsTest.cpp",
+        "WordBreakerTests.cpp",
+    ],
+
+    cppflags: [
+        "-Werror",
+        "-Wall",
+        "-Wextra",
+    ],
+
+    multilib: {
+        lib32: {
+            cppflags: ["-DkTestFontDir=\"/data/nativetest/minikin_tests/data/\""],
+        },
+        lib64: {
+            cppflags: ["-DkTestFontDir=\"/data/nativetest64/minikin_tests/data/\""],
+        },
+    },
+}
diff --git a/tests/unittest/Android.mk b/tests/unittest/Android.mk
deleted file mode 100644
index b817c46..0000000
--- a/tests/unittest/Android.mk
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright (C) 2015 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.
-
-# see how_to_run.txt for instructions on running these tests
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_TEST_DATA := \
-    data/Bold.ttf \
-    data/BoldItalic.ttf \
-    data/ColorEmojiFont.ttf \
-    data/ColorTextMixedEmojiFont.ttf \
-    data/Emoji.ttf \
-    data/Italic.ttf \
-    data/Ja.ttf \
-    data/Ko.ttf \
-    data/MultiAxis.ttf \
-    data/NoCmapFormat14.ttf \
-    data/NoGlyphFont.ttf \
-    data/Regular.ttf \
-    data/TextEmojiFont.ttf \
-    data/UnicodeBMPOnly.ttf \
-    data/UnicodeBMPOnly2.ttf \
-    data/UnicodeUCS4.ttf \
-    data/VariationSelectorTest-Regular.ttf \
-    data/ZhHans.ttf \
-    data/ZhHant.ttf \
-    data/emoji.xml \
-    data/itemize.xml \
-
-LOCAL_TEST_DATA := $(foreach f,$(LOCAL_TEST_DATA),frameworks/minikin/tests:$(f))
-
-LOCAL_MODULE := minikin_tests
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_CLASS := NATIVE_TESTS
-
-LOCAL_STATIC_LIBRARIES := libminikin
-
-# Shared libraries which are dependencies of minikin; these are not automatically
-# pulled in by the build system (and thus sadly must be repeated).
-
-LOCAL_SHARED_LIBRARIES := \
-    libskia \
-    libft2 \
-    libharfbuzz_ng \
-    libicuuc \
-    liblog \
-    libutils \
-    libz
-
-LOCAL_STATIC_LIBRARIES += \
-    libxml2
-
-LOCAL_SRC_FILES += \
-    ../util/FileUtils.cpp \
-    ../util/FontTestUtils.cpp \
-    ../util/MinikinFontForTest.cpp \
-    ../util/UnicodeUtils.cpp \
-    CmapCoverageTest.cpp \
-    EmojiTest.cpp \
-    FontCollectionTest.cpp \
-    FontCollectionItemizeTest.cpp \
-    FontFamilyTest.cpp \
-    FontLanguageListCacheTest.cpp \
-    HbFontCacheTest.cpp \
-    HyphenatorTest.cpp \
-    GraphemeBreakTests.cpp \
-    LayoutTest.cpp \
-    LayoutUtilsTest.cpp \
-    MeasurementTests.cpp \
-    SparseBitSetTest.cpp \
-    UnicodeUtilsTest.cpp \
-    WordBreakerTests.cpp
-
-LOCAL_C_INCLUDES := \
-    $(LOCAL_PATH)/../../libs/minikin/ \
-    $(LOCAL_PATH)/../util \
-    external/harfbuzz_ng/src \
-    external/libxml2/include \
-    external/skia/src/core
-
-LOCAL_CPPFLAGS += -Werror -Wall -Wextra
-
-LOCAL_CPPFLAGS_32 += -DkTestFontDir="\"/data/nativetest/minikin_tests/data/\""
-LOCAL_CPPFLAGS_64 += -DkTestFontDir="\"/data/nativetest64/minikin_tests/data/\""
-
-include $(BUILD_NATIVE_TEST)
diff --git a/tests/unittest/AndroidTest.xml b/tests/unittest/AndroidTest.xml
new file mode 100644
index 0000000..a073101
--- /dev/null
+++ b/tests/unittest/AndroidTest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<configuration description="Config for minikin_tests">
+    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+        <option name="cleanup" value="true" />
+        <option name="push" value="minikin_tests->/data/local/tmp/minikin_tests" />
+    </target_preparer>
+    <option name="test-suite-tag" value="apct" />
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp" />
+        <option name="module-name" value="minikin_tests" />
+    </test>
+</configuration>
\ No newline at end of file
diff --git a/tests/util/Android.bp b/tests/util/Android.bp
new file mode 100644
index 0000000..50a2cd7
--- /dev/null
+++ b/tests/util/Android.bp
@@ -0,0 +1,13 @@
+cc_library_static {
+    name: "libminikin-tests-util",
+    srcs: [
+        "FileUtils.cpp",
+        "FontTestUtils.cpp",
+        "MinikinFontForTest.cpp",
+        "UnicodeUtils.cpp",
+    ],
+    export_include_dirs: ["."],
+    shared_libs: ["libxml2"],
+    static_libs: ["libminikin"],
+    header_libs: ["libminikin-headers-for-tests"],
+}
diff --git a/tools/mk_hyb_file.py b/tools/mk_hyb_file.py
index a9b8932..545e9b7 100755
--- a/tools/mk_hyb_file.py
+++ b/tools/mk_hyb_file.py
@@ -35,6 +35,10 @@
 
 VERBOSE = False
 
+# U+00DF is LATIN SMALL LETTER SHARP S
+# U+1E9E is LATIN CAPITAL LETTER SHARP S
+SHARP_S_TO_DOUBLE = u'\u00dfSS'
+SHARP_S_TO_CAPITAL = u'\u00df\u1e9e'
 
 if sys.version_info[0] >= 3:
     def unichr(x):
@@ -283,8 +287,12 @@
         for i, l in enumerate(f):
             l = l.strip()
             if len(l) > 2:
-                # lowercase maps to multi-character uppercase sequence, ignore uppercase for now
-                l = l[:1]
+                if l == SHARP_S_TO_DOUBLE:
+                    # replace with lowercasing from capital letter sharp s
+                    l = SHARP_S_TO_CAPITAL
+                else:
+                    # lowercase maps to multi-character uppercase sequence, ignore uppercase for now
+                    l = l[:1]
             else:
                 assert len(l) == 2, 'expected 2 chars in chr'
             for c in l:
@@ -419,6 +427,9 @@
     file_lines = [l.strip() for l in io.open(fn, encoding='UTF-8')]
     line_set = set(lines)
     file_set = set(file_lines)
+    if SHARP_S_TO_DOUBLE in file_set:
+        # ignore difference of double capital letter s and capital letter sharp s
+        file_set.symmetric_difference_update([SHARP_S_TO_DOUBLE, SHARP_S_TO_CAPITAL])
     if line_set == file_set:
         return True
     for line in line_set - file_set:
