Eclipse Android 프로젝트에 라이브러리 / JAR 추가


130

Eclipse의 Android 프로젝트에 써드 파티 라이브러리 (JAR)를 추가하는 것에 대한 두 부분으로 된 질문입니다.

질문의 첫 번째 부분은 타사 JAR (라이브러리)를 Android 프로젝트에 추가하려고 할 때 먼저 문제가 발생한다는 것입니다.

XML 구문 분석 오류 : 바인딩되지 않은 접두사

그 JAR에서 클래스를 사용하려고하고 있기 때문에 접두사가 필요합니다. 무슨 일이야?

둘째, (고정 후 답변이 아래에 나와 있습니다) 내 응용 프로그램이 Android에서 작동하지 않으며 디버거 (LogCat)를 통해 소비하려는 클래스가 존재하지 않는다는 것을 알았습니다.

원인 : java.lang.ClassNotFoundException : com.github.droidfu.widgets.WebImageView ...

Eclipse에서 컴파일 또는 링커 오류가 발생하지 않는 이유는 에뮬레이터에이 문제가 있습니까?

이 두 가지 질문은 내가 스스로 대답 할 것이므로 수사적입니다. 이 포럼의 다른 게시물은 문제와 다른 곳에서 논의가 이루어 지지만 다음 사람이 나올 때 더 분명히 도움이 될 수 있다고 생각합니다.

답변:


316

이제 누락 된 클래스 문제입니다.

저는 Eclipse Java EE 개발자이며 빌드 경로의 "사용자 라이브러리"메커니즘을 통해 수년간 써드 파티 라이브러리를 추가하는 습관이있었습니다. 물론 타사 라이브러리를 추가하는 방법은 적어도 3 가지가 있습니다. 내가 사용하는 라이브러리는 겸손한 견해로 가장 우아합니다.

그러나 Dalvik "JVM"이 일반 Java 컴파일 클래스를 처리 할 수 ​​없지만 특수 형식으로 변환해야하는 Android의 경우에는 작동하지 않습니다. 내가하지 않는 방식으로 라이브러리를 추가하면 이런 일이 발생하지 않습니다.

대신 써드 파티 라이브러리를 가져 와서 빌드 경로 (컴파일 목적으로 Eclipse에 알려짐)를 사용하여 추가하기위한 (일반적으로 사용 가능한) 지시 사항을 따르십시오. 다음은 단계별입니다.

  1. 호스트 개발 시스템으로 라이브러리를 다운로드하십시오.
  2. Eclipse / Android 프로젝트에서 새 폴더 libs를 작성하십시오 .
  3. libs를 마우스 오른쪽 단추로 클릭 하고 가져 오기-> 일반-> 파일 시스템을 선택한 후 파일 시스템에서 찾아보기를 선택하여 라이브러리의 상위 디렉토리를 찾으십시오 (예 : 다운로드 한 위치).
  4. 확인을 클릭 한 다음 왼쪽 분할 창에서 디렉토리 이름 (확인란이 아님)을 클릭 한 다음 오른쪽 분할 창에서 관련 JAR을 확인하십시오. 이렇게하면 라이브러리가 프로젝트에 물리적으로 배치됩니다.
  5. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 빌드 경로-> 빌드 경로 구성을 선택한 다음 라이브러리 탭, JAR 추가 ...를 차례로 클릭하고 libs 디렉토리 에서 새 JAR로 이동하여 추가하십시오. (이것은 우연히 새 JAR이 Android에서 사용하도록 변환되는 순간입니다.)

노트

lib가 빌드 경로에 이미 포함 된 경우 5 단계가 필요하지 않을 수 있습니다. 추가하기 전에 먼저 존재하는지 확인하십시오.

여기에서 한 일은 두 가지 일을 수행합니다.

  1. Android 프로젝트에 Dalvik로 변환 된 JAR을 포함합니다.
  2. 프로젝트 소스 코드를 개발 (컴파일) 할 때 써드 파티 클래스를 찾기 위해 Eclipse에서 Java 정의를 사용할 수있게합니다.

러스, 당신은 아마 다른 별도의 질문을 시작해야합니다. 이 "답변"은 여기에 이상하게 보입니다.
Paul Gregoire

3
그래서 나는 질문의 일부를 조금 다시 작성했습니다. 나는 두 가지 문제가 제 3 자 라이브러리를 추가하려고 할 때 발생한다고 생각하고 두 번째 문제가있는 사람은 아마도 첫 번째도. 감사.
Russ Bateman

나는 공식 안드로이드 문서에서 이것에 대해 더 분명한 것이 있었으면 좋겠다. (아직 넘어지지 않았다.) 다른 포럼의 다른 답변은 계속 진행되지만 결코 문제를 해결하지는 못한다. BlackBerry에서도 이와 같은 문제는 해결 방법에 대한 신뢰할 수있는 정보를 제공하지 못하는 엄청난 악몽입니다.
Russ Bateman

2
안녕하세요 @RussBateman 위에서 언급 한 단계를 시도하고 내 안드로이드 프로젝트에 라이브러리 jar를 포함시킬 수 있었으므로 컴파일 타임에 프로젝트에 라이브러리 클래스에 액세스 할 수 있었지만 프로젝트를 실행할 때 오류가 발생합니다. 내 콘솔에서 : "Dalvik 형식으로 변환하지 못했습니다. 오류 1".. 프로젝트가 시작되지 않습니다!
Zeba

어떤 상황에서는 이것이 작동하지 않습니다 ... 정확히 내가 한 일을 기억하지 못하고 libs 폴더를 삭제하고 읽었습니다 ... 이제 말한 모든 것을 수행하고 libs를 추가하고 항아리를 가져오고 빌드 경로에 추가하십시오. 컴파일러 오류는 사라졌지 만 클래스를 찾을 수 없다는 런타임 예외가 계속 발생합니다. (
Ixx

20

타사 jar 파일이 프로젝트 "libs"폴더에 있고 응용 프로그램을 패키지화 할 때 .apk 파일에 저장되어 있는지 확인하십시오. jar의 무언가가 지원되지 않지만 내가 이것으로 큰 성공을 거두었다면 장치에서 런타임 오류가 나타날 수 있습니다.


1
경험에 관한 모든 것, 나는 전에 같은 문제를 겪었다 :)
Paul Gregoire

고마워요, 그러나 libs 폴더에는 Maven 저장소 또는 어딘가에 이미있는 외부 Jar 파일의 사본이 필요하다는 것을 알게되었습니다.
as

1
슬프게도 이것은 더 이상 자동으로 작동하지 않으므로 패키지 파일에 라이브러리를 포함하도록 Eclipse에 알려야합니다.
Neil Townsend

언제 바뀌 었습니까? 이것은 우리 모두에게 익숙한 것의 큰 변화입니다.
Paul Gregoire

5

도서관 프로젝트 설정

라이브러리 프로젝트는 표준 Android 프로젝트이므로 새 응용 프로그램 프로젝트와 같은 방식으로 새 프로젝트를 만들 수 있습니다.

라이브러리 프로젝트를 작성할 때 그림 1과 같이 애플리케이션 이름, 패키지를 선택하고 필요에 따라 다른 필드를 설정할 수 있습니다.

다음으로 프로젝트의 속성을 설정하여 프로젝트가 라이브러리 프로젝트임을 나타냅니다.

패키지 탐색기에서 라이브러리 프로젝트를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. 속성 창에서 왼쪽의 "Android"속성 그룹을 선택하고 오른쪽에서 라이브러리 속성을 찾으십시오. "라이브러리입니다"체크 상자를 선택하고 적용을 클릭하십시오. 확인을 클릭하여 속성 창을 닫습니다. 새 프로젝트는 이제 라이브러리 프로젝트로 표시됩니다. 아래 섹션에 설명 된대로 소스 코드와 리소스를 소스 코드와 리소스로 옮길 수 있습니다.


4

ADT 버전 22를 사용하는 경우 프로젝트 빌드 경로의 주문 및 내보내기 탭에서 Android 종속성 및 Android 개인 라이브러리를 확인해야합니다.


2

먼저 접두사가 누락 된 문제입니다.

레이아웃 파일에서 써드 파티에서 가져온 것을 소비하는 경우, 아래 XML 구조의 여러 곳에서 발생하는 "droidfu :"와 같은 접두어도 사용해야합니다.

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

이것은 JAR에서 나오지만 새로운 "xmlns : droidfu"를 추가해야합니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

또는 언 바운드 접두사 오류가 발생합니다. 나에게 이것은 타사 라이브러리의 페이지에서 제공된 예제를 모두 복사하여 붙여 넣지 못했습니다.


1

XML 구문 분석 오류 : 바인딩되지 않은 접두사

'/ playteddy / res'리소스가 없습니다.

위의 두 가지 오류가 발생하여 마침내 해결했습니다.

프로젝트-> 속성-> Java 빌드 경로-> googleadmobadsdk (선택하고 맨 위에 놓음)를 마우스 오른쪽 버튼으로 클릭하면 실행되고 문제가 해결됩니다. 내 런타임 오류가 해결되었습니다.


0

소스를 작업 공간 외부의 폴더에 넣으십시오. 프로젝트 탐색기에서 마우스 오른쪽 버튼을 클릭하고 "가져 오기 ..."를 선택하십시오.

작업 공간에서 프로젝트를 Android 프로젝트로 가져 오십시오. 빌드하고 라이브러리 프로젝트로 표시되어 있는지 확인하십시오. 또한 컴파일 오류가 발생하지 않으면 Google API 지원으로 빌드되었는지 확인하십시오.

그런 다음 프로젝트 탐색기에서 기본 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오. 속성을 선택한 다음 왼쪽에서 Android를 선택하십시오. 아래의 라이브러리 섹션에서 "추가"를 클릭하십시오.

맵뷰 풍선 라이브러리를 프로젝트에 추가 할 수 있습니다.


0

이클립스의 빌드 경로로 이동 한 다음 주문 및 내보내기를 클릭 한 다음 라이브러리 / JAR을 확인 한 다음 위로 버튼을 클릭하여 목록의 맨 위로 이동하여 먼저 컴파일하십시오.

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