2012-04-10 3 views
41

NDK를 실행하여 원시 코드를 컴파일하여 Atom (x86) 프로세서 및 ARM에서 실행하려고합니다. 아무리 APP_ABI를 설정해도 NDK는 armeabi 라이브러리를 생성합니다. APP_ABI에 x86 만 넣어도. 파일 크기는 항상 동일합니다. 여기에 내 Application.mk 파일이 있습니다 :Android ndk-build ignoring 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

Application.mk 파일에 APP_ABI 변수를 넣지 말아야합니다. Android.mk 파일.

이것은 NDK (docs/CPU-ARCH-ABIS.html 파일)의 문서로 작성되었습니다.

+0

일을 내가 이전 질문을 잘 모릅니다하지만 난 당신이 내가 APP_ABI를 넣고 있었어요 여기에 대답했다 좋아 : = android.mk의 모든 것이 작동하지 않지만 application.mk에 넣어 주면 고마워요 .......... –

+1

아직도 사람들이 html을 읽지 않는 이유는 무엇입니까? ndk에서 docs 디렉토리의 파일 :) –

+1

수수께끼가 없습니다. Ppl 게으른 수 있습니다. –

35

Application.mk 파일이없는 경우 project root 아래의 jni 폴더에 파일을 만듭니다. 그것에

project_root/JNI/Application.mk

추가 대상 컴파일 플랫폼 :

APP_ABI = 86

또는 플랫폼 :

APP _ABI : 86 MIPS가

+1

파일에는 파일이 필요 없습니다. 읽고 읽지 않는 이유는 무엇입니까? 논리적으로 또 다른 .mk에 있어야한다는 것은 꽤 난처한 일입니다. 특히 Application.mk없이 armeabi를 빌드하기 때문에! –

4

또한 당신이 APP_ABI 직접 쉘 명령 ndk-build에 설정할 수 있습니다 = armeabi armeabi-V7A :

ndk-build APP_ABI=x86 
+0

이것은 Android Studio에서 externalNativeBuild.ndkBuild를 실행할 때 정확히 수행되는 내용이므로 Application.mk의 APP_ABI는 무시됩니다. https://stackoverflow.com/a/45604243/192373을 참조하십시오. –

관련 문제