记录下把自己平时开发使用到的代码提交到github的整个过程(非公司代码),平时经常遇到的问题就是说各个环节都知道,但由于没有一个完整的流程,经常会忘记某一个环节,所以记录一下,方便查看,好记性不如烂笔头
新建工程配置gradle管理项目版本,库版本
ext {
configuration = [
package : "mandy.com.uiviews",
compileVersion: 25,
minSdk : 15,
targetSdk : 25,
version_code : 1,
version_name : "0.0.1",
]
libraries = [
supportVersion : "25.3.1",
butterknife : "7.0.1",
glide : "3.6.1",
recycler_animators: "2.1.0",
circleimageview : "2.0.0"
]
}
该文件直接保存到和根build.gradle同级目录下,关于如何使用这个配置文件就有点讲究了,可以直接在根gradle中配置如下信息
apply from: 'versions.gradle'
那么在模块gralde中使用时直接是这样的
compileSdkVersion rootProject.configuration.compileVersion
defaultConfig {
applicationId rootProject.configuration.package
minSdkVersion rootProject.configuration.minSdk
targetSdkVersion rootProject.configuration.targetSdk
versionCode rootProject.configuration.version_code
versionName rootProject.configuration.version_name
}
这也是比较推荐的做法,自己之前遇到的一个坑就是没有在根gralde中进行配置,而是在模块gralde中配置versions.gralde
apply from: '../versions.gradle'
android {
compileSdkVersion rootProject.configuration.compileVersion
defaultConfig {
applicationId rootProject.configuration.package
minSdkVersion rootProject.configuration.minSdk
targetSdkVersion rootProject.configuration.targetSdk
versionCode rootProject.configuration.version_code
versionName rootProject.configuration.version_name
}
......
}
这时如果编译的话会发现无法成功,提示找不到属性的错误,造成这个问题的最主要原因就是没有区别开rootProject和project,如果要在模块中配置versions.gradle必须使用project才行。
推荐做法还是在根gradle配置,最大的好处就是免去每个模块单独apply配置文件,方便管理。
忽略文件设置
最外层配置如下
*.iml
/.gradle
/gradle
/.idea
/build
/local.properties
.DS_Store
/captures
.externalNativeBuild
每个模块配置类似
/build
/src/androidTest
/src/test
jcenter配置
工程中有lib,需要将lib发布到jcenter上,所以需要配置jcenter发布的gralde,具体流程可以参考我写的之前的文章,这里重新大致列一下配置,保证文章完整性。
根gradle中配置如下
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.novoda:bintray-release:0.8.0'//jcenter发布使用到
classpath 'com.android.tools.build:gradle:3.1.3'
}
}
allprojects {
repositories {
google()
jcenter()
}
tasks.withType(Javadoc) {//解决lib中中文乱码问题
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
然后在需要发布的模块gradle中配置类似信息
apply plugin: 'com.novoda.bintray-release'
publish {
repoName = '写自己的仓库名'
userOrg = 'mandy'//bintray.com用户名
groupId = 'com.mandy'//jcenter上的路径
artifactId = '写自己的项目名称'//项目名称
publishVersion = '1.0.0'//版本号
desc = '自定义控件'//描述,不重要
website = '‘’//网站,最好有,不重要
}
使用gradle动态配置资源
在app模块的gradle中配置需要动态修改的资源,比如
resValue "string", "app_name", "\"${rootProject.configuration.appName}\""
这种配置倒不是必须的,可以根据公司需求来决定是否使用,需要注意的一点就是如果在gradle已经配置了资源,那么在该模块的string.xml中就不能再定义同名的资源,否则编译的时候会报重复资源的错误。不过如果同名的资源定义在其他模块则编译不会有问题。这种配置方式和在gralde使用buildconfig比较类似,但是最终是会在res文件下生成对应的资源,可以自己反编译apk就能验证。
git提交流程
(1)github创建好仓库,拷贝仓库地址
(2)进入本地工程目录,初始化仓库,git init,如果studio目录展示如下就说明已经成功
![](https://img.haomeiwen.com/i9809352/1edb05f857fd0588.png)
(3)一顿输入
git add .
git commit -m "first commit"
git remote add origin git地址
git push -u origin master就能顺利把代码提交到gitgub上了。
总结
上述只是一个简单的流程记录,方便自己以后提交有个可参考的笔记。文章中最重要的应该就是rootProject和project的区别,弄混的话小心配置versions.gradle无效。
将项目从github迁移到gitlab上
1
在studio中vcs->git->remotes找到原来提交的地址删除掉,否则每次提交的地址还是github,并添加上新的gitlab地址。
2
在项目文件中通过rm -rf .git删除掉原来的.git文件,需要仔细找下,这些git可能分部在不同module文件夹下,如果没删除完全,使用git init重新创建的话虽然也能成功,但是在迁移的时候最终使用git push -u origin master命令会出问题。
就上述两步是我在迁移现有项目到一个新的仓库遇到比较蛋疼的地方,其他步骤正常即可处理
网友评论