1 项目测试截图 及仓库地址



https://gitee.com/magicfatblink/Notes-master

2 小米便签代码的移植

2.1 IDE 的准备

2.1.1 AS版本选择

由于小米便签是一个很老的项目,距最后一次提交已经有13年的历史了

当时Android主流开发软件还是eclipse,本项目原始代码也是基于eclipse运行的,所以我们导入AS的时候需要进行一次转换。实际运行发现,现如今AS的版本(2023.3.2)移除了对eclipse项目移植的功能(这个地方卡了我一天)。在网上查资料,查看别人移植的教程发现,大部分人使用的都是之前的版本。

所以在官网找到之前的版本(我用的是2022.2.1)

https://developer.android.google.cn/studio/archive (这里一定要把语言切换到英文否则下载出错)

下载发现果然该版本有ADT功能(不知道为什么高版本阉割了)

2.1.2 JAVA版本选择

2022版最高支持Gradle 8.. 的版本,对应该版本的是JAVA 17 所以在java版本这里又踩了一个坑。

至于Gradle是什么,就简单的理解成类似于maven就行了

2.2 代码修改

2.2.1 关于JAVA 17代码的修改

文件app/src/main/java/net/micode/notes/ui/NoteEditActivity.java会报错

截取代码中报错的一部分

提示我们

Constant expression required

经过查资料得知,在JAVA 17以后 switch..case都不支持非常数表达式,如果想使用相同的方法只能用if..else置换达到相同结果。

这下没办法了只能一个个更改



其实还有别的方法,换一个Gradle更低的版本以及对应的JAVA即可,但是本着IDE能不改动就不改动的原则还是辛苦置换下else即可,毕竟后者不需要废脑子只是废手

3 Git的使用

项目目前都已经构建测试完成,下面尝试使用git进行管理。对于命令行和小乌龟两种方式(cmd和gui的区别),我更喜欢cmd一些,所以接下来所有操作都基于命令行。

3.1 管理员视角下的Git操作

  • ①创建针对本作业的项目和软件版本库,在版本库中建立“src”和“doc”两个文件夹,分别存储软件系统的源代码和报告文档。为了遵循AS文件管理系统的管理方式,我在/app内放置了src和doc目录、

  • ②建立master、Dev,将当前版本存入master目录下

(3) 实践操作参考:组长组员两个人协同开发:组长负责维护开发分支dev,组员向dev上传提交;当dev测试合适后,组长有唯一权限向master上传作为最终结果。

① 远程仓库有master和dev两个分支

② 组长本地有master和dev分支,分别关联对应的远程分支

③ 组员本地只有一个分支,关联远程dev分支【可以选择clone某一个远程分支到本地】

④ 具体开发流程是:

1 组长和组员分别在各自的本地dev分支开发,有阶段性成果后push到远程dev【若有冲突,解决冲突再合并】

2 当开发完成、结果稳定后,组长将本地的master和dev分支merge,再把master分支push上去

  • ③提交原始代码到gitee上

  • ④创建一个Dev分支,从master分支分离(全部copy master分支)

  • ⑤在本地以及远程查看仓库,发现本地只有master仓库没有Dev

  • ⑥所以创建一个本地分支来指向这个Dev

  • ⑦切换分支

  • ⑧假设我已经修改测试完毕,打算提交Dev分支

  • ⑨查看gitee:

  • ⑩提示领先master一个版本,创建一个pull request来推送:

  • ⑩①测试成功



  • ⑩②补充一点,为了模拟完整的开发,需要对master设置保护



    目的是为了小组成员不能控制master

成员视角(非管理员视角)

  • ①在我接受了管理员邀请后,加入了此git项目:

  • ②开始clone代码,注意这里使用选项让我克隆的是Dev分支

  • ③测试一下是不是真的克隆了分支

  • ④我修改了GtaskASync的一个类,然后现在开始提交分支

  • ⑤再去gitee看,已经提交成功

  • ⑥提交request

  • ⑦这时再让管理员审核并且合并就可以了。

关于git对于分别提交相同分支(不审核的条件下)的处理

-两人都对readme英文版进行修改

会发现第二个人就会报错,错误冲突,只能解决冲突才能进一步修改。

所以正确的是提交前先拉取,本地合并,然后再提交。

3.4 用到的部分git代码

git clone 链接
git add .
git commit -m "提交信息,不能为空"
git push origin master
git branch 分支
git checkout Dev
git clone -b Dev 链接

小米便签AS部署之Git的基本使用的更多相关文章

  1. 仿小米便签图文混排 EditText解决尾部插入文字bug

    一直想实现像小米便签那样的图文混排效果,收集网上的办法无非三种: 1.自定义布局,每张图片是一个ImageView,插入图片后插入EditText,缺点是实现复杂,不能像小米便签那样同时选中图片和文字 ...

  2. 小米开源便签Notes-源码研究(2)-定时提醒的便签

    本篇讲述小米便签中的定时提醒功能.  便签,可以理解为一件事情,一项任务,有个定时提醒的功能,还是蛮不错的~    小米便签定时功能,是当编辑便签的时候,有个菜单项,选了之后,就弹出一个"日 ...

  3. Android一个小巧的记录app(便签或者日记 随心)

    入驻博客园两个月今天第一次发随笔,,话不多说,直接上图展示效果 主界面用的RecyclerView的瀑布流(StaggeredGridLayoutManager),同时加上Floatbutton悬浮按 ...

  4. 码云,git使用 教程-便签

    码云,git使用 教程-便签 Code cloud, git use tutorial - note 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.c ...

  5. 小米开源便签Notes-源码研究(0)-整体功能介绍(图文并茂)

    本周对小米开源文件管理器,做了整体的研究,大致弄清了源码的来龙去脉,剩下的就是重点研究几个活动的流程了. 讲解Android应用这种可视化的程序,感觉还是有图比较好,不然功能界面都不清楚,自己不好介绍 ...

  6. 小米开源便签Notes-源码研究(1)-导出功能整体思路

    NotesListActivity是入口Activity. 响应菜单事件,我的手机是"左键菜单".如果菜单项的ID是"R.id.menu_export_text" ...

  7. Android自动化测试 - MonkeyRunner(二) 锤子便签测试脚本

    来源于:http://testerhome.com/topics/878 # encoding=utf-8 #导入python中自带的time模块和sys模块,脚本中都要用到它们. import ti ...

  8. 20151217JS便签

    JS便签: 根据一个数值来改变Repeater行数的颜色 <script type="text/javascript"> var query = document.ge ...

  9. win7桌面便签。自带的

    新建WIN7下的桌面便签小程序 桌面—>新建 快捷方式-> 输入%windir%\system32\StikyNot.exe

  10. ios UIWebView截获html并修改便签内容(转载)

    ios UIWebView截获html并修改便签内容 博客分类: iphone开发iphone开发phoneGap uiwebviewstringByEvaluatingJavaScriptFromS ...

随机推荐

  1. [GPT] 如何配置抓包工具以解密HTTPS流量才能看到明文的域名地址

    要配置抓包工具以解密HTTPS流量,您需要执行以下步骤: 1. 安装抓包工具:首先,确保您已经安装了支持HTTPS解密的抓包工具,例如Wireshark. 2. 获取SSL证书:抓包工具需要使用目标网 ...

  2. 『手撕Vue-CLI』添加自定义指令

    前言 经上篇『手撕Vue-CLI』添加帮助和版本号的介绍之后,已经可以在控制台中输入 nue --help 来查看帮助信息了,但是在帮助信息中只有 --version,--help 这两个指令,而 v ...

  3. ITIL一定要去认证吗?哪个版本合适

    关于ITIL的演进 ITIL是在演进发展中的,v1并不成功,v2 v3讲究流程与控制,其实都是偏向务虚,理论东西较多,能落地的少或许OGC的专家们自己也发现 光靠口头忽悠并不能说服最终用户接受ITIL ...

  4. Canvas简历编辑器-我的剪贴板里究竟有什么数据

    Canvas图形编辑器-我的剪贴板里究竟有什么数据 在这里我们先来聊聊我们究竟应该如何操作剪贴板,也就是我们在浏览器的复制粘贴事件,并且在此基础上聊聊我们在Canvas图形编辑器中应该如何控制焦点以及 ...

  5. 【OpenVINO™】使用OpenVINO™ C# API 部署 YOLO-World实现实时开放词汇对象检测

    YOLO-World是一个融合了实时目标检测与增强现实(AR)技术的创新平台,旨在将现实世界与数字世界无缝对接.该平台以YOLO(You Only Look Once)算法为核心,实现了对视频中物体的 ...

  6. ansible系列(26)--ansible的tags标签

    目录 1. tags标签 1.1 指定执行某个tags 1.2 指定排除某个tags 1. tags标签 默认情况下, Ansible 在执行一个 playbook 时,会执行 playbook 中所 ...

  7. 网络拓扑—NAT内外网映射

    使用Windows Server 2003 网络拓扑 Router 外网:NATIP 网段 = 192.168.17.0/24 内网:仅主机模式IP = 172.16.29.4 Client1:仅主机 ...

  8. Ubuntu 启用交换分区

    前言 交换分区也称之为 swap 分区,允许系统在内存不足的情况下将内存程序写入文件,防止系统卡死失去响应的情况发生. 检查现有交换分区 首先,确认系统中是否已存在交换分区或文件.在终端中输入以下命令 ...

  9. Java面试题:让依赖注入变得简单,面对@Autowired和@Resource,该如何选择?

    @Autowired和@Resource都是Java Spring框架中的注解,用于实现依赖注入(DI)和控制反转(IoC).它们的区别主要在以下三个方面: 源头不同  @Autowired是Spri ...

  10. vue多页面应用

    多页面应用本身和单页面应用没什么差别,无非是多了几个入口点. 入口点多的话,还可以写个函数扫描路径取添加入口点. 比较让人好奇的是路径的问题.我们要开发的时候要体现目录层级接口,所以入口文件是一层套一 ...