2012-04-10 24 views
41

Atom (x86) işlemci yanı sıra ARM üzerinde çalıştırmak için yerel kodu derlemek için NDK çalıştırmaya çalışıyorum. APP_ABI'yi nasıl ayarladığım önemli değil, NDK, armeabi kitaplığı oluşturuyor. APP_ABI için sadece x86 koysam bile. Ve dosya boyutu her zaman aynıdır. Ben armeabi ve hep aynı boyutta alıyorum APP_ABI sonra ne koymak No MatterAndroid ndk-build göz ardı 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) 

: İşte benim Application.mk dosyasıdır. Neyin var? En son NDK kullanıyorum.

cevap

72

Sen Application.mk dosyası değil Android.mk dosya içinde APP_ABI değişkeni koymak gerekir.

NDK belgelerinde (docs/CPU-ARCH-ABIS.html dosyası) yazılmıştır.

+0

+1 i önceki soruyu bilmiyorum ama ben sana o APP_ABI koyuyordum burada cevap vermiş sevdim : = android.mk içinde tüm ve çalışma değildi ama ben application.mk koydum çok teşekkürler çok çalışıyor .......... –

+1

Benim için hala bir gizem, insanlar neden html okumaz ndk'deki docs dizinindeki dosyalar :) –

+1

Gizem yok. Ppl tembel ol. –

35

Application.mk dosyanız yoksa, project root altında jni klasöründe bir tane oluşturun. buna

project_root/jni/Application.mk

Ekleme hedef derleme platformu:

APP_ABI: = x86

Ya platformlar:

APP _ABI: x86 mips

+1

dosyada başka bir şeye de gerek yok. ve neden okunmuyor? mantıksal olarak başka bir .mk içinde olması gereken oldukça şaşırtıcı. Özellikle Application.mk olmadan armeabi yapacağı için! –

4

Ayrıca APP_ABI doğrudan kabuk komutu ndk-build ayarlayabilirsiniz = armeabi armeabi-v7a:

ndk-build APP_ABI=x86 
+0

Bu, Studio Studio'da externalNativeBuild.ndkBuild'i çalıştırdığınızda kapağın altında gerçekleşen şeydir, bu nedenle Application.mk uygulamasındaki herhangi bir APP_ABI yoksayılır, bkz. Https://stackoverflow.com/a/45604243/192373 –

İlgili konular