如何将android项目导入为库而不将其编译为apk(Android studio 1.0)

时间:2014-12-17 23:05:53

标签: java android gradle android-studio build.gradle

我尝试将项目(projLib)导入为另一个项目(projAPK)的依赖项。

projAPK gradle有这个:

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

但是当我同步gradle时会出现此错误:

  

错误:依赖关系Android_2015:projLib:未指定项目projAPK解析为APK归档,不支持作为编译依赖项。文件:/Users/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned.apk

所以我猜这有两个解决方案:

  1. 以某种方式让gradle认为projLib是一个不应该编译为apk的库
  2. 以某种方式使gradle无法明确编译projLib
  3. 问题是,我找不到如何做到这一点。 如果你们可以提供帮助,那真是太棒了:)。

3 个答案:

答案 0 :(得分:331)

projLib 的build.gradle文件中,您会看到如下声明:

apply plugin: 'com.android.application'

告诉Gradle将其构建为应用程序,生成APK。如果你改成它:

apply plugin: 'com.android.library'

它将构建为库,生成AAR,它应该可以工作。

如果您还需要 projLib 来生成单独的APK,那么您必须进行一些重构以将您需要的公共代码提取到第三个库模块中APK取决于它。

不允许图书馆设置applicationId,因此如果您看到相应的错误消息,请将其从图书馆的构建脚本中删除。

答案 1 :(得分:24)

在模块gradle文件中 -

apply plugin: 'com.android.application'替换为apply plugin: 'com.android.library'

然后删除 applicationId "xxx.xxx.xxxx"

清理并构建

答案 2 :(得分: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'
  ,...
}