2014-04-18 24 views
9

Tôi có một dự án Android có mã gốc. Tôi có thể xây dựng mã nguồn gốc từ dòng lệnh bằng cách gọi lệnh ndk-build không có lỗi hoặc cảnh báo. Nhưng khi tôi mở nó trong ADT nó cho thấy lỗi sau.Xây dựng NDK của Android, Phương pháp không thể được giải quyết

enter image description here

Thông báo lỗi: Method CallStaticIntMethod could not be resolved. Có rất nhiều file với các lỗi tương tự trong dự án.

Tôi đã kiểm tra cấu hình kép và đây là những gì tôi có. Android xây dựng, dây chuyền công cụ và bao gồm được cấu hình đúng cách (xem hình ảnh bên dưới)

enter image description here

enter image description here

enter image description here

buộc bao gồm cũng có thể nhìn thấy trong Project Explorer và họ là hợp lệ (không có sản phẩm nào và trỏ đến các tệp tiêu đề chính xác).

enter image description here

Nhưng khi tôi Clean dự án và Build nó, các lỗi vẫn còn ở đó. Bất kỳ ý tưởng về cách giải quyết này?

Cấu hình: ADT 22.6.2, NDK r9d (64-bit), OSX 10.9.2

Trả lời

11

Sau khi một số khó khăn với sở thích, cuối cùng tôi đã tìm thấy một giải pháp. Đây là số bug trong plugin NDK đã được báo cáo cho AOSP nhưng chưa được khắc phục. Một quá khứ của câu trả lời được mô tả trong chú thích # 50. Đây là trình tự làm việc cho tôi.

  1. mở Thuộc tính dự án ->C/C++ Build ->Tool Chan biên tập
  2. Trong phần Used Tools thay Android GCC Compiler với GCC C Compiler. Nếu phần trống, chỉ cần thêm GCC C Compiler mục nhập trong đó. enter image description here
  3. mở Thuộc tính dự án ->C/C++ chung ->Paths và biểu tượng và thêm thư mục, trong đó h-tập tin của bạn được đưa được đặt. Sử dụng Di chuyển nút để thêm thư mục với địa phương của bạn bao gồm (/AudioPlayer/jni trong trường hợp của tôi) đến địa điểm đầu tiên. Sau đó, thêm nền tảng và công cụ bao gồm. Tích hợp bao gồm nên ở phía dưới cùng. enter image description here Trong trường hợp của tôi, đường dẫn đầy đủ đến chuỗi công cụ bao gồm như dưới đây. Đây là các đường dẫn dựng sẵn của chuỗi công cụ ban đầu Android GCC Compiler, mà chúng tôi đã thay thế ở bước 2.

    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include 
    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed 
    
  4. Nhấn OK nút, sạchtái xây dựng dự án. Tất cả các lỗi phải biến mất. Nếu họ ở lại, hãy cố gắng xóa chúng khỏi Sự cố xem và xây dựng lại dự án một lần nữa.

Cập nhật: Tôi đã tìm thấy một nơi khác, nơi bạn có thể thêm các đường dẫn để bao gồm các file. Tuy nhiên nó có vẻ phụ thuộc vào phiên bản Eclipse. Cài đặt dự án -> C/C++ chung -> Bộ xử lý bao gồm đường dẫn, macro vv -> Mục nhập cài đặt người dùng CDT -> Thêm. Sau khi tôi thêm các đường dẫn được liệt kê ở trên, không còn vấn đề biên dịch nào nữa. Phát triển là vui vẻ một lần nữa.

+1

Tôi không phải thực hiện các bước 1 và 2, vì vậy có thể không cần thiết. Khác câu trả lời này làm việc tốt cho tôi. Cảm ơn. – haffax

+0

Xin chào, tôi đã thử giải pháp này. Tất cả các lỗi của tôi trong mã C đã biến mất nhưng tên dự án vẫn hiển thị biểu tượng lỗi và do điều này tôi không thể chạy dự án. Tôi không biết chính xác chuyện gì đang xảy ra. Xin đề nghị thêm –

0

Vâng, nó gây ra bởi IDE không biết nơi mà tất cả các tiêu đề của bạn và bất kỳ libs bạn liên kết một lần nữa là. Các lỗi được tạo ra bởi hệ thống tự động hoàn thành/lỗi của IDE. Bạn có thể sửa chữa bao gồm của bạn trong nhật thực hoặc loại bỏ chúng như là lỗi trong các sở thích.

-1

Tôi đã gặp lỗi tương tự và giải quyết nó bằng cách chuyển sang dự án-> thuộc tính-> tùy chọn khám phá và thay đổi cấu hình khám phá từ hệ thống xây dựng được quản lý thành GCC, sau khi chuyển sang GCC C Complier từ Android GCC Compiler và cập nhật thư mục bao gồm .

+0

Câu trả lời này khác với câu trả lời của người làm việc 6 tháng trước đó như thế nào? Ngoài ra, hãy xem câu trả lời "tôi cũng vậy" trong [Câu hỏi "được bảo vệ" là gì?] (Http://meta.stackexchange.com/q/52764) – jww

+0

đây là giải pháp khác. câu trả lời của người làm việc không hiệu quả với tôi. sau khi tôi đã thử giải pháp của mình, tôi đã khắc phục sự cố bằng cách thay đổi tiểu sử khám phá trong các tùy chọn khám phá. Tôi không chắc liệu câu trả lời của người làm việc có liên quan gì đến việc sửa chữa vấn đề cho tôi hay không, tôi chỉ nghĩ rằng tôi sẽ đề cập đến việc tôi đã thử giải pháp của anh ta trước tiên trong trường hợp cả hai bước cần thiết. –

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