Làm cách nào tôi có thể sử dụng các JAR bên ngoài trong một dự án Android?


326

Tôi đã tạo một dự án Android và thêm JAR bên ngoài (hessian-4.0.1.jar) vào dự án của mình. Sau đó tôi đã thêm JAR vào đường dẫn xây dựng và kiểm tra nó trong Thứ tự và Xuất.

Có vẻ như thứ tự và xuất khẩu bị bỏ qua và tất cả các lớp từ JAR bên ngoài đều bị thiếu khi chạy.

Có một mẹo để bao gồm đúng các lớp cần thiết từ một JAR bên ngoài khi xây dựng một ứng dụng Android bằng cách sử dụng plugin Eclipse? Tôi không muốn sử dụng kiến ​​hoặc Maven.


1
như bạn đã tìm ra: điều này là do sự phụ thuộc trong hessian-4.0.1.jar. Nếu bạn muốn sử dụng Hessian với Android, hãy sử dụng Hessdroid ( code.google.com/p/hessdroid ). Không hoạt động lắm, nhưng hoạt động tốt với tôi ngay cả trên Android 4.0.
Ice09

1
Xem thêm "NoClassDefFoundError để biết mã trong thư viện Java trên Android" để biết một vấn đề phổ biến khi sử dụng các tệp bên ngoài. Giải pháp đơn giản .
Lưu lượng

Câu trả lời:


443

Đối với Eclipse

Một cách tốt để thêm các JAR bên ngoài vào dự án Android của bạn hoặc bất kỳ dự án Java nào là:

  1. Tạo một thư mục được gọilibs trong thư mục gốc của dự án của bạn
  2. Sao chép các tệp JAR của bạn vào libsthư mục
  3. Bây giờ, nhấp chuột phải vào tệp Jar và sau đó chọn Build Path> Add to Build Path , nó sẽ tạo một thư mục có tên 'Thư viện tham chiếu' trong dự án của bạn

    Bằng cách này, bạn sẽ không mất các thư viện đang được tham chiếu trên ổ cứng của mình bất cứ khi nào bạn chuyển dự án của mình sang máy tính khác.

Dành cho Android Studio

  1. Nếu bạn đang ở Chế độ xem Android trong trình thám hiểm dự án, hãy đổi nó thành Chế độ xem dự án như bên dưới

Thiếu hình ảnh

  1. Nhấp chuột phải vào mô-đun mong muốn nơi bạn muốn thêm thư viện bên ngoài, sau đó chọn Mới> Directroy và đặt tên là ' libs '
  2. Bây giờ sao chép blah_blah.jar vào thư mục ' libs '
  3. Nhấp chuột phải vào blah_blah.jar, sau đó chọn ' Thêm làm Thư viện .. '. Điều này sẽ tự động thêm và nhập vào build.gradle dưới dạng các tệp biên dịch ('libs / blah_blah.jar') và đồng bộ hóa lớp. Và bạn đã hoàn thành

Xin lưu ý: Nếu bạn đang sử dụng các thư viện của bên thứ 3 thì tốt hơn là sử dụng các phụ thuộc bắc cầu trong đó tập lệnh Gradle tự động tải xuống JAR và JAR phụ thuộc khi tập lệnh gradle chạy.

Ví dụ: biên dịch 'com.google.android.gms: play-services-ads: 9.4.0'

Tìm hiểu thêm về Quản lý phụ thuộc Gradle


49
Lưu ý rằng khi sử dụng các phiên bản Eclipse / ADT gần đây, các lọ bên ngoài phải nằm trong một thư mục có tên libs(thay vì lib)
THelper

4
@THelper - Cảm ơn! Bạn đã đúng, thư mục phải được đặt tên là "libs" chứ không phải "lib". Tôi đã đập đầu vào vấn đề này.
Camille Sévigny

7
Trong các phiên bản gần đây của SDK, bước 3 (thêm JAR thủ công vào Đường dẫn xây dựng) là không cần thiết. Nhưng nếu bạn có một IDE, như Eclipse mở tại thời điểm bạn thả tệp vào, bạn sẽ phải thực hiện làm mới dự án (F5 và / hoặc menu ngữ cảnh Làm mới trong Gói Explorer).
Jon Adams

4
Làm thế nào nó được thực hiện từ dòng lệnh? Tôi phải chỉnh sửa tập tin cấu hình nào, và làm thế nào?
Kristian Spangsege

13
Cách tiếp cận này đã hết hạn kể từ đầu năm 2012. Chỉ cần thêm JAR vào libs/. Không tự sửa đổi đường dẫn xây dựng.
CommonsWare

127

Vâng, bạn có thể sử dụng nó. Đây là cách thực hiện:

  1. Dự án của bạn -> nhấp chuột phải -> Nhập -> Hệ thống tệp -> yourjar.jar
  2. Dự án của bạn -> nhấp chuột phải -> Thuộc tính -> Đường dẫn xây dựng Java -> Thư viện -> Thêm Jar -> yourjar.jar

Video này có thể hữu ích trong trường hợp bạn gặp một số vấn đề.


5
Cách tiếp cận này đã lỗi thời từ đầu năm 2012. Chỉ cần thêm JAR vào libs /. Không tự sửa đổi đường dẫn xây dựng.
CommonsWare

Tôi đã thử nhiều cách khác nhau để thêm đường dẫn xây dựng. Chỉ bằng cách này, tôi có thể sửa Class không tìm thấy ngoại lệ sau khi di chuyển một dự án sang PC khác
Mickey

Giải pháp FIRST đã lỗi thời và sẽ không hoạt động NHƯ VẬY.
Yousha Aleayoub

5

Tôi hiện đang sử dụng SDK 20.0.3 và không có giải pháp nào trước đây hoạt động với tôi.

Lý do mà hessdroid hoạt động khi hess thất bại là vì hai tệp jar chứa java được biên dịch cho các máy ảo khác nhau. Mã byte được tạo bởi trình biên dịch Java không được đảm bảo để chạy trên máy ảo Dalvik. Mã byte được tạo bởi trình biên dịch Android không được đảm bảo để chạy trên máy ảo Java.

Trong trường hợp của tôi, tôi đã có quyền truy cập vào mã nguồn và có thể tạo tệp jar Android cho nó bằng phương pháp mà tôi đã mô tả ở đây: https://stackoverflow.com/a/13144382/545064


5

Tôi biết OP kết thúc câu hỏi của mình bằng cách tham khảo plugin Eclipse, nhưng tôi đã đến đây với một tìm kiếm không chỉ định Eclipse. Vì vậy, ở đây dành cho Android Studio:

  1. Thêm jartệp vào thư mục libs (chẳng hạn như sao chép / dán)
  2. Nhấp chuột phải vào jartệp và chọn "Thêm làm Thư viện ..."
  3. nhấp vào "Ok" trên hộp thoại tiếp theo hoặc đổi tên nếu bạn chọn.

Đó là nó!


4

Hóa ra tôi đã không nhìn đủ tốt vào dấu vết ngăn xếp của mình, vấn đề không phải là không bao gồm JAR bên ngoài.

Vấn đề là nền tảng Android thiếu javax.naming. * Và nhiều gói khác mà JAR bên ngoài cũng có phụ thuộc.

Thêm các tệp JAR bên ngoài và thiết lập Thứ tự và Xuất trong Eclipse hoạt động như mong đợi với các dự án Android.


3

Dự án hiện tại của Goto

RightClick-> Properties-> Java Build Path-> Thêm tệp Jar vào thư viện -> Nhấp OK

Sau đó, nó được thêm vào Tệp Thư viện tham chiếu trong Dự án hiện tại của bạn.


1

API Java của Android không hỗ trợ javax.naming. * Và nhiều công cụ javax khác. *. Bạn cần bao gồm các phụ thuộc như các lọ riêng biệt.


1

Nếu sử dụng Android Studio, hãy làm như sau (Tôi đã sao chép và sửa đổi câu trả lời @Vinayak Bs):

  1. Chọn chế độ xem Dự án trong chế độ xem bên Dự án (thay vì Gói hoặc Android)
  2. Tạo một thư mục có tên libs trong thư mục gốc của dự án của bạn
  3. Sao chép các tệp JAR của bạn vào thư mục libs
  4. Các khung nhìn bên sẽ được cập nhật và các tệp JAR sẽ hiển thị trong dự án của bạn
  5. Bây giờ, nhấp chuột phải vào từng tệp JAR bạn muốn nhập và sau đó chọn "Thêm dưới dạng thư viện ...", sẽ bao gồm nó trong dự án của bạn
  6. Sau đó, tất cả những gì bạn cần làm là tham chiếu các lớp mới trong mã của bạn, vd. import javax.mail.*

1

trong studio android nếu sử dụng gradle

thêm phần này vào build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

và thêm tệp jar vào thư mục libs


1

Nếu bạn đang sử dụng gradle xây dựng hệ thống, hãy làm theo các bước sau:

  1. đặt jarcác tập tin trong libsthư mục tương ứng của ứng dụng Android của bạn. Bạn thường sẽ tìm thấy nó tại Project> app> libs. Nếu libsthư mục bị thiếu, tạo một.

  2. thêm video này vào bạn build.gradletập tin của bạn app. (Không phải của bạn Project's build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    Điều này sẽ bao gồm tất cả các jartập tin của bạn có sẵn trong libsthư mục.

Nếu không muốn bao gồm tất cả jarcác tệp, thì bạn có thể thêm nó vào từng tệp.

compile fileTree(dir: 'libs', include: 'file.jar')


0

tạo một thư mục (như lib) trong dự án của bạn, sao chép jar của bạn vào thư mục đó . Bây giờ hãy đi đến cấu hình đường dẫn xây dựng từ nhấp chuột phải vào dự án, ở đó chọn đường dẫn xây dựng

'thêm jar' duyệt vào thư mục bạn đã tạochọn jar.


0

Sao chép tệp .jar vào thư mục của dự án Android không phải lúc nào cũng có thể.
Đặc biệt nếu đó là đầu ra của một dự án khác trong không gian làm việc của bạn và nó sẽ tiếp tục được cập nhật.

Để giải quyết vấn đề này, bạn sẽ phải thêm tệp jar dưới dạng tệp được liên kết vào dự án của mình, thay vì nhập tệp (sẽ sao chép tệp cục bộ).

Trong giao diện người dùng chọn:

Dự án -> Nhập -> Hệ thống tệp -> yourjar.jar -> (Vùng tùy chọn) Nâng cao -> Tạo liên kết trong không gian làm việc.

Liên kết được lưu trong tệp .project :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC có nghĩa là liên quan đến tệp dự án, 5 thư mục trở lên (../../../../../).

Sau đó thêm nó vào các thư viện:
Project -> Properties -> Java Build Path -> L library -> Add Jar -> yourjar.jar

Trong cùng một cửa sổ, chọn tab Đặt hàng và Xuất và đánh dấu bình của bạn để nó sẽ được thêm vào apk.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.