文章目錄
- 簡介
- 一、Git篇
- 1.廖雪峯的 Git 教程
- 2.git 每次都需要輸入賬號密碼
- 3.git 查看 stash 中的內容
- 4.git 添加別名
- 5.修改最近一次提交的描述
- 6.本地分支重命名
- 7.刪除遠程分支
- 8.拉取遠程分支
- 9.強制合併不相關的 git 倉庫
- 10.生成 ssh
- 11.git賬號密碼變動後,重置賬戶
- 12.git 配置郵箱和用戶名
- 13.git 刪除 stash 中的內容
- 14.git 每個 log 只顯示一行
- 15.cmder 設置默認打開目錄
- 16.git 合併 commit
- 17.git 刪除緩存中的文件 / 文件夾
- 18.git 本地分支和遠程分支改名
- 19.git 查找 tag 對應的 commit
- 20.git 生成 ssh 公鑰
- 21.git 清除所有untracked file
- 22.解決 MAC 從 Github git clone 很慢
- 23. git 關聯遠程庫與取消關聯
- 24. git 恢復刪除的文件
- 二、gradle篇
- 三、adb篇
- 1.adb 安裝apk
- 2.adb 卸載app
- 3.adb 強制安裝apk
- 4.adb遠程聯調
- 5.adb 查看已連接的設備
- 5.Android Studio 模擬器無法上網
- 6.adb 抓取 log
- 7.adb 終端輸出 log
- 8.adb 查看 ip 地址:
- 四、Windows篇
- 五、Android Studio 篇
- 六、Kotlin 篇
- 七、Android 篇
簡介
工作、學習中總會遇到各種各樣的問題,本篇文章筆者將親歷的一些問題記錄下來,以便日後查閱。
不定期更新。
一、Git篇
1.廖雪峯的 Git 教程
廖雪峯的 Git 教程應該是 Git 最好的入門教程:https://www.liaoxuefeng.com/wiki/896043488029600
2.git 每次都需要輸入賬號密碼
git config --global credential.helper store
如果每次 push 的時候都需要指定分支名,則使用:
git push -u origin master
將 origin 和 master 分支關聯上,以後主分支上的推送就可以直接使用 git push
了。
3.git 查看 stash 中的內容
git stash show
4.git 添加別名
例如用 st 表示 status:
git config --global alias.st status
5.修改最近一次提交的描述
git commit --amend
然後會進入文本編輯界面,點擊 i
開始插入文字,編輯完成後,點擊 Esc
退出編輯模式,輸入 :wq
將修改保存並退出。
6.本地分支重命名
git branch -m 舊的分支名 新的分支名
7.刪除遠程分支
git push --delete origin 分支名
8.拉取遠程分支
git checkout -b 分支名 origin/分支名
此命令會在本地新建一個分支,並將遠程的分支拉取到此新建的分支中。
9.強制合併不相關的 git 倉庫
兩個不相關的 git 倉庫想要 pull 時,會提示 fatal: refusing to merge unrelated histories,這時可以使用以下命令強制 merge
git pull origin master --allow-unrelated-histories
10.生成 ssh
ssh-keygen -t rsa -C "你的電子郵箱地址"
然後命令行窗口會顯示:Enter file in which to save the key:
輸入保存 ssh 文件的地址即可,如:D:key
然後命令行窗口會顯示:Enter passphrase (empty for no passphrase):
可以爲 ssh 設置一個密碼,不需要密碼的話直接回車即可。
然後命令行窗口會顯示:Enter same passphrase again:
再次輸入密碼。
這樣就可以在之前設置的保存路徑中找到兩個 ssh 密鑰,帶 pub 後綴的是公鑰,另一個是私鑰。
11.git賬號密碼變動後,重置賬戶
git config --system --unset credential.helper
下次拉取時就會重新輸入賬號密碼了。
12.git 配置郵箱和用戶名
git config --global user.name "你的名字"
git config --global user.email 你的郵箱地址
查看 git 郵箱和用戶名:
git config user.name
git config user.email
13.git 刪除 stash 中的內容
例如,刪除第一個:
git stash drop stash@{0}
刪除所有:
git stash clear
14.git 每個 log 只顯示一行
git 查看 log 時,爲了方便查找以前的 log,可以讓每個 log 只顯示一行:
git log --oneline
15.cmder 設置默認打開目錄
在設置中,修改 Startup → Task → {cmd::Cmder}
cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:D:\
其中,D:\
就代表默認打開目錄。
16.git 合併 commit
git rebase -i commit的id
或者
git rebase -i HEAD~2
這裏的 HEAD~2 表示前兩個版本,也可以修改爲任意數字。
輸入命令後會看到如下界面:
pick aa6f553 improve PermissionUtil again
pick 37e7290 improve PermissionUtil
pick 2390238 add negative number logic in ChineseNumFormat
# Rebase 222340a..ebaf38b onto 222340a (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
點擊 i 插入內容,然後將需要合併的 commit 前的 pick 改成 squash 即可。需要注意的是這樣會將此 commit 的提交信息也合併(提交信息就是 git commit -m “這裏的信息”),如果想要將丟棄不需要的 commit 的提交信息,將 pick 改成 fixup 即可。
修改完成後,點擊 Esc 退出編輯,輸入 :wq 將修改寫入即可。
17.git 刪除緩存中的文件 / 文件夾
在我們修改了 .gitignore 文件後,如果新增了需要忽略的文件,會發現修改沒有生效, git 仍然會跟蹤此文件,這是因爲 git 的緩存中仍然存在此文件,所以 git 還會去跟蹤它的修改。
這時,需要將此文件從緩存中刪除,命令是:
git rm --cached 文件或文件夾路徑
在某些情況,需要添加 -r (同事遇到了這個情況,暫不清楚原因):
git rm --cached -r 文件或文件夾路徑
18.git 本地分支和遠程分支改名
1.將本地分支進行改名
git branch -m old_branch new_branch
2.將遠程分支的老分支刪除
git push origin :old_branch
3.將改名後的分支push到遠程
git push origin new_branch
19.git 查找 tag 對應的 commit
git show tag的名稱
20.git 生成 ssh 公鑰
生成 ED25519 公鑰:
ssh-keygen -t ed25519 -C "你的郵箱地址,如:[email protected]"
生成 RSA 公鑰:
ssh-keygen -t rsa -b 4096 -C "你的郵箱地址,如:[email protected]"
21.git 清除所有untracked file
git clean -f
22.解決 MAC 從 Github git clone 很慢
先 ping 出 github 的 ip 地址
ping github.global.ssl.fastly.net
ping github.com
將獲取到的 IP 地址記錄下來。例如:
PING github.global.ssl.fastly.net (67.228.102.32): 56 data bytes
PING github.com (13.250.177.223): 56 data bytes
編輯 hosts:
sudo vi /private/etc/hosts
在 hosts 文件底部增加剛剛保存的 IP 地址映射:
67.228.102.32 github.global.ssl.fastly.net
13.250.177.223 github.com
23. git 關聯遠程庫與取消關聯
關聯:
git remote add origin 地址
取消關聯:
git remote remove origin
24. git 恢復刪除的文件
git reset HEAD 文件路徑
或者恢復全部刪除的文件
git reset HEAD .
二、gradle篇
1.將 library 打包成 aar 導入另一個項目
1.1.打包 aar
點擊 Android Studio 側邊欄 Gradle → 點擊需要打包的 library → 點擊 Tasks → 點擊assembleRelease
切換到 Project 視圖 → 在"對應的library\build\outputs\aar"目錄下,可以看到打包出來的 aar 文件
1.2.將 aar 導入另一個項目
方法一
將 aar 文件放入項目的 app\libs 文件夾下
在 app 模塊的 build.gradle 中添加:
...
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
...
implementation(name: 'aar的文件名稱,不帶後綴,如library-release', ext: 'aar')
}
方法二
直接導入 libs 文件夾下的所有 aar
implementation fileTree(include: ['*.aar'], dir: 'libs')
一般 gradle 中已經有一行類似的導入所有 jar 包的代碼:
implementation fileTree(include: ['*.jar'], dir: 'libs')
我們也可以直接在這一行代碼中添加 aar :
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
2.配置jks
在 app 模塊的 build.gradle 文件中,添加:
android {
...
signingConfigs {
// 這裏的 key 指簽名配置的名字,可以任意取,只要後面與其保持一致
key {
storeFile file('密鑰庫路徑,也就是jks文件路徑,其中文件路徑分隔符 \ 需要使用轉義字符 \\ ,如 D:\\keys\\xxx.jks')
storePassword '密鑰庫密碼'
keyAlias = '密鑰名'
keyPassword '密鑰密碼'
}
}
buildTypes {
debug {
...
// 表示 debug 版本使用簽名,這裏的 key 需要和上面的 signingConfigs 中保持一致
signingConfig signingConfigs.key
}
release {
// 表示 release 版本使用簽名,這裏的 key 需要和上面的 signingConfigs 中保持一致
signingConfig signingConfigs.key
}
}
}
Android app簽名的作用:
- app中對簽名進行校驗,可以防止代碼被盜後被別人重新打包
- 系統要求被系統的簽名文件簽名後的應用才能正確獲取系統級權限
3.查看 gradle 依賴樹
gradlew :app:dependencies
查看 gradle 依賴樹並導出到文件中:
gradlew :app:dependencies >dependencies.txt
4.添加Java8支持
app模塊下的 build.gradle 中,添加
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
三、adb篇
1.adb 安裝apk
adb install apk路徑
2.adb 卸載app
adb uninstall app包名
3.adb 強制安裝apk
adb install -r -g apk路徑
其中,-r 指 reinstall (覆蓋安裝),-g 指保留之前的權限
4.adb遠程聯調
(1)連接 USB 數據線,命令行中輸入:
adb tcpip 5037
這裏的5037是指端口號,其他數字也可以。
(2)命令行中輸入:
adb connect 設備ip:5037
設備 ip 指的是連接的 Android 設備的 ip 地址,如192.168.xx.xx,5037仍然是指端口號,需要和第一步中保持一致。
(3)拔掉 USB 數據線即可。
5.adb 查看已連接的設備
adb devices
如果遠程聯調設備顯示offline,重連解決。也就是先:
adb disconnect 設備ip:端口
再:
adb connect 設備ip:端口
如果 adb 連接了多個設備,指定對其中的某個設備使用 adb 命令的方式爲:
adb -s 設備名稱 命令
5.Android Studio 模擬器無法上網
(1)Mac Android Studio模擬器無法上網,網絡偏好設置中添加DNS: 8.8.8.8
(2)Windows Android Studio模擬器無法上網:Tools → SDK Manager→ Http Proxy → 勾選 Auto-detect proxy settings.
6.adb 抓取 log
(1)先清除之前的log
adb logcat -c
(2)設置最多抓取20M
adb logcat -G 20m
(3)輸出到指定位置
adb logcat -v threadtime > 輸出路徑,如D:\log.txt
7.adb 終端輸出 log
Mac:
adb logcat -v threadtime | grep "需要篩選的字符串"
Windows 系統:
adb logcat -v threadtime | findstr "需要篩選的字符串"
其中的字符串表示篩選包含指定字符串的 log,直接在終端輸出。
8.adb 查看 ip 地址:
adb shell ifconfig
四、Windows篇
1.環境變量
1.1.設置環境變量
在文件夾的 This PC
上點擊右鍵,點擊Properties
:(由於工作原因,筆者使用的英文版…)
點擊 Change settings
→ 在彈出的窗口中切換到 Advanced
標籤 → 點擊Environment Variables
→ 在 System variables
中設置環境變量。
1.1.Path 變量
Windows 環境變量中 Path 變量的作用:敲命令行時,除了會尋找當前路徑下的 exe 程序外,還會去 Path 包含的路徑中尋找對應的 exe 程序,(或寫作PATH,path,Windows不區分大小寫)
1.2.其他變量
點擊New...
,可以自定義環境變量,引用自定義變量時,語法是%變量名%
如安裝JDK時,Java要求我們自定義JAVA_HOME環境變量,值爲Java安裝路徑。然後在Path中使用%JAVA_HOME%來表示此變量。
1.3.過時的CLASSPATH變量
CLASSPATH 的作用是指定類搜索的路徑, JVM 是通過 CLASSPATH 來尋找 Java 類的。然而,JDK1.5 以上的版本會自動搜尋 Java 類,不再需要設置 CLASSPATH 了。
如果設置了此環境變量,則JRE將只按照此路徑來搜索Java類,所以如果設置了一定要設置正確。
推薦不設置,筆者已經在環境變量中將CLASSPATH刪除了
1.4.環境變量設置後不生效
重啓命令行窗口,不行的話就重啓電腦,緩存導致的。
2.命令行
2.1.命令行刪除文件夾及其裏面的內容
rmdir /s /q 文件夾路徑
/s 表示刪除文件夾裏面的內容, /q 表示quite,安靜刪除,也就是刪除時不要每次詢問Yes/No。
文件夾路徑分隔符用\
,如:D:\test
,下同。
2.2.命令行不刪除文件夾,只清空裏面的內容
del /q 文件夾路徑
/q同樣表示表示quite,安靜刪除,也就是刪除時不要每次詢問Yes/No
刪除文件同樣是使用此命令:
del 文件路徑
2.3.從命令行打開文件夾
explorer 文件夾路徑
易知,打開當前文件夾:
explorer .
打開上級文件夾:
explorer ..
2.4.查看電腦信息
dxdiag
查看註冊表信息:
regedit
3.Office已阻止訪問一下對象,以便保護你的安全
在“我的電腦”中輸入%temp%
,然後回車,按時間排序,最近的文件就是被攔截的文件,點擊運行即可。
4.Win10 卡在鎖屏頁面,不顯示密碼輸入框
同時按下Ctrl + Alt + Delete
就可以顯示密碼輸入框,然後輸入密碼即可。(智障 Windows,毀我青春)
五、Android Studio 篇
1.Android Studio給連接的設備截圖
在 Logcat 左側點擊照相機圖標即可。
2.Live Templates
Android Studio支持設置代碼快捷輸入模板,在 Setting → Live Templates 中:
(1)點擊右上角的 +
號,新建 Live Template
(2)在 Abbreviation 中輸入快捷鍵
(3)Description 指輸入快捷鍵後顯示的描述
(4)Template text 指快捷鍵入的內容。
(5)Define 表示此快捷鍵在哪些文件類型中生效,如 xml、java、kotlin
如上圖定義的是一個輸入ld,生成以下代碼:
Log.d("~~~","")
的快捷方式。$變量名$
用來定義變量,這裏定義了一個data
變量,作用是:在代碼模板輸入後,光標會自動移動到變量的位置。
(6)定義變量值
點擊 Edit variables 可以定義變量值,如筆者定義了一個輸入 head 便生成頭註釋的模板:
並且將date
變量的默認值設爲date("yyyy-MM-dd")
,表示當前日期。並且勾選右側的Skip if defined
,作用是:由於這個值已被定義,在代碼模板輸入後,光標就不會自動移到這個變量這裏。
3.Logcat 欄的過濾欄不見了
嘗試移動 logcat 框到上下左右即可。
六、Kotlin 篇
1.判斷 lateinit 的變量是否已被初始化
private lateinit var dog: Dog
if (::dog.isInitialized) {
....
}
七、Android 篇
1. java.net.UnknownServiceException: CLEARTEXT communication to not permitted by network security policy
Android 9.0適配的問題,將 targetSdkVersion 降低到 27 或以下可以解決,也可以選擇適配 Android 9.0
2.忽略警告 “Access can be private” 或者 “Access can be package-only”
在方法前添加註解
@SuppressWarnings({"WeakerAccess"})