diff --git a/.gitignore b/.gitignore
index 9b9578f4ce617a7235485bc296c62418ea92d1c5..b325bc9c215f85da50f8633aa02762e624927a84 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,8 @@ local.properties
 .settings/org.eclipse.ltk.core.refactoring.prefs
 SFLPhone.iml
 
+
+env.sh
 ant.properties
 *.keystore
 SFLPhoneservice*
diff --git a/sflphone-android/.gitignore b/sflphone-android/.gitignore
index 6288f7f0a8b6a1d7c6176e5454625988935ad77b..d3317a063771008c40487fd402de67d19e01af9e 100644
--- a/sflphone-android/.gitignore
+++ b/sflphone-android/.gitignore
@@ -16,9 +16,6 @@ src/org/sflphone/views/paralloid
 
 AndroidUnusedResources1.6.2.jar
 
-jni/pjproject-android/build
-jni/pjproject-android/pjsip/build/.pjsua2-lib-arm-unknown-linux-androideabi.depend
-jni/pjproject-android/pjsip/build/.pjsua2-test-arm-unknown-linux-androideabi.depend
 .classpath
 .project
 .settings/org.eclipse.jdt.core.prefs
@@ -33,7 +30,7 @@ jni/sflphone_wrapper.h
 jni/sflphoneservice_loader.c
 
 
-
+.ant-targets-build.xml
 ant.properties
 *.keystore
 SFLPhoneservice*
diff --git a/sflphone-android/jni/Android.mk b/sflphone-android/jni/Android.mk
index ad37e636faaa53a5c3011d8a8b732378000182a6..49a7b9055339462aff24f215cc38878c64c49401 100644
--- a/sflphone-android/jni/Android.mk
+++ b/sflphone-android/jni/Android.mk
@@ -28,14 +28,16 @@
  #  as that of the covered work.
 
 LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_CODECS_PATH = $(SFLPHONE_SRC)/daemon/src/audio/codecs
-LOCAL_SRC_PATH = $(SFLPHONE_SRC)/daemon/src
 
 $(info SFLPHONE_CONTRIB=$(SFLPHONE_CONTRIB))
 $(info SFLPHONE_SRC=$(SFLPHONE_SRC))
 
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := sflphone
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/.libs/libsflphone.so
+include $(PREBUILT_SHARED_LIBRARY)
+
 include $(CLEAR_VARS)
 VERSION="1.1.0"
 MY_PREFIX=/sdcard
@@ -43,7 +45,17 @@ MY_DATADIR=/data/data
 
 ARCH=$(ANDROID_ABI)
 
-CPP_STATIC=$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++$(CXXSTL)/libs/$(ARCH)/libgnustl_static.a
+CPP_STATIC= $(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++$(CXXSTL)/libs/$(ARCH)/libgnustl_static.a \
+			$(SFLPHONE_CONTRIB)/lib/libucommon.a \
+			$(SFLPHONE_CONTRIB)/lib/libccrtp.a \
+			$(SFLPHONE_CONTRIB)/lib/libpjlib-util-arm-unknown-linux-androideabi.a \
+			$(SFLPHONE_CONTRIB)/lib/libpj-arm-unknown-linux-androideabi.a \
+			$(SFLPHONE_CONTRIB)/lib/libogg.a \
+			$(SFLPHONE_CONTRIB)/lib/libFLAC.a \
+			$(SFLPHONE_CONTRIB)/lib/libgcrypt.a \
+			$(SFLPHONE_CONTRIB)/lib/libgpg-error.a \
+
+
 
 LOCAL_CPPFLAGS += -frtti
 LOCAL_CPPFLAGS += -fexceptions
@@ -51,7 +63,6 @@ LOCAL_CPPFLAGS += -fexceptions
 LOCAL_SRC_FILES :=  sflphone_wrapper.cpp
 
 LOCAL_C_INCLUDES += $(LOCAL_PATH) \
-					$(LOCAL_SRC_PATH) \
 					$(SFLPHONE_SRC)/daemon \
 					$(SFLPHONE_SRC)/daemon/src \
 					$(SFLPHONE_SRC)/contrib/$(TARGET_TUPLE)/include
@@ -78,7 +89,7 @@ LOCAL_LDLIBS  += 	-lz \
 					-lOpenSLES \
 					-L$(SFLPHONE_CONTRIB)/lib \
 					-L$(SFLPHONE_SRC)/daemon/src/.libs \
-					-lsflphone \
+					$(SFLPHONE_SRC)/daemon/src/.libs/libsflphone.a \
 					-lavcodec \
 					-lexpat -lhogweed -lpj-arm-unknown-linux-androideabi \
 					-lpjsip-simple-arm-unknown-linux-androideabi \
@@ -103,5 +114,51 @@ LOCAL_LDLIBS  += 	-lz \
 					-lspeex -lvorbisenc \
 					$(CPP_STATIC)
 
-LOCAL_SHARE_LIBRARIES := libsflphone
 include $(BUILD_SHARED_LIBRARY)
+
+########### Codecs ###############
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := ulaw
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_ulaw.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := alaw
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_alaw.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := g722
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_g722.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := speex_nb
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_speex_nb.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := speex_ub
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_speex_ub.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := speex_wb
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_speex_wb.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := opus
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_opus.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := gsm
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_gsm.so
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := g729
+LOCAL_SRC_FILES := $(SFLPHONE_SRC)/daemon/src/audio/codecs/libcodec_g729.so
+include $(PREBUILT_SHARED_LIBRARY)
diff --git a/sflphone-android/jni/Application.mk b/sflphone-android/jni/Application.mk
index 3d569aaaae7b9c7e9eb7cf3a0f562d1277a092fa..2d6a02b96d95493683404035c156963046909f87 100644
--- a/sflphone-android/jni/Application.mk
+++ b/sflphone-android/jni/Application.mk
@@ -35,7 +35,13 @@ APP_OPTIM := debug
 APP_ABI := ${ANDROID_ABI}
 NDK_TOOLCHAIN_VERSION := 4.8
 
-#APP_MODULES += libcodec_ulaw
-#APP_MODULES += libcodec_alaw
-#APP_MODULES += libcodec_g722
+APP_MODULES += ulaw
+APP_MODULES += alaw
+APP_MODULES += g722
+APP_MODULES += g729
+APP_MODULES += speex_wb
+APP_MODULES += speex_ub
+APP_MODULES += speex_nb
+APP_MODULES += gsm
+APP_MODULES += opus
 APP_MODULES += libsflphonejni
diff --git a/sflphone-android/jni/jni_callbacks.h b/sflphone-android/jni/jni_callbacks.h
deleted file mode 100644
index 234950118a87e4119662ef8e05b2e7232c7f976c..0000000000000000000000000000000000000000
--- a/sflphone-android/jni/jni_callbacks.h
+++ /dev/null
@@ -1,37 +0,0 @@
-
-void on_new_call_created_wrapper (const std::string& accountID,
-                                         const std::string& callID,
-                                         const std::string& to);
-void on_call_state_changed_wrapper(const std::string& callID,
-                                          const std::string& to);
-void on_incoming_call_wrapper (const std::string& accountID,
-                                      const std::string& callID,
-                                      const std::string& from);
-void on_transfer_state_changed_wrapper (const std::string& result);
-
-void on_conference_created_wrapper (const std::string& confID);
-void on_conference_removed_wrapper (const std::string& confID);
-void on_conference_state_changed_wrapper(const std::string& confID,const std::string& state);
-void on_incoming_message_wrapper(const std::string& ID, const std::string& from, const std::string& msg);
-void on_newPresSubClientNotification_wrapper(const std::string& uri, const std::string& basic, const std::string& note);
-void on_newPresSubServerRequest_wrapper(const std::string& remote);
-
-void on_secure_sdes_on_wrapper(const std::string& callID);
-void on_secure_sdes_off_wrapper(const std::string& callID);
-void on_secure_zrtp_on_wrapper(const std::string& callID,const std::string& cipher);
-void on_secure_zrtp_off_wrapper(const std::string& callID);
-void on_show_sas_wrapper(const std::string& callID, const std::string& sas, const bool& verified);
-void on_zrtp_not_supported_wrapper(const std::string& callID);
-void on_zrtp_negociation_failed_wrapper(const std::string& callID, const std::string& reason, const std::string& severity);
-void on_rtcp_report_received_wrapper(const std::string& callID, const std::map<std::basic_string<char>, int>& stats);
-
-void on_accounts_changed_wrapper ();
-void on_account_state_changed_wrapper (const std::string& accoundID, int const& state);
-void on_account_state_changed_with_code_wrapper (const std::string& accoundID, const std::string& state, const int32_t& code);
-std::vector<int> get_hardware_audio_format_wrapper();
-void on_volume_changed_wrapper (void);
-void on_stun_status_failed_wrapper (const std::string& accountID);
-void on_history_change_wrapper (void);
-
-void on_record_playback_filepath_wrapper(const std::string& id, const std::string& filename);
-void on_recording_state_changed_wrapper(const std::string& callID, const bool& state);
diff --git a/sflphone-android/src/org/sflphone/service/SipService.java b/sflphone-android/src/org/sflphone/service/SipService.java
index 75ecae29d227773f8facdecfaac12c69d0e9ed52..41c81b80f4e60d2bb33a8bdddacf052ed48888ee 100644
--- a/sflphone-android/src/org/sflphone/service/SipService.java
+++ b/sflphone-android/src/org/sflphone/service/SipService.java
@@ -216,7 +216,15 @@ public class SipService extends Service {
             System.loadLibrary("gnustl_shared");
             System.loadLibrary("crypto");
             System.loadLibrary("ssl");
-            System.loadLibrary("sflphone");
+            System.loadLibrary("codec_ulaw");
+            System.loadLibrary("codec_alaw");
+            System.loadLibrary("codec_speex_nb");
+            System.loadLibrary("codec_speex_ub");
+            System.loadLibrary("codec_speex_wb");
+            System.loadLibrary("codec_g729");
+            System.loadLibrary("codec_gsm");
+            System.loadLibrary("codec_opus");
+            System.loadLibrary("sflphonejni");
             isPjSipStackStarted = true;
 
         } catch (UnsatisfiedLinkError e) {