2012-04-10 37 views
41

Tôi đang cố gắng chạy NDK để biên dịch mã gốc để chạy trên bộ xử lý Atom (x86) cũng như ARM. Không có vấn đề làm thế nào tôi đặt APP_ABI, NDK đang tạo ra thư viện armeabi. Ngay cả khi tôi chỉ đặt x86 cho APP_ABI. Và kích thước tệp luôn giống nhau. đây là tệp Application.mk của tôi:Android ndk-build bỏ qua 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) 

Không có vấn đề gì tôi đặt sau APP_ABI Tôi nhận được armeabi và kích thước luôn bằng nhau. Có gì sai ở đây? Tôi đang sử dụng NDK mới nhất.

Trả lời

72

Bạn nên đặt biến APP_ABI vào Application.mk tệp không Android.mk tệp.

Nó được viết bằng tài liệu NDK (tài liệu/CPU-ARCH-ABIS.html tệp).

+0

+1 i dont know câu hỏi trước nhưng tôi thích bạn đã trả lời ở đây tôi đã đặt APP_ABI : = tất cả trong android.mk và nó đã không làm việc nhưng khi tôi đã đưa vào application.mk nó hoạt động nhờ rất nhiều .......... –

+1

Nó vẫn là một bí ẩn đối với tôi tại sao mọi người không đọc html tệp từ thư mục tài liệu trong ndk :) –

+1

Không có bí ẩn. Ppl lười biếng. –

35

Nếu bạn không có tệp Application.mk, hãy tạo một tệp trong thư mục jni dưới project root.

project_root/JNI/Application.mk

Thêm mục tiêu biên dịch nền tảng với nó:

APP_ABI: = x86

Hoặc nền tảng:

APP _ABI: = armeabi armeabi-v7a mips x86

+1

tệp thậm chí không cần bất kỳ thứ gì khác trong đó. và tại sao không đọc? nó khá khó hiểu rằng nó cần phải được trong một .mk hợp lý. đặc biệt là kể từ khi nó sẽ xây dựng armeabi mà không Application.mk! –

4

Ngoài ra bạn có thể đặt APP_ABI trực tiếp đến ndk-build lệnh shell:

ndk-build APP_ABI=x86 
+0

Đây là chính xác những gì xảy ra dưới mui xe khi bạn chạy bên ngoàiNativeBuild.ndkBuild trong Android Studio, do đó bất kỳ APP_ABI nào từ Application.mk đều bị bỏ qua ở đó, hãy xem https://stackoverflow.com/a/45604243/192373 –