2016-11-03 9 views
6

다른 aar 및 jar 파일 종속성을 사용하여 AAR 파일을 만듭니다. .aar 릴리스 파일을 만들었습니다.Android Studio 다른 AAR 파일 및 jar 파일을 사용하여 AAR 만들기

그런 다음 새 AAR 파일을 샘플 프로젝트로 가져 왔습니다. 프로젝트가 정상적으로 실행 중입니다. 해당 aar 및 jar 클래스에 액세스하려고하면 NoClassDefFound 오류가 표시됩니다.

참고 : 먼저 다른 AAR 내부의 AAR이 가능하다는 것을 알고 싶습니다. 이 새로운 일들이 나올 때 누군가 도와 줄 수 있습니까?

나는이 링크를 Create an AAR with multiple AARs/JARs라고도합니다. transitive = true를 말하는 것입니다. 그러나, 그 깃발을 사용할 곳을 이해하지 못합니다. Application을 사용하거나 AAR 프로젝트 종속성 내에 AAR을 생성하는 동안 사용하는 제 3 자.

감사 사전.

내 미니 프로젝트 Gradle을 파일 : 만 .AAR 파일로 변환되어

미니 프로젝트. 다음,이 파일은 당신이 당신의 의존성에 AAR과 항아리를 참조 할 때, 당신은에 대한 참조와 함께 새로운 AAR을 컴파일 할 수있는 또 다른 NewProject

미니 프로젝트 Build.gradle이

/* 
This would be enabled for development purpose and to debug and check the same 
*/ 

apply plugin: 'com.android.application' 

/* 
This would be enabled for exporting as aar file 
apply plugin: 'com.android.library' 
*/ 

//apply plugin: 'com.android.library' 

android { 

    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    dexOptions { 
     javaMaxHeapSize "4g" 
     preDexLibraries = false 
    } 
    defaultConfig { 

     /* 
     This application id would be used for development purpose and to debug and check the same. 
     This would be commented when exporting as library 
     */ 
     applicationId 'com.pss.pssplayer' 
     minSdkVersion 18 
     targetSdkVersion 23 
     multiDexEnabled true 
     versionCode 1 
     versionName "1.0" 
    } 

    aaptOptions { 
     cruncherEnabled = false 
    } 

    buildTypes { 

     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro' 

     } 
    } 

    productFlavors { 
    } 
} 

dependencies { 

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

    testCompile 'junit:junit:4.12' 

    compile 'com.android.support:appcompat-v7:23.1.1' 

    compile 'com.android.support:support-v4:23.1.1' 

    compile files('libs/ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar') 

    compile files('libs/secure.jar') 

    compile(project(':getSubProject')) { 

     transitive = true 

    }// this getSubProject also contains one classes jar 
} 
+0

주 프로젝트에 포함시키고 자하는 의존성에'transitive = true'를 추가해야합니다. –

+0

MainProject에 transitive = true를 추가했습니다. 하지만, 같은 오류가 발생했습니다. 가져온 aar에서 noclassdeffound 오류를 나타내는 특정 클래스가 있습니다. – harikrishnan

+0

'build.gradle'의 코드를 게시하십시오. –

답변

1

사용 android-fat-aar Gradle을 플러그인, 그것이 슈퍼 유용한!

+0

그 해결책이 작동하지 않는다. –

+0

위의 fat-aar 메소드는 안드로이드를 사용하여 Android Native에서 AAR 라이브러리를 생성하기 위해서만 작동한다. 스튜디오가 성공적으로 완료되었습니다. – harikrishnan

2

파일을 사용하는 것 먼저.

하지만 그들은 aar에 포함되어 있지 않습니다. 대신, "big aar"를 사용하는 응용 프로그램은 두 응용 프로그램에 대한 종속성이 필요합니다.

이를 위해, "big aar"가 두 개의 첫 번째 것에 의존한다는 것을 maven에게 알려주는 것과 같은 저장소에 모든 aar를 배치 할 수 있습니다. (-> pom.xml)

응용 프로그램 build.gradle 파일에서 "big aar"에만 transitive=true으로 종속성을 추가하여 종속성의 종속성을 시스템에 알릴 수 있습니다.

편집 : 당신은 적어도 항아리를 병합 할 수 있습니다

. 이 답변을보고 :

gradle - how do I build a jar with a lib dir with other jars in it?

Can Gradle jar multiple projects into one jar?

병합 AAR이 더 어렵 그렇게 모든 자원, 매니페스트 및 병합하기 때문에 ...

+0

제가이 옵션을 yar 해 보겠습니다. 내베이스 aar를 maven 중앙 저장소에 jar 파일로 게시하고 MiniProject 종속성을 참조합니다. 그러면 나는 .AAR로 변환하여 New Project에서 사용 및 점검 할 것입니다. – harikrishnan

+0

안녕하세요 Bipi, 공급 업체 AAR 및 Jar 파일이 있습니다. 어쨌든, 그들은 jcenter를 게시하는 것을 허용하지 않습니다.규칙에 따라, 그들은 단지 .aar와 .jar와 같이 줄 것이다. – harikrishnan

+0

anda-fat-aar와 같은 제한이있는 도구를 사용하지 않는 한 aar와 다른 aar 및 jar를 병합 할 수 없습니다. 의존성 문제를 처리 할 로컬 Maven 저장소를 설정하는 것에 대해 생각해 보시겠습니까? 우리는 우리 회사에서 예술 작품을 사용하고 있습니다. – Bipi