Android之JNI:Android Studio使用Android.mk編譯C/C++源碼

來源:互聯網
上載者:User

標籤:

1.產生.h標頭檔,配置.c檔案(可查看Android之JNI:Android Studio使用Gradle編譯C/C++源碼)2.編寫Android.mk
//Android.mk簡介參考連結:http://blog.sina.com.cn/s/blog_602f8770010148ce.html
LOCAL_PATH:= $(call my-dir) //Android.mk 檔案首先必須定義LOCAL_PATH變數,以便用於在開發樹中尋找源檔案.宏函數‘my-dir‘由編譯系統提供,用於返回當前路徑(即包含Android.mk的目錄)
include $(CLEAR_VARS) //CLEAR_VARS由編譯系統提供,指定讓GNU MAKEFILE清除許多LOCAL_XXX變數(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH.因為所有的編譯控制檔案都在同一個GNU MAKE執行環境中,所有的變數都是全域的,所以有必要.
LOCAL_MODULE := juziJni //表示編譯的動態庫名稱.名稱必須唯一,而且不包含任何空格且不要以lib開頭
LOCAL_SRC_FILES:= jni_use.c //表示原始碼檔案
include $(BUILD_SHARED_LIBRARY) //表示編譯產生共用庫,是編譯系統提供的變數,指向一個GNU Makefile指令碼,負責收集自從上次調用‘include $(CLEAR_VARS)‘以來,定義在LOCAL_XXX變數中的所有資訊,並且決定編譯什麼,如何正確地去做.(BUILD_STATIC_LIBRARY:編譯為靜態庫;BUILD_SHARED_LIBRARY :編譯為動態庫;BUILD_EXECUTABLE:編譯為Native C可執行程式)
3.linux環境下使用ndk-build命令編譯產生.so檔案
若要指定架構,可以使用如下命令: 
 
  1. ndk-build APP_ABI="armeabi armeabi-v7a x86 mips"
4.使用產生的.so檔案【Android之Android Studio下使用JNI:Android Studio下使用.so檔案】


小Tips:1.Android.mk:2: *** missing separator.  Stop.
LOCAL_PATH:= $(call my-dir)
include$(CLEAR_VARS)
LOCAL_MODULE := juziJni
LOCAL_SRC_FILES:= jni_use.c
include$(BUILD_SHARED_LIBRARY)
解決辦法:$符號前面必須加一個空格
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := juziJni
LOCAL_SRC_FILES:= jni_use.c
include $(BUILD_SHARED_LIBRARY)
2./home/emily/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: fatal error: ./obj/local/armeabi/PassWorld: Input/output errorcollect2: error: ld returned 1 exit status解決辦法:在虛擬機器和window的共用檔案中編譯會出現這種問題,copy項目至linux目錄即可。

來自為知筆記(Wiz)

Android之JNI:Android Studio使用Android.mk編譯C/C++源碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.