web-dev-qa-db-ja.com

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

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

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

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

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

Error:Dependency Android_2015:projLib:unspecified on project projAPKは、コンパイルの依存関係としてサポートされていないAPKアーカイブに解決されます。ファイル:/Users/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned.apk

だから、これには2つの解決策があると思います:

  1. どういうわけか、gradleにprojLibはapkにコンパイルすべきではないライブラリであると思わせます
  2. どういうわけかgradleがprojLibを明示的にコンパイルしないようにする

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

120
Vic Zhou

projLibのbuild.gradleファイルには、次のようなステートメントが表示されます。

apply plugin: 'com.Android.application'

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

apply plugin: 'com.Android.library'

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

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

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

331
Scott Barta

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

置換apply plugin: 'com.Android.application'apply plugin: 'com.Android.library'

次に、削除applicationId "xxx.xxx.xxxx"

クリーンおよびビルド

24
san88

これらの行をライブラリ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'
  ,...
}
1