diff --git a/helper/DebugHelper.h b/helper/DebugHelper.h
index 15dfa9e..97918be 100644
--- a/helper/DebugHelper.h
+++ b/helper/DebugHelper.h
@@ -27,14 +27,14 @@
 #else // !USE_LOGGER
 
 #undef ALOGV
-#undef LOGI
+#undef ALOGI
 #undef ALOGD
 #undef LOGW
 #undef LOGE
 #undef LOGA
 
 #define ALOGV(...)
-#define LOGI(...)
+#define ALOGI(...)
 #define ALOGD(...)
 #define LOGW(...)
 #define LOGE(...)
diff --git a/lib/ExecutionEngine/MCCacheReader.cpp b/lib/ExecutionEngine/MCCacheReader.cpp
index e2f1cdb..cddd47b 100644
--- a/lib/ExecutionEngine/MCCacheReader.cpp
+++ b/lib/ExecutionEngine/MCCacheReader.cpp
@@ -154,7 +154,7 @@
 
   if (memcmp(mpHeader->version, OBCC_VERSION, 4) != 0) {
     mpHeader->version[4 - 1] = '\0'; // ensure c-style string terminated
-    LOGI("Cache file format version mismatch: now %s cached %s\n",
+    ALOGI("Cache file format version mismatch: now %s cached %s\n",
          OBCC_VERSION, mpHeader->version);
     return false;
   }
diff --git a/lib/ExecutionEngine/OldJIT/CacheReader.cpp b/lib/ExecutionEngine/OldJIT/CacheReader.cpp
index c11a9e7..feb5ef4 100644
--- a/lib/ExecutionEngine/OldJIT/CacheReader.cpp
+++ b/lib/ExecutionEngine/OldJIT/CacheReader.cpp
@@ -158,7 +158,7 @@
 
   if (memcmp(mpHeader->version, OBCC_VERSION, 4) != 0) {
     mpHeader->version[4 - 1] = '\0'; // ensure c-style string terminated
-    LOGI("Cache file format version mismatch: now %s cached %s\n",
+    ALOGI("Cache file format version mismatch: now %s cached %s\n",
          OBCC_VERSION, mpHeader->version);
     return false;
   }
@@ -433,7 +433,7 @@
     return false;
   }
 
-  LOGI("Passed checksum even parity verification.\n");
+  ALOGI("Passed checksum even parity verification.\n");
   return true;
 }
 
diff --git a/lib/ExecutionEngine/OldJIT/ContextManager.cpp b/lib/ExecutionEngine/OldJIT/ContextManager.cpp
index 4d13275..6cd2973 100644
--- a/lib/ExecutionEngine/OldJIT/ContextManager.cpp
+++ b/lib/ExecutionEngine/OldJIT/ContextManager.cpp
@@ -62,7 +62,7 @@
                           MAP_PRIVATE | MAP_ANON, -1, 0);
 
       if (result == addr) {
-        LOGI("Allocate bcc context. addr=%p\n", result);
+        ALOGI("Allocate bcc context. addr=%p\n", result);
         mContextSlotOccupied[i] = true;
         return static_cast<char *>(result);
       }
@@ -86,7 +86,7 @@
     return NULL;
   }
 
-  LOGI("Allocate bcc context. addr=%p\n", result);
+  ALOGI("Allocate bcc context. addr=%p\n", result);
   return static_cast<char *>(result);
 }
 
@@ -120,7 +120,7 @@
     return NULL;
   }
 
-  // LOGI("addr=%x, imageFd=%d, imageOffset=%x", addr, imageFd, imageOffset);
+  // ALOGI("addr=%x, imageFd=%d, imageOffset=%x", addr, imageFd, imageOffset);
   void *result = mmap(addr, ContextSize,
                       PROT_READ | PROT_WRITE | PROT_EXEC,
                       MAP_PRIVATE, imageFd, imageOffset);
@@ -136,7 +136,7 @@
     return NULL;
   }
 
-  LOGI("Allocate bcc context. addr=%p\n", addr);
+  ALOGI("Allocate bcc context. addr=%p\n", addr);
   mContextSlotOccupied[slot] = true;
   return static_cast<char *>(result);
 }
@@ -149,7 +149,7 @@
 
   llvm::MutexGuard Locked(mContextSlotOccupiedLock);
 
-  LOGI("Deallocate bcc context. addr=%p\n", addr);
+  ALOGI("Deallocate bcc context. addr=%p\n", addr);
 
   // Unmap
   if (munmap(addr, ContextSize) < 0) {
diff --git a/lib/ExecutionEngine/bcc.cpp b/lib/ExecutionEngine/bcc.cpp
index 2e118e3..60cefc4 100644
--- a/lib/ExecutionEngine/bcc.cpp
+++ b/lib/ExecutionEngine/bcc.cpp
@@ -40,8 +40,8 @@
 
 static void bccPrintBuildStamp() {
   if (!bccBuildStampPrinted) {
-    LOGI("LIBBCC build time: %s", bccGetBuildTime());
-    LOGI("LIBBCC build revision: %s", bccGetBuildRev());
+    ALOGI("LIBBCC build time: %s", bccGetBuildTime());
+    ALOGI("LIBBCC build revision: %s", bccGetBuildRev());
     bccBuildStampPrinted = true;
   }
 }
