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


120

我试图导入一个项目(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

问题是,我找不到任何方法。如果你们可以帮助的话,那将很棒:)

Answers:


330

projLib的build.gradle文件中,您将看到以下语句:

apply plugin: 'com.android.application'

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

apply plugin: 'com.android.library'

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

如果您还需要projLib来生成单独的APK,则必须进行一些重构以将所需的通用代码提取到第三个库模块中,并使两个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'2

13
我刚刚从defaultConfig {}中删除了应用程序ID行,并且它起作用了。
ericharlow

您还需要在<application ...> ...上添加'tools:replace =“ android:icon”以覆盖主图标
Ric17101

24

在模块gradle文件中 -

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

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

清洁和建造


一切都在模块gradle文件中进行
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'
  ,...
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.