2

aar を通じて、さまざまなプロジェクト間でソース コードを共有したいと考えています。現在のバージョンの Android Studio では、ライブラリ モジュールの aar ファイルを自動的に生成できます。しかし、いくつかの問題があります。

  1. aarファイルを特定のフォルダに出力するには?

現在、出力は build/outputs/aar フォルダーにあります。コンパイルが完了したら、ファイルを自動的に移動できますか?

  1. ライブラリ モジュールの依存関係はアプリ モジュールに継承されません。例えば:

私のライブラリ モジュール (build.gradle):

apply plugin: 'com.android.library'
......
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.code.gson:gson:2.2.4'
}

私のアプリモジュール:

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    flatDir {
        dirs 'myaarfolder'
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.company.appid"
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile(name:'mylib-release', ext:'aar')
}

次のようなエラーが発生しました。

エラー:(3, 35) エラー: パッケージ com.google.gson.annotations が存在しません

アプリ モジュール (build.gradle) の依存関係にcompile 'com.google.code.gson:gson:2.2.4'を追加する必要があります。

何か案が?ありがとう

4

1 に答える 1

1

AAR ファイルには依存関係が組み込まれていないため、このようなベア AAR を含める場合は、親モジュールに依存関係を手動で追加する必要があります。必要なことを行うには、AAR を Maven アーティファクトにパッケージ化し、POM でその依存関係を指定する必要があります。Google をすばやく検索すると、このリンクが表示されます。これは、古いバージョンの Android Gradle プラグイン用のように見えますが、うまくいくか、より良いリソースを自分で検索することができます。

http://www.vandalsoftware.com/post/52468430435/publishing-an-android-library-aar-to-a-maven

出力ファイルを操作したい場合は、この質問からインスピレーションを得て、出力の名前を変更できます。

com.android.build.gradle.internal.api.ApplicationVariantImpl でプロパティ「outputFile」が見つかりませんでした

基本的に、次のようなビルド スクリプトのブロックが含まれます。

applicationVariants.all { variant ->
    variant.outputs.each  { output ->
        output.outputFile = new File(output.outputFile.parent, /* calculate new path here */)
    }
}
于 2015-02-05T18:04:42.373 に答える