[英]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.