首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Android项目添加库(Smack)

向Android项目添加库(Smack)
EN

Stack Overflow用户
提问于 2016-11-30 08:59:58
回答 3查看 1.3K关注 0票数 4

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

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

代码语言:javascript
复制
root/libs/Smack/

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

代码语言:javascript
复制
include ':app'
include ':libs:Smack'

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

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

代码语言:javascript
复制
compile project(':libs:Smack')

根据我在网上发现的大多数消息来源,这应该是它。但是,我得到一个错误,即Gradle project sync failed。我得到了更详细的信息:

代码语言:javascript
复制
/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实际上支持导入Gradle项目:File -> New -> New Module打开一个对话框窗口,在该窗口中选择Import Gradle Project,其中必须选择Smack的源目录。这样做可以使settings.gradle中所有正确的包含语句。

但是,不,我得到了错误:

代码语言:javascript
复制
Error:(386, 0) Could not get unknown property 'clirr' for project ':smack-integration-test' of type org.gradle.api.Project.

因为我对Gradle还不够熟悉,我不知道这可能意味着什么,我的Google搜索也没有让我前进。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-30 10:41:03

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

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

代码语言:javascript
复制
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项目,可以使用

代码语言:javascript
复制
gradle assemble

在它的根文件夹

ouput jar(s)位于每个特定文件夹中,我看到的每一个用于android的例子如下:

smack-android\build\libs smack-android扩展\build\libs

票数 1
EN

Stack Overflow用户

发布于 2016-11-30 09:28:04

我不确定我会建议从这两个项目中创建一个多模块构建。这可能不会像预期的那样起作用。您可能需要将smack settings.gradle中的大部分/所有模块添加到自己的settings.gradle中。如果您真的想这样做,我建议您使用普雷兹-骄傲,它可以通过命令行来管理。

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

另一个解决方案是分别构建项目,并在项目中执行。

代码语言:javascript
复制
compile fileTree(dir: '../smack/project-1/build/lib', include: '*.jar')
compile fileTree(dir: '../smack/project-2/build/lib', include: '*.jar')
// etc

另一个解决方案是在您的项目中使用将smack工件发布到maven本地并从那里引用它们。如果不能使用复合构建,这可能是第二好的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2016-11-30 09:16:29

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

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

代码语言:javascript
复制
    repositories {
        ...
    maven { url 'https://jitpack.io' }
    }

现在可以将GitHub回购添加为依赖项:

代码语言:javascript
复制
    dependencies {
        compile 'com.github.igniterealtime:Smack:-SNAPSHOT'
    }

在刷新您的项目之后,您应该能够像预期一样使用API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40884029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档