diff --git a/suite/audio_quality/lib/src/task/TaskSave.cpp b/suite/audio_quality/lib/src/task/TaskSave.cpp
index 18dfb5e..64a1928 100644
--- a/suite/audio_quality/lib/src/task/TaskSave.cpp
+++ b/suite/audio_quality/lib/src/task/TaskSave.cpp
@@ -14,6 +14,7 @@
  * the License.
  */
 
+#include <inttypes.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <errno.h>
@@ -127,7 +128,8 @@
             if (it->second.getType() == TaskCase::Value::ETypeDouble) {
                 details.appendFormat("   %s: %f\n", it->first.string(), it->second.getDouble());
             } else { //64bit int
-                details.appendFormat("   %s: %lld\n", it->first.string(), it->second.getInt64());
+                details.appendFormat("   %s: %" PRId64 "\n", it->first.string(),
+                                     it->second.getInt64());
             }
         }
         MSG("%s", details.string());
diff --git a/tests/tests/jni/libjnitest/macroized_tests.c b/tests/tests/jni/libjnitest/macroized_tests.c
index e8ac08f..795c682 100644
--- a/tests/tests/jni/libjnitest/macroized_tests.c
+++ b/tests/tests/jni/libjnitest/macroized_tests.c
@@ -29,6 +29,7 @@
 #endif
 
 #include "helper.h"
+#include <inttypes.h>
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
@@ -773,7 +774,7 @@
 
     va_end(args);
 
-    return FAIL_IF_UNEQUAL("%lld", -80080080087LL, result);
+    return FAIL_IF_UNEQUAL("%" PRId64, -80080080087LL, result);
 }
 
 TEST_DECLARATION(CallLongMethod) {
@@ -1265,8 +1266,8 @@
     }
 
     jvalue jargs[] = {
-        {d: 0.0}, {f: 1.0f}, {j: 2LL}, {i: 3}, {c: 4}, {s: 5}, {b: 6},
-        {z: true}, {l: biscuits}
+        {.d = 0.0}, {.f = 1.0f}, {.j = 2LL}, {.i = 3}, {.c = 4}, {.s = 5},
+        {.b = 6}, {.z = true}, {.l = biscuits}
     };
 
     jboolean result;
@@ -1388,17 +1389,17 @@
     }
 
     jvalue jargs[] = {
-        {i: 1}, {i: 2}, {i: 3}, {i: 4},
-        {i: 5}, {i: 6}, {i: 7}, {i: 8}, {i: 9}, 
-        {i: 10}, {i: 11}, {i: 12}, {i: 13}, {i: 14},
-        {i: 15}, {i: 16}, {i: 17}, {i: 18}, {i: 19}, 
-        {i: 20}, {i: 21}, {i: 22}, {i: 23}, {i: 24},
-        {i: 25}, {i: 26}, {i: 27}, {i: 28}, {i: 29}, 
-        {i: 30}, {i: 31}, {i: 32}, {i: 33}, {i: 34},
-        {i: 35}, {i: 36}, {i: 37}, {i: 38}, {i: 39}, 
-        {i: 40}, {i: 41}, {i: 42}, {i: 43}, {i: 44},
-        {i: 45}, {i: 46}, {i: 47}, {i: 48}, {i: 49},
-        {i: 50}
+        {.i = 1}, {.i = 2}, {.i = 3}, {.i = 4},
+        {.i = 5}, {.i = 6}, {.i = 7}, {.i = 8}, {.i = 9}, 
+        {.i = 10}, {.i = 11}, {.i = 12}, {.i = 13}, {.i = 14},
+        {.i = 15}, {.i = 16}, {.i = 17}, {.i = 18}, {.i = 19}, 
+        {.i = 20}, {.i = 21}, {.i = 22}, {.i = 23}, {.i = 24},
+        {.i = 25}, {.i = 26}, {.i = 27}, {.i = 28}, {.i = 29}, 
+        {.i = 30}, {.i = 31}, {.i = 32}, {.i = 33}, {.i = 34},
+        {.i = 35}, {.i = 36}, {.i = 37}, {.i = 38}, {.i = 39}, 
+        {.i = 40}, {.i = 41}, {.i = 42}, {.i = 43}, {.i = 44},
+        {.i = 45}, {.i = 46}, {.i = 47}, {.i = 48}, {.i = 49},
+        {.i = 50}
     };
 
     jboolean result;
diff --git a/tests/tests/net/jni/NativeMultinetworkJni.c b/tests/tests/net/jni/NativeMultinetworkJni.c
index 9156504..2fa5291 100644
--- a/tests/tests/net/jni/NativeMultinetworkJni.c
+++ b/tests/tests/net/jni/NativeMultinetworkJni.c
@@ -47,7 +47,7 @@
     const int saved_errno = errno;
     freeaddrinfo(res);
 
-    ALOGD("android_getaddrinfofornetwork(%llu, %s) returned rval=%d errno=%d",
+    ALOGD("android_getaddrinfofornetwork(%" PRIu64 ", %s) returned rval=%d errno=%d",
           handle, kHostname, rval, saved_errno);
     return rval == 0 ? 0 : -saved_errno;
 }
@@ -61,7 +61,7 @@
     errno = 0;
     int rval = android_setprocnetwork(handle);
     const int saved_errno = errno;
-    ALOGD("android_setprocnetwork(%llu) returned rval=%d errno=%d",
+    ALOGD("android_setprocnetwork(%" PRIu64 ") returned rval=%d errno=%d",
           handle, rval, saved_errno);
     return rval == 0 ? 0 : -saved_errno;
 }
@@ -82,7 +82,7 @@
     errno = 0;
     int rval = android_setsocknetwork(handle, fd);
     const int saved_errno = errno;
-    ALOGD("android_setprocnetwork(%llu, %d) returned rval=%d errno=%d",
+    ALOGD("android_setprocnetwork(%" PRIu64 ", %d) returned rval=%d errno=%d",
           handle, fd, rval, saved_errno);
     close(fd);
     return rval == 0 ? 0 : -saved_errno;
diff --git a/tests/tests/opengl/libopengltest/color_one.cpp b/tests/tests/opengl/libopengltest/color_one.cpp
index 27d400c..c56a937 100755
--- a/tests/tests/opengl/libopengltest/color_one.cpp
+++ b/tests/tests/opengl/libopengltest/color_one.cpp
@@ -111,7 +111,7 @@
 
 
     glReadPixels(width/2, height/2, 1,1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)&data);
-    for(int i = 0; i < sizeof(data); i++){
+    for(size_t i = 0; i < sizeof(data); i++){
         dataFloat[i] = data[i];
     }
 
