android使用mk檔案的進階

來源:互聯網
上載者:User

最近在搞android上的rtmp協議的播放,將ffmpeg編譯成幾個.so動態連結程式庫之後(後面再說如何在android下編譯ffmpeg原始碼),就可以引用標頭檔並直接寫自己的jni介面了,做完這些,就可以寫android下的make檔案了下面就介紹一下androidmake檔案的寫法。
首先最簡單的mk檔案可以參照ndk目錄下samples目錄中的hello-jni工程,這裡講講如何在mk檔案中引用第三方的動態和靜態庫以及如何引用系統庫
(其實我是linux小白,有說錯的地方請指教)
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)   //注意與前面的不同之處
**/ 


摘自  落埃無蒂的專欄 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.