submodule集成第三方库
来源:互联网 发布:水准仪测量数据图片 编辑:程序博客网 时间:2024/05/16 12:48
Maven集成第三方库
在Android Studio中,原生支持maven仓库,可以简单的几行配置项就可以集成第三方的jar或者aar。如下两步即可实现:
配置jcenter地址
配置依赖
这种方式简单方便,支持广泛,但是也存在一些痛点:
需要第三方库编译打包完成,并上传到maven仓库。GitHub上很多项目并不支持maven下载。
- 如果第三方库有多个编译选项,多个编译选项组合起来数目庞大。为每个组合都打包管理,即使使用maven仓库,也是一个非常繁琐的工作。
- 简单方便,但不够灵活。如果是一个庞大的第三方库,即使你只想使用其中的一个小模块,也得把它整个的下载集成,当然你可以配置proguard来做裁剪。
- 如果第三方库有了更新,你需要更新依赖配置。当然,你可以使用通配符来配置依赖的库的版本信息。
- 如果想看看源码,需要手动去下载源码。
submodule集成第三方库步骤
git大行其道,GitHub上的开源项目也多不胜数。如果你的项目使用了git做代码管理工具,那么现在你可以使用git submodule管理第三方库的依赖。git submodule --help可以查看该命令的用法,主要使用add、init、update几个命令。
- git submodule add 添加项目依赖,同步第三方库的代码到本项目下,自动生成一个.gitmodules的文件
- git submodule init 将.gitmodules文件里的信息添加到本项目的.git/config文件中。
- git submodule sync 同步.gitmodules里声明的子模块的url。
- git submodule update 更新submodule的最新代码。
- git submodule deinit 将.gitmodules文件里的信息从.git/config中删除。
- git submodule status 查看子模块的commit id。
如何集成
现在演示如何集成一个GitHub上的第三方的仓库。
进入你的项目目录
git submodule add添加子模块。运行命令后,会自动将同步子模块代码到本项目下,自动更新.gitmodules和.git/config两个文件。
git submodule add -b master git@github.com:xxx/yyy.git(拉取远程的git仓库的master分支作为子模块)
git commit -i .gitmodules yyy 提交你引入的名字为yyy的子模块。
git push 提交代码到远程仓库。这样,其他的协同开发者才能看到你的引入的子模块。
现在你可以在项目中,添加项目依赖,并在自己的代码中引用子模块的代码。
注意:
此处的演示是直接集成的GitHub上的开源项目,不存在权限的问题。
如果第三方库需要权限,在git submodule add时,不要在第三方库的url中指定用户名。
修改.git/config文件,在submodule配置的url中增加自己的用户名。
如何协同开发
现在演示如何协同开发:
进入你的项目目录。
git fetch 更新最新的代码。
git submodule status 命令可以查看子模块的引入情况。此时,你本地代码库中并没有子模块的代码。以子模块命名的文件仅仅只是一个索引index。.gitmodules文件中已经配置好了子模块。
git submodule init 命令将.gitmodules文件中的配置导入.git/config中。如果引入的子模块是需要权限验证的,还需要修改.git/config文件,在子模块配置的url中增加自己的用户名。
git submodule update 更新子模块的代码。
现在你可以在项目中,添加项目依赖,并在自己的代码中引用子模块的代码。
提交代码,协同开发。
切记切记:
- 如果submodule项目有更新,主项目的远程分支会自动的生成一个commit信息。此时,你的开发分支会出现一个子模块的diff,你只需要git submodule update和git fetch更新,diff会自动消失,不需要手动提交submodule的diff。
优缺点
优点:
- 不需要maven支持。
- 灵活。可以自己配置依赖关系,可以只依赖子模块中一部分。也可以自己写编译脚本,只编译自己需要的代码。
- 直接集成了子模块的代码库,如果需要改子模块代码,可以快速修改验证,然后提交补丁到子模块的代码库。
- 子模块和主项目可以是不同的团队维护。
缺点:
- 比maven集成方式要麻烦,需要手动更新子模块代码。
- 依赖的第三方库的分支有频繁更新时,会在本项目的git log里自动生成很多日志信息。
- submodule集成第三方库
- 使用Submodule管理iOS第三方资源
- android 集成第三方库
- 集成第三方库常见问题
- 集成第三方JavaScript库
- ios第三方库集成
- Android中集成第三方库
- Cocoapods第三方库快速集成
- 第三方支付集成
- 第三方支付集成
- 集成第三方jar, so
- 集成第三方支付宝
- 第三方集成qq sina
- ShareSDK集成第三方登录
- Android 第三方分享集成
- iOS第三方支付集成
- iOS 集成 第三方 QQ
- android集成第三方支付
- HashMap与HashSet的区别
- ajax开发: ajax的基础问题
- vim常用操作和使用技巧
- python --format
- 1036. 跟奥巴马一起编程(15) PAT
- submodule集成第三方库
- 存储过程基本知识
- Nexus OSS 系统搭建
- 算法 常见的排序算法
- 第二集SystemUI的启动
- Spark Q&A : Spark利用databricks读取CSV文件报错 CSVFormat NoClassDefFoundError
- 图像的阈值以及滑动条的建立
- vue cli 项目结构
- ROS 不能再详细的安装教程16.04+kinetic