繁体   English   中英

将库(Smack)添加到Android Studio项目

[英]Adding library (Smack) to Android Studio project

由于我需要对Smack库进行一些更改,我想将Smack作为库添加到我的Android Studio项目中。 我从Smack Github存储库下载了ZIP文件,并执行了以下步骤 - 正如我在搜索解决方案时发现的那样

(1)在我的项目根文件夹中创建了一个新文件夹libs ,并将提取和重命名的文件夹/Smack复制到libs 所以它现在是以下结构:

root/libs/Smack/

(2)我在根文件夹中编辑了我的settings.gradle

include ':app'
include ':libs:Smack'

(3)通过File -> Project Structure -> Modules app -> Dependencies ,我添加了:libs:Smack作为模块依赖项

(4)我在root/app/build.gradle添加了以下行

compile project(':libs:Smack')

根据我在网上找到的大多数消息来源,这应该是它。 但是,我收到Gradle project sync failed的错误。 我得到更多细节:

/path-to-root/libs/Smack/build.gradle
Error:(42, 0) Project with path ':smack-integration-test' could not be found in project ':libs:Smack'.

当我查看文件和行时,它说project(':smack-integration-test') 不知何故,这是无法找到的。 但是,有一个文件夹libs/Smack/smack-integration-test 它看起来很简单,但我似乎错过了一些关键的东西。

编辑: Android Studio实际上支持导入Gradle项目: File -> New -> New Module打开一个对话窗口,我在其中选择Import Gradle Project ,我必须在这里选择Smack的源目录。 这样做会在settings.gradle所有正确的include语句。

但是,我没有得到错误:

Error:(386, 0) Could not get unknown property 'clirr' for project ':smack-integration-test' of type org.gradle.api.Project.

由于我对Gradle不够熟悉,我不知道这可能意味着什么,我的Google搜索也没有推进我。

我不确定我是否建议在这两个项目中创建一个多模块构建。 这可能无法按预期工作。 您可能需要将smack settings.gradle中的大部分/全部模块添加到您自己的settings.gradle 如果你真的想这样做,我建议你使用prezi-pride从命令行管理它。

我不是Android用户所以不确定哪个版本的Gradle android插件可以使用。 如果android支持Gradle 3.1+,那么您可以使用新的复合构建支持 这是迄今为止最干净的解决方案,我推荐这种方法

另一个解决方案是单独构建项目并在项目中构建项目

compile fileTree(dir: '../smack/project-1/build/lib', include: '*.jar')
compile fileTree(dir: '../smack/project-2/build/lib', include: '*.jar')
// etc

另一种解决方案是将smack工件发布到maven local并从项目中引用它们。 如果您不能使用复合构建,这可能是第二个最佳解决方案

我不会以这种方式添加项目,您可以将它作为项目文件夹结构中的单独项目,您可以修改它并构建它。 最简单的方法是将构建jar文件复制到项目中并将其包含在gradle中:

对于jar,在项目中创建libs文件夹并将文件复制到那里,gradle包括如下所示的工作:

compile fileTree(dir: 'libs', include: ['*.jar']) // for all of the jars in the libs folder
compile files('libs/xyz.jar') // for a specific file

特别是对于Smack项目,你可以用一个

gradle assemble

在它的根文件夹中

ouput jar(s)在每个特定的文件夹中,每个例子对于android我看到:

嫌-的Android \\建造\\库\\

咂嘴,Android系统的扩展\\建立\\库\\

不是您的问题的解决方案,但可能更好的解决方法可能是以下:

jitpack.io为您提供了将GitHub存储库作为Gradle Dependencies添加到项目中的功能,从而允许您省略手动添加jar的过程。 如何实现这一点最好由JitPack本身描述。 简而言之:将JitPack存储库添加到build.gradle:

    repositories {
        ...
    maven { url 'https://jitpack.io' }
    }

您现在可以添加GitHub Repo作为依赖项:

    dependencies {
        compile 'com.github.igniterealtime:Smack:-SNAPSHOT'
    }

刷新项目后,您应该能够按预期使用API​​。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM