【问题标题】:How to import android project as library and NOT compile it as apk (Android studio 1.0)如何将 android 项目作为库导入而不是将其编译为 apk (Android studio 1.0)
【发布时间】:2015-02-16 15:28:32
【问题描述】:

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

所以我想有两种解决方案:

  1. 不知何故让 gradle 认为 projLib 是一个不应编译为 apk 的库
  2. 不知何故让 gradle 不明确编译 projLib

问题是,我找不到任何方法。 如果你们能帮忙就太好了:)

【问题讨论】:

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


    【解决方案1】:

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

    apply plugin: 'com.android.application'
    

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

    apply plugin: 'com.android.library'
    

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

    如果您还需要 projLib 来生成单独的 APK,那么您必须进行一些重构以将您需要的通用代码提取到第三个库模块中,并让两个 APK 依赖就可以了。

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

    【讨论】:

    • 谢谢先生,这行得通。关于这些插件,你有什么可以推荐给我的阅读/文档吗?
    • 我试过了,但出现了一个新错误:Error:Library projects cannot set applicationId. applicationId is set to 'com.bulletnoid.android.widget.StaggeredGridViewDemo' in default config. StaggeredGridViewDemo 是我尝试作为模块导入的库中的一个包。
    • 我刚刚从 defaultConfig{} 中删除了应用程序 ID 行,它工作正常。
    • 您还需要在 ... 上添加 'tools:replace="android:icon" 以覆盖主图标
    【解决方案2】:

    在模块 gradle 文件中-

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

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

    清理和构建

    【讨论】:

    • 一切都在模块 gradle 文件中进行
    【解决方案3】:

    只需将这些行添加到库 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'
      ,...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多