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 連結