diff --git a/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp
index 51fd0c5..83f5c17 100644
--- a/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp
+++ b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp
@@ -36,7 +36,7 @@
     AndroidBitmap_getInfo(env, inputBitmap, &inputInfo);
     if (inputInfo.format != ANDROID_BITMAP_FORMAT_RGBA_8888 &&
         inputInfo.format != ANDROID_BITMAP_FORMAT_RGB_565) {
-        LOGE("Only RGBA_8888 and RGB_565 bitmaps are supported, type was %d.",
+        ALOGE("Only RGBA_8888 and RGB_565 bitmaps are supported, type was %d.",
              inputInfo.format);
     }
 
@@ -52,7 +52,7 @@
             reinterpret_cast<void**>(&inputBuffer));
 
     if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
-        LOGE("Unable to lock input bitmap");
+        ALOGE("Unable to lock input bitmap");
     }
 
     uint8_t *outputImage = NULL;
@@ -107,7 +107,7 @@
 
     result = AndroidBitmap_unlockPixels(env, inputBitmap);
     if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
-        LOGE("Unable to unlock input bitmap");
+        ALOGE("Unable to unlock input bitmap");
     }
 
     if (freeInputRGBA) {
@@ -201,14 +201,14 @@
                 reinterpret_cast<void**>(&outputBuffer) );
 
         if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
-            LOGE("Unable to lock output bitmap");
+            ALOGE("Unable to lock output bitmap");
         }
 
         memcpy(outputBuffer, outputImage, outputWidth * outputHeight * 4);
 
         result = AndroidBitmap_unlockPixels(env, outputBitmap);
         if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
-            LOGE("Unable to unlock output bitmap");
+            ALOGE("Unable to unlock output bitmap");
         }
 
         // Write new Bitmap reference into mDebugOutput class member
diff --git a/apps/CtsVerifier/lib/colorchecker/colorcheckertest.cpp b/apps/CtsVerifier/lib/colorchecker/colorcheckertest.cpp
index 63bce63..46b8cc8 100644
--- a/apps/CtsVerifier/lib/colorchecker/colorcheckertest.cpp
+++ b/apps/CtsVerifier/lib/colorchecker/colorcheckertest.cpp
@@ -236,7 +236,7 @@
         delete[] gradientDirection;
 
     } else {
-        LOGE("Not a color image!");
+        ALOGE("Not a color image!");
     }
 
     delete[] edgeMap;
diff --git a/tests/jni/android_net_cts_NetlinkSocket.cpp b/tests/jni/android_net_cts_NetlinkSocket.cpp
index 1e671c6..f2fc38f 100644
--- a/tests/jni/android_net_cts_NetlinkSocket.cpp
+++ b/tests/jni/android_net_cts_NetlinkSocket.cpp
@@ -31,7 +31,7 @@
 {
     int sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
     if (sock == -1) {
-        LOGE("Can't create socket %s", strerror(errno));
+        ALOGE("Can't create socket %s", strerror(errno));
         jclass SocketException = env->FindClass("java/net/SocketException");
         env->ThrowNew(SocketException, "Can't create socket");
         return;
diff --git a/tests/tests/jni/libjnitest/register.c b/tests/tests/jni/libjnitest/register.c
index d68b536..66eb265 100644
--- a/tests/tests/jni/libjnitest/register.c
+++ b/tests/tests/jni/libjnitest/register.c
@@ -32,25 +32,25 @@
 
     extern int register_InstanceNonce(JNIEnv *);
     if (register_InstanceNonce(env)) {
-        LOGE("failed to register InstanceNonce");
+        ALOGE("failed to register InstanceNonce");
         return JNI_ERR;
     }
 
     extern int register_StaticNonce(JNIEnv *);
     if (register_StaticNonce(env)) {
-        LOGE("failed to register StaticNonce");
+        ALOGE("failed to register StaticNonce");
         return JNI_ERR;
     }
 
     extern int register_JniCTest(JNIEnv *);
     if (register_JniCTest(env)) {
-        LOGE("failed to register JniCTest");
+        ALOGE("failed to register JniCTest");
         return JNI_ERR;
     }
 
     extern int register_JniCppTest(JNIEnv *);
     if (register_JniCppTest(env)) {
-        LOGE("failed to register JniCppTest");
+        ALOGE("failed to register JniCppTest");
         return JNI_ERR;
     }
 
