diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 20ece24..45dce2c 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -22,6 +22,8 @@
 
 LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
 
+LOCAL_CFLAGS += -DU_USING_ICU_NAMESPACE=0
+
 LOCAL_SRC_FILES:= \
     AndroidRuntime.cpp \
     com_android_internal_content_NativeLibraryHelper.cpp \
diff --git a/core/jni/android_text_StaticLayout.cpp b/core/jni/android_text_StaticLayout.cpp
index 0c2ebf41..fceb980 100644
--- a/core/jni/android_text_StaticLayout.cpp
+++ b/core/jni/android_text_StaticLayout.cpp
@@ -30,7 +30,7 @@
 
 class ScopedBreakIterator {
     public:
-        ScopedBreakIterator(JNIEnv* env, BreakIterator* breakIterator, jcharArray inputText,
+        ScopedBreakIterator(JNIEnv* env, icu::BreakIterator* breakIterator, jcharArray inputText,
                             jint length) : mBreakIterator(breakIterator), mChars(env, inputText) {
             UErrorCode status = U_ZERO_ERROR;
             mUText = utext_openUChars(NULL, mChars.get(), length, &status);
@@ -41,7 +41,7 @@
             mBreakIterator->setText(mUText, status);
         }
 
-        inline BreakIterator* operator->() {
+        inline icu::BreakIterator* operator->() {
             return mBreakIterator;
         }
 
@@ -50,7 +50,7 @@
             delete mBreakIterator;
         }
     private:
-        BreakIterator* mBreakIterator;
+        icu::BreakIterator* mBreakIterator;
         ScopedCharArrayRO mChars;
         UText* mUText;
 
@@ -68,14 +68,14 @@
     ScopedIcuLocale icuLocale(env, javaLocaleName);
     if (icuLocale.valid()) {
         UErrorCode status = U_ZERO_ERROR;
-        BreakIterator* it = BreakIterator::createLineInstance(icuLocale.locale(), status);
+        icu::BreakIterator* it = icu::BreakIterator::createLineInstance(icuLocale.locale(), status);
         if (!U_SUCCESS(status) || it == NULL) {
             if (it) {
                 delete it;
             }
         } else {
             ScopedBreakIterator breakIterator(env, it, inputText, length);
-            for (int loc = breakIterator->first(); loc != BreakIterator::DONE;
+            for (int loc = breakIterator->first(); loc != icu::BreakIterator::DONE;
                     loc = breakIterator->next()) {
                 breaks.push_back(loc);
             }
