2017-10-07 5 views
2

私はAPIを実装に関するdocu次の代わりのGradle 4.xの持つモジュールの* .aarファイルとアプリとを構築する場合、私は使用することを期待api含まれているaarファイルにはすべての依存関係が含まれていますが、含まれていません。はGradleの4.xのAPIを使用して依存関係を欠落しているAARライブラリ原因を使用し

あなたは

git clone https://github.com/hannesa2/aar_dependency 
./gradlew clean assembleDebug 

を行い、それが正常に動作

dependencies { 
    api project(':mylibrary') 

を意味します。

しかし、私は

git checkout with_aar 
./gradlew clean assembleDebug 

demo appにだけ行う)

dependencies { 
    api 'com.example.my.mylibrary:[email protected]' 

依存関係としてLIB-モジュールのinsted以前に生成* .aarファイルを使用するとき、私はこの

に実行

タスク:app:transformClassesWithDesugarForDebug スレッド "main"の例外java.lang.TypeNotPresentE xception:sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:63)日で でsun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:85) に 存在しないタイプio.reactivex.ObservableTransformer。 $ Invoked.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41) (java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1067) 、com.google.devtools.build.android.desugar.LambdaDesugaring $ InvokedynamicRewriter)。 visitInvokeDynamicInsn(LambdaDesugaring.java:399)org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsnでorg.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(不明なソース) で (不明なソース)

私は普通のものを私たちのMaven Nexusにアップロードしてこれを実行しているので、私はこれを作成して何が間違っているのかを正確に示すdemo-repoです。デモアプリケーションやMavenを使用しても同じ問題が発生します。

誰かが私が間違っていたことを知っていますか?

+2

AARファイル**が**推移依存関係を含めるdoens't消費することができます。 mavenリポジトリに公開する –

+0

My aarは、例えば、 RxJavaでは、このRxJavaはすでに他のMavenにあります。 私はあなたの推薦が "メイヴンレポで公開する"ということが成就したと思いますか、間違っていますか? aarコンシューマがRxJavaの依存関係などを処理せずに使用する方法はありますか? –

答えて

5

私はそれを解決できました。主な問題は、ほとんどの回答がこの

publishing { 
    publications { 
     mipartner(MavenPublication) { 
      groupId '...' 
      artifactId '..' 
      version 1.0 
      artifact "$buildDir/outputs/aar/myLib-release.aar" 

      //generate pom nodes for dependencies 
      pom.withXml { 
       def dependenciesNode = asNode().appendNode('dependencies') 
       configurations.compile.allDependencies.each { dependency -> 
        def dependencyNode = dependenciesNode.appendNode('dependency') 
        dependencyNode.appendNode('groupId', dependency.group) 
        dependencyNode.appendNode('artifactId', dependency.name) 
        dependencyNode.appendNode('version', dependency.version) 
       } 
      } 
     } 
    } 

    repositories{ 
     maven { 
      url "https://some.url.com" 
     } 
    } 
} 

のようなものに関するされているが、ここで結果* .pomに依存関係が存在しないAPI

dependencies { 
    api 'com.squareup.okhttp3:logging-interceptor:3.4.1' 
    api "io.reactivex.rxjava2:rxandroid:$versions.libs.rxAndroid" 

を使用してのGradle 4.xのでAndroidのOましたこの行を変更した後にapiに依存関係が展開されたpomに含まれています!この後

configurations.api.allDependencies.each { dependency -> 

簡単にAARファイル

dependencies { 
    api "com.mylib.net:mylib:1.0" 
関連する問題