Android實例說明

摘自:http://www.2cto.com/kf/201204/125939.html

將ffmpeg編譯成幾個.so動態鏈接庫之後(後面再說如何在android下編譯ffmpeg源代碼),就可以引用頭文件並直接寫自己的jni接口了,做完這些,就可以寫android下的make文件了下面就介紹一下androidmake文件的寫法。
       首先最簡單的mk文件可以參照ndk目錄下samples目錄中的hello-jni工程,這裏講講如何在mk文件中引用第三方的動態和靜態庫以及如何引用系統庫
(有說錯的地方請指教)。

LOCAL_PATH := $(call my-dir)//標準mk語句,指編譯路徑,所有mk文件第一句都是這個

/**這個模塊表示引用了一個本地的靜態庫
include $(CLEAR_VARS) //清除各種變量,因爲這些變量是靜態全局的,如果清除,下次編譯時又會用到這些變量造成出錯
LOCAL_MODULE    := libopencore-amrnb  //本地靜態庫模塊的名字,這個名字在下面編譯jni時需要引用
LOCAL_SRC_FILES := lib/libopencore-amrnb.a //本地靜態庫文件地址
include $(PREBUILT_STATIC_LIBRARY)  //PREBUILT_STATIC_LIBRARY表示先build一個靜態庫
**/

/**這個模塊表示引用了一個本地的動態鏈接庫
include $(CLEAR_VARS) //同上 www.2cto.com
LOCAL_MODULE    := libswscale  //本地動態庫模塊的名字
LOCAL_SRC_FILES := lib/libswscale.so //本地動態庫文件位置
include $(PREBUILT_SHARED_LIBRARY) //表示先build這個動態鏈接庫
**/

include $(CLEAR_VARS)
LOCAL_MODULE    := libavutil
LOCAL_SRC_FILES := lib/libavutil.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := libavcore
LOCAL_SRC_FILES := lib/libavcore.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := libavcodec
LOCAL_SRC_FILES := lib/libavcodec.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := libavformat
LOCAL_SRC_FILES := lib/libavformat.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := libopenal
LOCAL_SRC_FILES := lib/libopenal.so
include $(PREBUILT_SHARED_LIBRARY)

/**此模塊編譯自己寫的jni文件
include $(CLEAR_VARS)
LOCAL_MODULE    := ffmpeg-jni  模塊名字
LOCAL_C_INCLUDES:= $(LOCAL_PATH)/include  //我將所有頭文件都放到了jni目錄的include目錄下,這句表示所有引用頭文件都到這個目錄下去找
LOCAL_SRC_FILES := ../../test-ffmpeg-jni/ffmpeg-jni.c \  //這句表示jni文件的位置,因爲我裝了一個CDT插件去開發c代碼,所以將jni文件都放在了另一個test-ffmpeg-jni工程下,其中../表示上級目錄
                ../../test-ffmpeg-jni/openal.c \
                ../../test-ffmpeg-jni/opengl.cpp
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libavutil libswscale openal  //這個表示編譯本模塊需要用到的其它庫,這幾個名字都是前面定義的模塊名
LOCAL_STATIC_LIBRARIES := libopencore-amrnb  //同上
LOCAL_LDLIBS :=  -L$(SYSROOT)/usr/lib -llog -lGLESv2//表示使用了系統的log庫和GLESv2庫
include $(BUILD_SHARED_LIBRARY)   //注意與前面的不同之處
**/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章