2013-02-25 42 views
8

Đang cố gắng để chạy ndk-gdb và nhận được lỗi này:ndk-gdb lỗi: thiết bị không hỗ trợ CPU nhắm mục tiêu của ứng dụng Abis

Android NDK installation path: /Library/AndroidSDK/ndk/
Using specific adb command: /Library/AndroidSDK/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.31
Using ADB flags:
Using auto-detected project path: .
Found package name: com.dev.project
jni/Android.mk:18: * Android NDK: Aborting. . Stop.
ABIs targetted by application: Android NDK:
Device API Level: 17
Device CPU ABIs: armeabi-v7a armeabi
ERROR: The device does not support the application's targetted CPU ABIs!
Device supports: armeabi-v7a armeabi
Package supports: Android NDK:

Dòng thứ 18 trong JNI/Android.mk là một cuộc gọi mô-đun nhập khẩu .

Điều đó có nghĩa là gì và cách khắc phục?

Ứng dụng có thể gỡ lỗi theo tài liệu ndk. Tôi đang sử dụng Mac. Tôi có thể xây dựng và chạy ứng dụng, vì vậy việc tạo tập lệnh phải ổn.


Android.mk

LOCAL_PATH:= $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := libgl2jni 
LOCAL_CFLAGS := -Werror -Wall -g 
LOCAL_CPPFLAGS := -std=c++11 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../src $(LOCAL_PATH)/../../include $(LOCAL_PATH)/../../../boost 

NDK_MODULE_PATH := $(LOCAL_PATH)/../../lib/ndk 
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*.cpp) $(wildcard $(LOCAL_PATH)/../../src/*/*.cpp)) 
LOCAL_LDLIBS := -llog -lGLESv2 

LOCAL_STATIC_LIBRARIES := freetype 

include $(BUILD_SHARED_LIBRARY) 

$(call import-module,otherlib) #commenting this line launches the ndk-gdb, but ndk-build fails 

Application.mk

APP_STL := gnustl_static 

#remove for release? 
APP_ABI := armeabi armeabi-v7a 
APP_OPTIM := debug 
+0

Bạn có thể đặt Android.mk và Application.mk lên để bàn tay có kinh nghiệm có thể thấy điều gì đã xảy ra không? Một khả năng là thư viện cần phải nằm trong một thư mục cho ABI ví dụ: lib/armeabi –

+0

Kịch bản xây dựng có thể là tốt, nhưng bằng cách nào đó ndk-gdb không nhìn thấy ABIs mà bản dựng đang xây dựng. Nó đang phân tích cú pháp Android.mk của bạn và không tìm thấy ABIs. –

+0

@hack_on, vui lòng xem câu hỏi được cập nhật. – Kimi

Trả lời

9

tôi đã cùng một vấn đề. Tôi khá chắc chắn đó là một lỗi trong kịch bản core/build-local.mk. Ít nhất thông báo lỗi không có ý nghĩa.

Tôi cố định làm điều này:

export NDK_MODULE_PATH=path_to_look_for_modules 

đâu path_to_look_for_modules nên là mẹ thư mục của module bạn khai báo trong Android.mk. Đó là, nếu bạn có /myproject/mylibs/otherlib xuất khẩu đường /myproject/mylibs

Nếu bạn có nhiều con đường, như thường lệ:

export NDK_MODULE_PATH=path1:path2:path3 
1

Nếu bạn đang xây dựng một ứng dụng Android và có một số mã ndk bạn có thể giải quyết vấn đề này bằng cách thêm/sửa đổi Application.mk của bạn (thường trong thư mục jni) với dòng sau:

# The ARMv7 is significanly faster due to the use of the hardware FPU 
APP_ABI := armeabi armeabi-v7a x86 mips 
#APP_ABI := armeabi 
APP_PLATFORM := android-10 

Ý tôi là dòng APP_ABI. Đây là quy định cụ thể các bộ xử lý đích để biên dịch mã ndk cho. Tôi giả định từ thông báo lỗi mà bạn đang thử nghiệm trên thiết bị có loại cpu khác với loại bạn đã tạo ứng dụng.

thông tin hữu ích về third party libraries

Có thể vấn đề với makefile or environment

+0

Tại sao tôi cần x86 và mips? Tôi có APP_ABI: = armeabi armeabi-v7a, nó không biên dịch nếu tôi thêm x86 và mips ... – Kimi

+0

Miễn là đó là những gì thiết bị của bạn cần. Có vẻ như tôi đang nói rằng ứng dụng của bạn hỗ trợ "Android NDK:" có thể có nghĩa là bạn có dòng lệnh xấu hoặc tạo tệp. –

+0

Vui lòng xem câu hỏi được cập nhật. – Kimi

0

xuất khẩu NDK_PROJECT_PATH = [Đường dẫn]

nơi [Đường dẫn] là phụ huynh của " jni "thư mục, lần lượt chứa mã NDK của bạn.

Bạn "có thể" gặp phải vấn đề này nếu mã NDK của bạn (thư mục jni) được đặt riêng biệt với mã java Android của bạn.

0

Một giải pháp chung cho vấn đề này là bao gồm dòng này trong Application.mk của bạn.

APP_ABI := armeabi-v7a 

Thay armeabi-v7a bởi API thích hợp theo dòng Device supports. Điều này sẽ đảm bảo rằng ứng dụng của bạn được xây dựng cho nền tảng chính xác và rằng ndk-gdb có thể tìm thấy ứng dụng đó.

Các vấn đề liên quan