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

Vic*_*hou 120 java android gradle android-studio build.gradle

我试图导入一个项目(projLib)作为另一个项目(projAPK)的依赖项.

projAPK gradle有这个:

dependencies {
    compile project(':libs:NewsAPI')
    compile project(':projLib')
}
Run Code Online (Sandbox Code Playgroud)

但是当我同步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

问题是,我找不到如何做到这一点.如果你们可以帮忙:)会很棒:)

Sco*_*rta 330

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

apply plugin: 'com.android.application'
Run Code Online (Sandbox Code Playgroud)

它告诉Gradle将其构建为应用程序,生成一个APK.如果您将其更改为:

apply plugin: 'com.android.library'
Run Code Online (Sandbox Code Playgroud)

它将构建为一个库,生成一个AAR,它应该工作.

如果您还需要projLib来生成单独的APK,那么您将需要进行一些重构以将您需要的公共代码拉入第三个库模块,并让两个APK依赖它.

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

  • 我试过并得到一个新错误:`错误:库项目无法设置applicationId.在默认配置中,applicationId设置为'com.bulletnoid.android.widget.StaggeredGridViewDemo'.StaggeredGridViewDemo是我试图作为模块导入的库中的包. (13认同)
  • 我刚刚从defaultConfig {}中删除了应用程序ID行,但它确实有效. (13认同)

san*_*n88 24

在模块gradle文件中 -

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

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

清洁和建设