【问题标题】:How to update imported modules with code modification from the their external library project in Gradle/Android Studio如何使用 Gradle/Android Studio 中外部库项目的代码修改来更新导入的模块
【发布时间】:2015-01-13 18:57:23
【问题描述】:

我正在开发一个 android 应用程序,我最近从 Eclipse 迁移到了 Android Studio 和 Gradle。

在我的计划中,我创建了 5 个 UI 库,并将它们作为模块添加到我的项目中,我创建的库被推送到我的 github 帐户上(公开)。

在 Eclipse 中,当您为标记为 lib 的项目添加外部依赖项时,当您更新外部项目的代码然后清理构建时,您的项目会获得这些更新,但在 Gradle 中我注意到它会创建物理副本,完全独立于他们的来源,我的问题是如何只更改外部库并更新我的项目。

这是从我的 gradle 配置中截取的:

dependencies {
    // Libraries
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:5.0.89'
    .
    .
    . 
    compile 'com.squareup.picasso:picasso:2.4.0'

    // Projects
    compile project(':com.shehabic.helpicon')
    .
    .
}

【问题讨论】:

  • 我也有同样的问题!你能找到答案吗?
  • 是的,我最终做得更好,很抱歉我的时间很短,但最好是导出这个库。作为本地 maven repo,并在要求中使用 mavenLocal();然后参考你的库。

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


【解决方案1】:

如何实际使用外部库

我读过不推荐,但它对调试很实用:

  1. 文件>项目结构...>加号添加模块

  2. “创建新模块”对话框:

    • 选择“导入 .JAR/.AAR 包”
    • 查找并选择您的包,但在继续之前复制路径
    • 为你的包命名
  3. 返回“项目结构”对话框:

    • 出现“Gradle 项目同步进行中..”消息,但需要单击“确定”才能真正开始构建。相反,您可以继续使用依赖项。
    • 选择“app”模块,进入 DEPENDENCIES 选项卡,加号添加 MODULE DEPENDENCY
    • 选择您的模块
    • 单击“确定”以运行构建。

这确实会在您的 android 项目中创建您的包的副本,但它也会生成所有必要的信息和文件,您可以随时删除该副本或不理会它。

您的模块已添加到 settings.gradle 文件中:

':app', ':module_name'

已为您的模块创建了 build.gradle 文件:

configurations.maybeCreate("default")
artifacts.add("default", file('package.jar'))

并且依赖项已经添加到你的 ':app' 的 build.gradle 中:

compile project(':module_name')
  1. 现在,访问您添加的模块的 build.gradle 文件并粘贴您复制的路径:

configurations.maybeCreate("default") artifacts.add("default", file('X:\Java\Applications\YourApplication\dist\package.jar'))

无论您在何处编辑您的包,只需“清理并构建”它即可。 每当您希望您的应用程序从您的 android 项目外部反映包中的“更新”时,只需同步即可。 完成调试后,您可以删除模块、依赖项和旧副本,并将包的最后构建添加为副本。

【讨论】:

    【解决方案2】:

    您不得将外部库添加为模块。它将在您的项目文件夹下复制它。

    你要做的是:

    1) 删除当前项目中的库文件夹。 2)打开“seeting.gradle”文件并添加这些:

    include ':your_external_library_module_name', ':perhaps_second_external_library'
    
    project (':your_external_library_module_name').projectDir = new File('../path/to/your/external/library')
    project (':perhaps_second_external_library').projectDir = new File('../path/to/your/second/external/library')
    

    2) 在“build.gradle”文件中添加依赖项:

    dependencies {
        compile project(':your_external_library_module_name')
        compile project(':perhaps_second_external_library')
    }
    

    3) 同步项目,您就完成了。

    【讨论】:

    • 它给了我错误Error:Configuration with name 'default' not found.
    • 它给出了错误:无法解析“:app@debug/compileClasspath”的依赖关系:无法解析项目:app-debug。
    【解决方案3】:

    不要使用 Studio 的“打开模块设置”添加模块。

    只需在子应用的构建 gradle 中添加库的 AAR 文件的完整路径:

    实现文件('/workspace/AndroidAppsBase/base_app/build/outputs/aar/base_app-debug.aar')

    当您对库项目进行更改并重新构建项目时,将创建一个新的 .aar 文件。要在您的子项目中反映更改,只需重建它即可。

    【讨论】:

    • 这个问题已经有 4 年历史了,如果它是项目的一部分,不需要做任何事情,Gradle 会为你处理,如果它是一个外部模块,那么 mavenLocal() 将是要走的路,指向固定直通不是一个好主意。
    • 嗨,你能分享一下为什么这不是一个好主意吗?我的应用程序已有 10 年的历史,我在 Eclipse 中开发它们。在过去的一周里,我开始将我的所有应用程序迁移到最新的 API 和 Android Studio,我的方法目前正在奏效。但是想知道我忽略了它是否有任何问题。我的库项目是我开发的一个单独项目,我的许多单独项目的应用程序都使用这个库。
    • 因为您当前计算机上存在类似的本地目录,如果您更改为另一台计算机或使用任何 VCS,那么您的路径将无效。
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2014-01-13
    • 2013-02-16
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多