Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 關於jni編譯32位、64位動態庫(Android.mk和Application.mk文件),jniapplication.mk

關於jni編譯32位、64位動態庫(Android.mk和Application.mk文件),jniapplication.mk

編輯:關於android開發

關於jni編譯32位、64位動態庫(Android.mk和Application.mk文件),jniapplication.mk


 

最近新項目需要編譯64位的動態庫,這裡記錄如何配置。

在jni目錄下加入Android.mk和Application.mk文件。

 

 

Application.mk

1 APP_ABI := armeabi armeabi-v7a arm64-v8a

Android.mk

1 LOCAL_PATH := $(call my-dir)
2 include $(CLEAR_VARS)
3 
4 LOCAL_MODULE := hello-jni
5 LOCAL_SRC_FILES := hello-jni.c
6 
7 include $(BUILD_SHARED_LIBRARY)

 

加上這兩個mk文件後,編譯就會生成armeabi、armeabi-v7a、arm64-v8a的庫文件。

 

補充:

 

Android.mk文件是用來向build system(編譯系統)描述你的源文件的,比如你要編一個靜態庫(.a文件)  或 一個動態庫(.so文件),將由build system解析一次或者多次。

Application.mk目的是GNU Makefile的一部分,描述你的應用所依賴的編譯系統中的模塊(靜態庫或動態庫)。

 

在Android.mk文件中判斷64位還是32位

 1 ifneq ($(filter $(NDK_KNOWN_DEVICE_ABI64S),$(TARGET_ARCH_ABI)),)
 2 # 64-bit ABIs
 3 
 4 ……
 5 ……
 6 
 7 else
 8 # 32-bit ABIs
 9 
10 ……
11 ……
12 ……
13 
14 
15 endif

 

編譯目標類型

每個Android.mk文件後面都會指明要編譯什麼類型的輸出,比如下面:

 

編譯動態庫 : include $(BUILD_SHARED_LIBRARY)    

編譯靜態庫 : include $(BUILD_STATIC_LIBRARY)

輸出已編譯好的so文件 : include $(PREBUILT_SHARED_LIBRARY)

編譯jar文件 : include $(BUILD_JAVA_LIBRARY)

輸出已編譯好的apk文件 : include $(BUILD_PREBUILT)

編譯apk文件 : include $(BUILD_PACKAGE)

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved