diff --git a/contrib/src/boost/rules.mak b/contrib/src/boost/rules.mak
index 7f70fe77c0edb807a3cd419a94b041a3a9228194..89783f26161d16510220d98d18ad06f85d5fa96f 100644
--- a/contrib/src/boost/rules.mak
+++ b/contrib/src/boost/rules.mak
@@ -53,7 +53,7 @@ ifdef HAVE_WIN32
 	cd $< && echo ";" >> user-config.jam
 endif
 ifdef HAVE_ANDROID
-	cd $< && echo "using gcc : android : g++" > user-config.jam
+	cd $< && echo "using gcc : android : clang++" > user-config.jam
 	cd $< && echo ":" >> user-config.jam
 	cd $< && echo "<archiver>${HOST}-ar" >> user-config.jam
 	cd $< && echo "<compileflags>-DANDROID" >> user-config.jam
diff --git a/contrib/src/main.mak b/contrib/src/main.mak
index e12be91490dee7425cda4d66838c5724c1979bec..5e126d0524689fe65425a5bfcc7cb269c2b3fe75 100644
--- a/contrib/src/main.mak
+++ b/contrib/src/main.mak
@@ -117,8 +117,8 @@ endif
 endif
 
 ifdef HAVE_ANDROID
-CC :=  $(CROSS_COMPILE)gcc --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
-CXX := $(CROSS_COMPILE)g++ --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
+CC := clang
+CXX := clang++
 endif
 
 ifdef HAVE_MACOSX
diff --git a/contrib/src/pjproject/notestsapps.patch b/contrib/src/pjproject/notestsapps.patch
index 662f1dbf1630e69c90863bc98a9843f71a09769f..8bf957b3680a42aa7f05ff23b2031ae92f6b72bc 100644
--- a/contrib/src/pjproject/notestsapps.patch
+++ b/contrib/src/pjproject/notestsapps.patch
@@ -79,6 +79,15 @@ diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile
 index d2a5c2a..7e2ec60 100644
 --- a/pjsip/build/Makefile
 +++ b/pjsip/build/Makefile
+@@ -140,7 +140,7 @@ export PJSUA2_LIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
+ 			   account.o endpoint.o json.o persistent.o types.o \
+ 			   siptypes.o call.o presence.o media.o
+ export PJSUA2_LIB_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
+-export PJSUA2_LIB_CXXFLAGS = $(PJSUA2_LIB_CFLAGS) 
++export PJSUA2_LIB_CXXFLAGS = $(_CXXFLAGS) $(PJ_VIDEO_CFLAGS) 
+ export PJSUA2_LIB_LDFLAGS += $(PJSUA_LIB_LDLIB) \
+ 			     $(PJSIP_UA_LDLIB) \
+ 			     $(PJSIP_SIMPLE_LDLIB) \
 @@ -165,7 +165,6 @@ export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
  export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
  export PJSUA2_TEST_CXXFLAGS = $(PJSUA2_LIB_CFLAGS) 
diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak
index 873bfd8e03a7d137f95251867eddffaf32b0f2a2..83eaab679eeb23fecf663aaf883b80906f34fee0 100644
--- a/contrib/src/pjproject/rules.mak
+++ b/contrib/src/pjproject/rules.mak
@@ -15,9 +15,12 @@ PJPROJECT_OPTIONS := --disable-oss          \
                      --disable-speex-codec  \
                      --disable-ilbc-codec   \
                      --disable-opencore-amr \
+                     --disable-silk         \
                      --disable-sdl          \
                      --disable-ffmpeg       \
                      --disable-v4l2         \
+                     --disable-openh264     \
+                     --disable-resample     \
                      --enable-ssl=gnutls
 
 ifdef HAVE_ANDROID
@@ -30,7 +33,8 @@ ifdef HAVE_IOS
 PJPROJECT_OPTIONS += --with-ssl=$(PREFIX)
 endif
 
-PJPROJECT_EXTRA_CFLAGS = -DPJ_ICE_MAX_CAND=32 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2
+PJPROJECT_EXTRA_CFLAGS = -DPJ_ICE_MAX_CAND=32 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -std=gnu11
+PJPROJECT_EXTRA_CXXFLAGS = -DPJ_ICE_MAX_CAND=32 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -std=gnu++11
 
 ifdef HAVE_WIN64
 PJPROJECT_EXTRA_CFLAGS += -DPJ_WIN64=1
@@ -76,5 +80,5 @@ ifdef HAVE_IOS
 else
 	cd $< && $(HOSTVARS) ./aconfigure $(HOSTCONF) $(PJPROJECT_OPTIONS)
 endif
-	cd $< && CFLAGS="$(PJPROJECT_EXTRA_CFLAGS)" $(MAKE) && $(MAKE) install
+	cd $< && CFLAGS="$(PJPROJECT_EXTRA_CFLAGS)" CXXFLAGS="$(PJPROJECT_EXTRA_CXXFLAGS)" $(MAKE) && $(MAKE) install
 	touch $@
diff --git a/contrib/src/vorbis/android.patch b/contrib/src/vorbis/android.patch
new file mode 100644
index 0000000000000000000000000000000000000000..ba42da7cf674124a96acf10c28b2bf38236bf05c
--- /dev/null
+++ b/contrib/src/vorbis/android.patch
@@ -0,0 +1,11 @@
+--- libvorbis/configure.ac.orig	2012-09-07 00:17:47.000000000 +0200
++++ libvorbis/configure.ac	2012-09-07 00:18:01.000000000 +0200
+@@ -130,5 +130,5 @@
+ 		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" 
+-		CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
++		CFLAGS="-O20 -ffast-math -D_REENTRANT -fsigned-char"
+ #              	PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
+-		PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"
++		PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline"
+ 
+
diff --git a/contrib/src/vorbis/rules.mak b/contrib/src/vorbis/rules.mak
index d4ce0ef3f828d359303b2ef8a0f109d0d51ddb3a..c0920b1f70b6009fa8cc828d0d6000e7d99d9f16 100644
--- a/contrib/src/vorbis/rules.mak
+++ b/contrib/src/vorbis/rules.mak
@@ -29,6 +29,9 @@ ifndef HAVE_IOS
 	$(APPLY) $(SRC)/vorbis/osx.patch
 else
 	$(APPLY) $(SRC)/vorbis/ios.patch
+endif
+ifdef HAVE_ANDROID
+	$(APPLY) $(SRC)/vorbis/android.patch
 endif
 	$(UPDATE_AUTOCONFIG)
 	$(MOVE)
diff --git a/contrib/src/vpx/rules.mak b/contrib/src/vpx/rules.mak
index 0d09bd028fe3d831b8b459a1fe25d91c67cea144..0b552698ab0e08d9eabef445b5b9a8ea3b7e3188 100644
--- a/contrib/src/vpx/rules.mak
+++ b/contrib/src/vpx/rules.mak
@@ -1,10 +1,10 @@
 # libvpx
 
 #Libav doesnt support new vpx version
-ifdef HAVE_IOS
-VPX_HASH := cbecf57f3e0d85a7b7f97f3ab7c507f6fe640a93
-else
+ifdef HAVE_MACOSX
 VPX_HASH := c74bf6d889992c3cabe017ec353ca85c323107cd
+else
+VPX_HASH := v1.6.0
 endif
 VPX_URL := https://github.com/webmproject/libvpx/archive/$(VPX_HASH).tar.gz
 #VPX_GITURL := https://code.google.com/p/webm.libvpx
@@ -115,9 +115,9 @@ LOCAL_HOSTVARS=
 ifdef HAVE_ANDROID
 # vpx configure.sh overrides our sysroot and it looks for it itself, and
 # uses that path to look for the compiler (which we already know)
-VPX_CONF += --sdk-path=$(shell dirname $(shell which $(CROSS_COMPILE)gcc))
+VPX_CONF += --sdk-path=$(ANDROID_TOOLCHAIN)/bin
 # needed for cpu-features.h
-VPX_CONF += --extra-cflags="-I $(ANDROID_NDK)/sources/cpufeatures/"
+VPX_CONF += --extra-cflags="-I$(ANDROID_NDK)/sources/cpufeatures/"
 # set an explicit alternative libc since the sysroot override can make it blank
 VPX_CONF += --libc=$(SYSROOT)
 LOCAL_HOSTVARS=$(HOSTVARS)
diff --git a/src/media/audio/opensl/opensllayer.cpp b/src/media/audio/opensl/opensllayer.cpp
index 1d3f6efe9ae2893bbbc590d2b803f403002321f5..c113e9fd2b9674a92cfab4641c54f56325d9412a 100644
--- a/src/media/audio/opensl/opensllayer.cpp
+++ b/src/media/audio/opensl/opensllayer.cpp
@@ -195,11 +195,11 @@ OpenSLLayer::dbgEngineGetBufCount() {
     return count_player;
 }
 
-bool
+void
 OpenSLLayer::engineServicePlay(bool waiting) {
     if (waiting) {
         playCv.notify_one();
-        return false;
+        return;
     }
     sample_buf* buf;
     while (player_ and freePlayBufQueue_.front(&buf)) {
@@ -214,14 +214,13 @@ OpenSLLayer::engineServicePlay(bool waiting) {
         } else
             break;
     }
-    return true;
 }
 
-bool
+void
 OpenSLLayer::engineServiceRing(bool waiting) {
     if (waiting) {
         playCv.notify_one();
-        return false;
+        return;
     }
     sample_buf* buf;
     while (ringtone_ and freeRingBufQueue_.front(&buf)) {
@@ -239,14 +238,13 @@ OpenSLLayer::engineServiceRing(bool waiting) {
             break;
         }
     }
-    return true;
 }
 
-bool
+void
 OpenSLLayer::engineServiceRec(bool waiting) {
     playCv.notify_one();
     recCv.notify_one();
-    return true;
+    return;
 }
 
 void
diff --git a/src/media/audio/opensl/opensllayer.h b/src/media/audio/opensl/opensllayer.h
index 5a23894b5320fd0827d81bb28cd10dcf450cfda3..c3a58efcb75fabf2674fde5df5da044f455132d8 100644
--- a/src/media/audio/opensl/opensllayer.h
+++ b/src/media/audio/opensl/opensllayer.h
@@ -113,9 +113,9 @@ class OpenSLLayer : public AudioLayer {
             return "";
         }
 
-        bool engineServicePlay(bool waiting);
-        bool engineServiceRing(bool waiting);
-        bool engineServiceRec(bool waiting);
+        void engineServicePlay(bool waiting);
+        void engineServiceRing(bool waiting);
+        void engineServiceRec(bool waiting);
 
     private:
         void audioCaptureFillBuffer(AudioBuffer &buffer);