배포 할 Android Jar 라이브러리 생성


160

필요에 따라 Android 애플리케이션으로 가져올 수있는 공유 소스 프로젝트를 작성할 수있는 Android 라이브러리 프로젝트를 알고 있습니다. 그러나 소스를 사용할 수 있어야합니다.

전통적인 JAR과 같은 다른 Android 프로젝트에서 사용할 수있는 폐쇄 소스 라이브러리를 빌드하고 배포하는 방법을 찾고 있습니다. 이것은 안드로이드 컴파일러의 사용이 필요하므로 바닐라 자바 ​​JAR 파일이 아닙니다. FWIW, JAR에 리소스 / 레이아웃을 포함시킬 필요가 없습니다.

나는 본 적이 http://andparcel.com/ 하지만 해결 방법 같은 느낌, 나는 오히려 뭔가 구글에서 '공식적으로 지원'을 사용합니다. 또한 빌드 한 JAR이 이전 / 새로운 버전의 Android SDK와 호환되는지 확인해야합니다 (예 : 대상 플랫폼 버전 등을 설정하는 방법이 필요함).

최신 Android 도구 세트를 사용하여 JAR 바이너리를 작성 / 소비 할 수 있습니까? 내가 어떻게 할 수 있는지에 대한 문서를 가리킬 수 있습니까?


질문에 대한 답변이 있습니까? 비슷한 요구 사항이 있습니다. jar 파일을 어떻게 만들었습니까?
Krishnabhadra

Android 용 .jar을 배포하려면 Android dx 컴파일러가 필요하지 않으며 일반 Java 컴파일러가 작동합니다. jar를 배포하면 앱이 빌드 될 때 dx 바이트 코드로 변환됩니다.
ThomasW

답변:


49

자원이없는 Android 라이브러리 프로젝트를 작성하는 경우 ADT (r16에서 처음 발견됨)는 'bin'폴더에 프로젝트와 동일한 이름의 .jar을 작성합니다.


pls이 질문을보십시오 stackoverflow.com/questions/12970802/…
vnshetty

1
이것은 항아리를 얻지 만 여전히 resources 폴더를 배포해야합니까? 작업 표시 줄 sherlock을 정리하려고하면 작업 표시 줄 리소스를 찾을 수 없으므로 프로젝트가 컴파일되지 않습니다.
Nathan Schwermann 5

1
@schwiz는 리소스가 아닌 프로젝트에서만 작동합니다 (답변에 나와있는 것처럼). 그렇지 않으면 표준 Android 라이브러리 프로젝트로 가져와야합니다.
Freddroid

1
아직도 그래요? 나는 보이지 않는 myapp.jar/bin폴더. 있다classes.jar 있지만 그렇지 않습니다.
가비지 수집기

최신 ADT를 실행하고 있는데 여전히 / bin 폴더에 <프로젝트 이름> .jar이 있습니다. 그러나 프로젝트가 리소스에 의존하는 경우 좋지 않으며 프로젝트는 라이브러리 프로젝트로 포함되어야합니다 (여전히 .jar를 얻습니다)
Freddroid

23

Android는 특별한 종류의 Android-JAR을 제공하지 않습니다. 그러나 할 수있는 일은 프로젝트에 build.xml을 추가하고 개미로 JAR을 빌드하는 것입니다.

내 build.xml은 다음과 같습니다.

<project name="MyAndroidLib" default="dist" basedir=".">
  <description>
This is my Android lib
  </description>
  <!-- set global properties for this build -->
  <property name="src" location="src" />
  <property name="bin" location="bin" />

  <target name="jar">
    <jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
      <!-- replace 'com' by what ever you are using -->
      <!-- as first part of the package name -->
      <!-- e.g. de, org, ... -->
      <!-- the ** is important to include the directory recursively -->
      <include name="com/**" />
    </jar>
  </target>
</project>

ant jar프로젝트 기본 폴더에서 실행하여 JAR을 빌드하십시오 .


이것을 시도하고 JAR 파일을 빌드 할 수 있었지만 라이브러리를 JAR로 내보낼 때와 비교할 때 크기는 홀수 (343 바이트 만)였습니다. 어떤 플래그가 누락되었는지에 대한 아이디어가 있습니까?
셰인 올리버

아카이브 프로그램 (JAR is ZIP)으로 JAR의 내용을 확인하고 누락 된 내용을 확인하고 추가 할 수 있습니다. 자세한 내용은 여기를 참조하십시오. ant.apache.org/manual/Tasks/jar.html
white_gecko

5
최신 안드로이드 SDK를 통해, 자바 파일을 컴파일 bin/classes그렇게 <jar destfile="MyAndroidLib.jar" basedir="bin/">해야<jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
테오

17

"일반적인"Java 프로젝트를 생성하고 여기에서 Android.jar을 가져올 수 있습니다. 그러면 SDK의 모든 구성 요소에 액세스 할 수 있습니다. 그런 다음 프로젝트를 jar로 내보내고 Android 앱에서로드 할 수 있습니다. 이것은 훌륭하게 작동하며 그것을 수행하는 간단한 방법 인 것처럼 보입니다.


1
이 경우 서비스, 활동, 브로드 캐스트 리시버, 인 텐트 필터와 같은 라이브러리 구성 요소를 선언하는 방법. 클라이언트 응용 프로그램은 이러한 선언을 모두 매니페스트에 보관해야합니까?
Ron

@ferostar android.jar를 Java 프로젝트로 가져 오는 방법은 무엇입니까?
Krishnabhadra

해당 라이브러리에 자원이있는 경우 R.java를 생성하고 JAR에 추가하는 방법

15

jar를 만들려는 프로젝트의 속성으로 이동하십시오 .Android 탭을 클릭하십시오. Is 라이브러리에서 체크하십시오. 이제 bin 폴더에서 .jar 파일을 볼 수 있습니다. 사용하려는 위치에서 사용하십시오.


2
LibraryProject에 리소스가 없으면 작동하는 것 같습니다. 리소스를 사용하는 방법에 대한 아이디어가 있습니까?
Nathan Schwermann 5

그러나 라이브러리 프로젝트가 다른 프로젝트에 의존하는 경우 나쁜 대답입니다. 이러한 참조는 선택되지 않습니다.
stevebot

10

Google이 '공식적으로 지원하는'유일한 솔루션은 라이브러리 프로젝트이며 소스 코드를 배포해야합니다. 일반적인 방법으로 JAR을 작성할 수 있지만 그 안에 자원을 포함하거나 참조 할 수는 없습니다.

불행히도 소스 코드 요구 사항을 해결할 수있는 수단으로 라이브러리 프로젝트 내에 패키지 된 JAR을 포함시키는 것도 불가능하다고 생각합니다.


"일반적인 방법으로 JAR을 작성할 수 있지만 그 안에 자원을 포함하거나 참조 할 수는 없습니다." <-Android 클래스를 참조하거나 Android 컴파일러를 사용하면 Eclipse에서 제대로 작동하지 않는 것 같습니다. 작동시키는 방법에 대한 단서가 있습니까?
psychotik

5
Eclipse에서 일반 Java 프로젝트를 작성하고 android.jar을 빌드 경로에 추가 한 다음 내보내기-Java-Jar 파일을 선택하십시오.
Jeff Gilfelt

@JeffGilfelt 그리고 예를 들어 android-13 sdk 디렉토리에 android.jar을 포함하면 더 높은 API 레벨을 위해 프로젝트에서 jar 라이브러리를 계속 사용할 수 있습니까?
Fran Marzoa

10

최신 Android Studio 1.2 빌드에서 JAR 라이브러리 생성은 포인트 앤 클릭처럼 간단하게 이루어졌습니다.

따라야 할 단계 :

  • 파일로 이동-> 새로 만들기-> 새 모듈 여기에 이미지 설명을 입력하십시오
  • 옵션 목록 끝에서 "Java Library"를 선택하십시오. 여기에 이미지 설명을 입력하십시오
  • jar 라이브러리의 이름과 클래스 이름을 입력하고 완료 버튼을 누르십시오 여기에 이미지 설명을 입력하십시오
  • 그게 다야!

다음 단계는 Jar 라이브러리를 앱의 종속성으로 추가하는 것입니다. 그저 단순한

  • 파일로 이동-> 프로젝트 구조-> '앱'선택-> '종속성'선택
  • 하단에서 '+'를 선택하십시오-> '모듈 의존성'을 선택하십시오. 여기에 이미지 설명을 입력하십시오
  • 위에서 만든 jar lib 모듈을 선택하십시오. 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오
  • Ok를 선택하면됩니다.

.... 또는 아래 줄을 앱 gradle 파일에 추가 할 수 있습니다

dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar']) // Default Gradle Task, should be already present
      compile 'com.android.support:appcompat-v7:21.0.3' // Default Gradle Task, should be already present

      compile project(':nameOfYourJarLibraryModule') // This is your jar library module
 }

지원되는 JAR이 다시 Android Studio로 돌아 왔지만 Google은 Android Archive (AAR)를 홍보하고 있습니다. AAR과 JAR의 차이점을 확인하려면 이 링크를 참조하십시오.


이것이 새로운 jar 파일을 만드는 방법을 이해하지 못합니다. 안드로이드 프로젝트에서 라이브러리로 사용될 새로운 모듈을 만드는 것 같습니다
Jejefcgb

뭐?! 당신은 아무것도에서 새로운 항아리를 만들?
Ewoks

@Ewoks : 모듈을 만든 후에는 클래스를 추가해야합니다. 완료되면, 당신은 종속성으로 추가
Nishant합니다.

2
질문 : 소스 코드가있는 부적절한 라이브러리가 있습니다. jar 파일을 만드는 방법 전체 라이브러리 소스 코드 대신 다른 프로젝트에서 jar 파일을 사용하는 방법은 무엇입니까?
Ewoks

2
@ 니시 언트. 나를 위해 일했다! 감사!
ramires.cabral

6

이것을 시도하십시오 : 이것은 작동합니다

1) IsLibrary 플래그를 선택 해제하여 라이브러리 프로젝트를 일반 프로젝트로 만듭니다.

2) 프로젝트를 Android 애플리케이션으로 실행하십시오. (오류가 표시되지 않습니다)

3) bin 폴더에는 .apk와 함께 .jar 파일이 있습니다.

4) 라이브러리를 사용하려는 .jar을 제공하십시오.

5) 외부 항아리를 빌드 경로로 가져 오라고 지시하십시오.

이것은 모든 리소스에서 잘 작동합니다. 행운을 빕니다.


1
이 게시물을 수정해야합니다 : JAR 파일에는 코드 만 포함될 수 있으며 안드로이드 리소스는 포함 할 수 없습니다. 리소스가 포함 / 필요한 경우 라이브러리 프로젝트를 열어 두어야하며 단순한 JAR 파일 만 사용할 수 없습니다.
코디

@cody : jar 파일을 리소스와 함께 생성하고 다른 프로젝트에서 어떻게 사용합니까?
Mahantesh M Ambi

1

ADT는 프로젝트에서 일치하는 모든 소스 파일 및 디렉토리에 대한 모든 클래스 파일을 포함하는 bin 폴더를 작성합니다 .jar 명령을 사용하여 이러한 클래스 파일 및 디렉토리를 포함하는 jar 아카이브를 작성하고 라이브러리를 추정 할 수 있습니다. 클래스 파일 플랫폼 레벨은 프로젝트 빌드의 현재 레벨만을 대상으로합니다. 각 플랫폼 레벨마다 다른 jar 파일이 필요합니다. 그러나 이것에 대한 좋은 점은 R.class 파일이 프로젝트 디렉토리 트리에 포함되어 있으므로 리소스에 액세스 할 수 있다는 것입니다. 이것이 안드로이드에서 일을하는 공식적인 방법인지는 모르겠지만 그것은 나를 위해 일했습니다.


0

프로젝트에서 / system / framework에 설치되고 apkbuilder를 사용하여 apk를 작성하고이 apk를 기본 클래스 경로에 추가했습니다. jar를 사용하여 응용 프로그램을 컴파일하기 위해 jar 파일을 사용하여 jar 파일을 만듭니다.

참고 : 라이브러리에 리소스가 없습니다.


0

.jar은 .class 파일을 포함하는 .zip 파일 일뿐입니다. .jar 파일의 확장자를 .zip으로 변경 한 다음 결과를 볼 수 있습니다. .class 파일을 압축하여 원하는 목적으로 .jar 라이브러리를 작성할 수 있습니다.


엄격하게 사실이 아닌 경우, 미묘한 차이점 (주로 ZIP 내에서 항목 순서 ) 에 대해서는 en.wikipedia.org/wiki/JAR_(file_format) 를 참조하십시오.
iddo

0

단계 :

1) 파일 열기 project.properties

2) 가치 추가 android.library=true

3) 파일 저장

4) 프로젝트의 이클립스 메뉴에서 자동 빌드 를 선택한 다음 청소 를 선택하십시오.

결과 : 새로운 jar 파일bin 아래에 생성됩니다 .

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