Androidプロジェクトをライブラリとしてインポートし、APKとしてコンパイルしない方法(Android Studio 1.0)


120

別のプロジェクト(projAPK)の依存関係としてプロジェクト(projLib)をインポートしようとしました。

projAPK gradleにはこれがあります:

dependencies {
    compile project(':libs:NewsAPI')
    compile project(':projLib')
}

しかし、私がgradleを同期すると、このエラーが発生します:

Error:Dependency Android_2015:projLib:unspecified on project projAPK resolves to a APK archive that is not supported as aコンパイル依存関係。ファイル:/Users/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned.apk

これには2つの解決策があると思います。

  1. どういうわけか、gradleにprojLibをapkにコンパイルしてはならないライブラリであると思わせる
  2. どういうわけかgradleはprojLibを明示的にコンパイルしないでください

問題は、その方法を見つけることができなかったことです。もしあなたが助けることができれば素晴らしいでしょう:)

回答:


330

projLibのbuild.gradleファイル、あなたはこのような文が表示されます:

apply plugin: 'com.android.application'

これは、Gradleにアプリケーションとしてビルドし、APKを生成するように指示します。これに変更すると:

apply plugin: 'com.android.library'

ライブラリとしてビルドされ、AARが生成され、動作するはずです。

別のAPKを生成するためにprojLibも必要な場合は、リファクタリングを実行して、必要な共通コードを3番目のライブラリモジュールにプルし、両方のAPKに依存させる必要があります。

ライブラリでを設定することはできませんapplicationId。そのため、エラーメッセージが表示された場合は、ライブラリのビルドスクリプトから削除してください。


ありがとうございます、これでうまくいきました。これらのプラグインについて私にすすめることができる読み物やドキュメントはありますか?
Vic Zhou

13
私はそれを試して新しいエラーが発生しました:Error:Library projects cannot set applicationId. applicationId is set to 'com.bulletnoid.android.widget.StaggeredGridViewDemo' in default config.StaggeredGridViewDemoは、モジュールとしてインポートしようとしたライブラリ内のパッケージです。
Azurespot 2015

13
私はdefaultConfig {}からアプリケーションID行を削除しただけで機能しました。
ericharlow、2015

また、メインアプリケーションを上書きするには、<application ...> ...に 'tools:replace = "android:icon"を追加する必要があります
Ric17101

24

モジュールgradleファイルで -

交換する apply plugin: 'com.android.application'apply plugin: 'com.android.library'

その後 削除します applicationId "xxx.xxx.xxxx"

クリーンとビルド


すべてはモジュールグラドルファイルで実行しています
Vlad

1

これらの行をライブラリgradleファイルに追加し、他のセクションを削除するだけです

apply plugin: 'com.android.library'

android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
}

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.squareup.picasso:picasso:2.4.0'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:gridlayout-v7:23.1.1'
  ,...
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.