由于我需要对拍打库进行一些更改,所以我想将Smack作为一个库添加到我的Android项目中。我已经从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实际上支持导入Gradle项目:File -> New -> New Module打开一个对话框窗口,在该窗口中选择Import Gradle Project,其中必须选择Smack的源目录。这样做可以使settings.gradle中所有正确的包含语句。
但是,不,我得到了错误:
Error:(386, 0) Could not get unknown property 'clirr' for project ':smack-integration-test' of type org.gradle.api.Project.因为我对Gradle还不够熟悉,我不知道这可能意味着什么,我的Google搜索也没有让我前进。
发布于 2016-11-30 10:41:03
我不会以这种方式添加项目,您可以将它保留在项目文件夹结构之外的单独项目中,您可以修改它并构建它。最简单的方法是将构建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的例子如下:
smack-android\build\libs smack-android扩展\build\libs
发布于 2016-11-30 09:28:04
我不确定我会建议从这两个项目中创建一个多模块构建。这可能不会像预期的那样起作用。您可能需要将smack settings.gradle中的大部分/所有模块添加到自己的settings.gradle中。如果您真的想这样做,我建议您使用普雷兹-骄傲,它可以通过命令行来管理。
我不是android用户,所以我不确定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本地并从那里引用它们。如果不能使用复合构建,这可能是第二好的解决方案。
发布于 2016-11-30 09:16:29
以下不是解决问题的办法,但可能是更好的解决办法:
jitpack.io为您提供了将GitHub存储库添加到项目中作为梯度依赖项的功能,从而允许您省略手动添加jar的过程。如何实现这一点最好由JitPack自己来描述。简而言之:将JitPack库添加到您的build.gradle中:
repositories {
...
maven { url 'https://jitpack.io' }
}现在可以将GitHub回购添加为依赖项:
dependencies {
compile 'com.github.igniterealtime:Smack:-SNAPSHOT'
}在刷新您的项目之后,您应该能够像预期一样使用API。
https://stackoverflow.com/questions/40884029
复制相似问题