Android 프로젝트에서 외부 JAR을 어떻게 사용합니까?


326

Android 프로젝트를 만들고 외부 JAR (hessian-4.0.1.jar)을 내 프로젝트에 추가했습니다. 그런 다음 JAR을 빌드 경로에 추가하고 주문 및 내보내기에서 확인했습니다.

주문 및 내보내기는 무시되고 런타임에 외부 JAR의 모든 클래스가 누락됩니다.

Eclipse 플러그인을 사용하여 Android 애플리케이션을 빌드 할 때 외부 JAR에서 필요한 클래스를 올바르게 포함시키는 트릭이 있습니까? 나는 개미 또는 메이븐을 사용하고 싶지 않습니다.


1
이미 알았 듯이 : 이것은 hessian-4.0.1.jar의 종속성으로 인해 발생합니다. Android에서 Hessian을 사용하려면 Hessdroid ( code.google.com/p/hessdroid )를 사용하십시오. 매우 활동적이지는 않지만 Android 4.0에서도 잘 작동합니다.
Ice09

1
외부 jar를 사용할 때 발생하는 일반적인 문제점은 "Android의 Java 라이브러리에있는 코드에 대한 NoClassDefFoundError"를 참조하십시오 . 간단한 해결책 .
Flow

답변:


443

이클립스

Android 프로젝트 또는 Java 프로젝트에 외부 JAR을 추가하는 좋은 방법은 다음과 같습니다.

  1. libs프로젝트의 루트 폴더에 있는 폴더를 만듭니다
  2. 당신의 복사 받는 JAR 파일을 libs폴더
  3. 이제 Jar 파일을 마우스 오른쪽 버튼으로 클릭하고 빌드 경로> 빌드 경로에 추가를 선택 하면 프로젝트 내에 'Referenced Libraries'라는 폴더가 생성됩니다.

    이렇게하면 프로젝트를 다른 컴퓨터로 전송할 때마다 하드 드라이브에서 참조되는 라이브러리손실되지 않습니다 .

안드로이드 스튜디오

  1. 프로젝트 탐색기의 Android View에 있는 경우 아래와 같이 Project View로 변경하십시오.

누락 된 이미지

  1. 외부 라이브러리를 추가 할 원하는 모듈을 마우스 오른쪽 단추로 클릭 한 후 새로 작성> Directroy 를 선택 하고 이름을 ' libs '로 지정하십시오.
  2. 이제 blah_blah.jar 을 ' libs '폴더에 복사하십시오.
  3. blah_blah.jar을 마우스 오른쪽 단추로 클릭 한 후 ' 라이브러리로 추가. '를 선택하십시오 . 그러면 컴파일 파일 ( 'libs / blah_blah.jar')build.gradle에 자동으로 추가 및 입력되고 gradle이 동기화됩니다. 그리고 당신은 끝났습니다

참고 : 타사 라이브러리를 사용하는 경우 gradle 스크립트가 실행될 때 Gradle 스크립트가 JAR 및 종속성 JAR을 자동으로 다운로드하는 전이 종속성 을 사용하는 것이 좋습니다 .

예 : 'com.google.android.gms : play-services-ads : 9.4.0'컴파일

Gradle Dependency Mangement 에 대해서 더 읽어보세요.


49
최신 Eclipse / ADT 버전을 사용하는 경우 외부 jar은 libs(대신 lib) 폴더에 있어야합니다.
THelper

4
@THelper-감사합니다! 폴더 이름이 "lib"가 아니라 "libs"여야합니다. 나는이 문제에 대해 머리를 두드리고 있었다.
Camille Sévigny

7
최신 버전의 SDK에서는 3 단계 (JAR을 빌드 경로에 수동으로 추가)가 필요하지 않습니다. 그러나 파일을 놓을 때 Eclipse와 같이 IDE가 열려 있으면 프로젝트 새로 고침을 수행해야합니다 (패키지 탐색기에서 F5 및 / 또는 컨텍스트 메뉴 새로 고침).
Jon Adams

4
명령 행에서 어떻게 수행됩니까? 어떤 구성 파일을 어떻게 편집해야합니까?
Kristian Spangsege

13
이 접근 방식은 2012 년 초부터 오래되었습니다 libs/. JAR를에 추가하십시오 . 빌드 경로를 수동으로 수정하지 마십시오.
CommonsWare

127

예, 사용할 수 있습니다. 방법은 다음과 같습니다.

  1. 프로젝트-> 마우스 오른쪽 버튼으로 클릭-> 가져 오기-> 파일 시스템-> yourjar.jar
  2. 프로젝트-> 마우스 오른쪽 버튼으로 클릭-> 속성-> Java 빌드 경로-> 라이브러리-> Jar 추가-> yourjar.jar

비디오 는 문제가있는 경우에 유용 할 수 있습니다.


5
이 접근 방식은 2012 년 초부터 오래되었습니다. libs /에 JAR을 추가하십시오. 빌드 경로를 수동으로 수정하지 마십시오.
CommonsWare

빌드 경로를 추가하는 다양한 방법을 시도했습니다. 이 방법으로 만 한 프로젝트를 다른 PC로 마이그레이션 한 후 Class not found 예외를 수정할 수 있습니다
Mickey

첫 번째 솔루션은 구식이며 잘 작동하지 않습니다.
Yousha Aleayoub

5

현재 SDK 20.0.3을 사용하고 있으며 이전 솔루션 중 어느 것도 효과가 없었습니다.

hessdroid가 hess가 실패한 곳에서 작동하는 이유는 두 jar 파일에 다른 가상 머신 용으로 컴파일 된 java가 포함되어 있기 때문입니다. Java 컴파일러가 작성한 바이트 코드는 Dalvik 가상 머신에서 실행되도록 보장되지 않습니다. Android 컴파일러에서 작성된 바이트 코드는 Java 가상 머신에서 실행되도록 보장되지 않습니다.

내 경우에는 소스 코드에 액세스 할 수 있었고 여기에 설명 된 방법을 사용하여 Android jar 파일을 만들 수있었습니다. https://stackoverflow.com/a/13144382/545064


5

OP가 Eclipse 플러그인을 참조하여 질문을 끝내는 것을 알고 있지만 Eclipse를 지정하지 않은 검색으로 여기에 도착했습니다. 그래서 여기 Android Studio로갑니다.

  1. jarlibs 디렉토리에 파일 추가 (예 : 복사 / 붙여 넣기)
  2. jar파일을 마우스 오른쪽 버튼으로 클릭 하고 "라이브러리로 추가 ..."를 선택하십시오.
  3. 다음 대화 상자에서 "확인"을 클릭하거나 원하는 경우 이름을 바꿉니다.

그게 다야!


4

내 스택 추적에서 충분히 잘 보이지 않았지만 외부 JAR이 포함되어 있지 않다는 것이 문제입니다.

문제는 Android 플랫폼에 javax.naming. * 및 외부 JAR에 종속 된 많은 다른 패키지가 누락되어 있다는 것입니다.

외부 JAR 파일을 추가하고 Eclipse에서 주문 및 내보내기를 설정하면 Android 프로젝트에서 예상대로 작동합니다.


3

현재 프로젝트로 이동

RightClick-> 속성-> Java 빌드 경로-> JAR 파일을 라이브러리에 추가-> 확인을 클릭하십시오.

그런 다음 현재 프로젝트의 참조 라이브러리 파일에 추가됩니다.


1

Android의 Java API는 javax.naming. * 및 기타 많은 javax. * 기능을 지원하지 않습니다. 종속성을 별도의 항아리로 포함해야합니다.


1

Android Studio를 사용하는 경우 다음을 수행하십시오 (@Vinayak Bs 답변을 복사하고 수정했습니다).

  1. 패키지 또는 Android 대신 프로젝트 측경에서 프로젝트보기를 선택하십시오.
  2. 프로젝트의 루트 폴더에 libs 라는 폴더를 만듭니다.
  3. JAR 파일을 libs 폴더로 복사
  4. 사이드 뷰가 업데이트되고 JAR 파일이 프로젝트에 표시됩니다.
  5. 가져 오려는 각 JAR 파일을 마우스 오른쪽 단추로 클릭 한 다음 "라이브러리로 추가 ..."를 선택하십시오.이 파일이 프로젝트에 포함됩니다.
  6. 그런 다음 코드에서 새 클래스를 참조하기 만하면됩니다 (예 : import javax.mail.*

1

gradle을 사용하는 경우 android studio에서

이것을 build.gradle에 추가하십시오

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

jar 파일을 libs 폴더에 추가하십시오.


1

gradle을 사용하는 경우 build system을 다음 단계를 수행하십시오.

  1. 안드로이드 앱의 jarlibs폴더에 파일을 넣으 십시오. 당신은 일반적으로 그것을 발견 할 것이다 Project> app>libs . 경우 libs폴더가없는, 하나를 만들 수 있습니다.

  2. 이것을 build.gradle파일에 추가 하십시오 app. (다른에 Projectbuild.gradle )

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

    여기에는 jar사용 가능한 모든 파일 이 포함 됩니다libs폴더에 .

모든 jar파일 을 포함하지 않으려면 개별적으로 추가 할 수 있습니다.

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


0

프로젝트 안에 lib와 같은 폴더를 만들고 jar을 해당 폴더에 복사하십시오 . 이제 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 빌드 경로구성 하십시오. 빌드 경로를 선택하십시오.

'항아리 추가' 당신이 만든 폴더로 이동을 하고 선택 항아리를.


0

.jar 파일을 Android 프로젝트 폴더로 복사하는 것이 항상 가능한 것은 아닙니다.
특히 작업 공간에있는 다른 프로젝트의 결과물이며 계속 업데이트됩니다.

이 문제를 해결하려면 jar 파일을 가져 오는 대신 로컬로 복사하는 대신 프로젝트에 링크 된 파일로 추가해야합니다.

UI에서 다음을 선택하십시오.

프로젝트-> 가져 오기-> 파일 시스템-> yourjar.jar-> (옵션 영역) 고급-> 작업 공간에서 링크 작성.

링크는 .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 프로젝트 파일에 상대적인 의미, 5 개 디렉토리 위로 (../../../../../).

그런 다음 라이브러리에 추가하십시오 :
프로젝트-> 특성-> Java 빌드 경로-> 라이브러리-> Jar 추가-> yourjar.jar

같은 창에서 주문 및 내보내기 탭을 하고 apk에 추가되도록 항아리를 표시하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.