2012-04-10 82 views
41

我想運行NDK編譯本機代碼以運行Atom(x86)處理器以及ARM。無論我如何設置APP_ABI,NDK都會生成armeabi庫。即使我只將APP用於APP_ABI。文件大小始終相同。這裏是我的Application.mk文件:Android ndk生成忽略APP_ABI:= x86

LOCAL_PATH := $(call my-dir) 
APP_ABI := x86 
include $(CLEAR_VARS) 

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 
LOCAL_MODULE := myjni-jni 
LOCAL_SRC_FILES := myjni-jni.c 

include $(BUILD_SHARED_LIBRARY) 

不管我APP_ABI後把我越來越armeabi其總是相同的尺寸。這裏有什麼問題?我正在使用最新的NDK。

回答

72

你應該把APP_ABI變量放在Application.mk文件不是Android.mk文件。

它是用NDK(docs/CPU-ARCH-ABIS.html文件)的文檔編寫的。

+0

+1我不知道以前的問題,但我很喜歡你在這裏回答我把APP_ABI :=所有在android.mk,它不工作,但是當我把它放在application.mk它的作品非常感謝.......... – 2012-04-11 11:59:49

+1

它仍然是一個謎爲什麼人們不會閱讀HTML來自ndk中docs目錄的文件 – 2012-04-11 17:56:16

+1

沒有神祕感。 Ppl很懶。 – 2013-12-19 04:28:45

35

如果您沒有Application.mk文件,請在project root下創建一個位於jni文件夾內的文件夾。

project_root/JNI/Application.mk

添加目標編譯平臺,它:

APP_ABI:= 86

或平臺:

APP _ABI:= armeabi armeabi-V7A 86 MIPS

+1

該文件甚至不需要其他任何東西。爲什麼不讀?這很複雜,它需要在另一個.mk邏輯上。尤其是因爲它會在沒有Application.mk的情況下構建armeabi! – 2014-08-27 05:23:23

4

您也可以設置APP_ABI直接ndk-build shell命令:

ndk-build APP_ABI=x86 
+0

這正是您在Android Studio中運行externalNativeBuild.ndkBuild時發生的問題,因此Application.mk中的任何APP_ABI都會在此處被忽略,請參閱https://stackoverflow.com/a/45604243/192373 – 2017-08-10 10:15:15