admin 管理员组文章数量: 887006
文章目录
- 简介
- 一、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 只显示一行
- 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 恢复删除的文件
- 25. git 删除除当前分支外的所有分支
- 26. 抓取字符串
- 27. git stash pop 冲突后撤销 pop 操作
- 28. git 打 diff,应用 diff
- 29.pull 或者 push 时出现 fatal: refusing to merge unrelated histories
- 30.提示 hint: Please, commit your changes before merging.
- 31.Git 提示 error setting certificate verify locations
- 32.Git 切换 tag
- 33. Unlink of file Failed. Should I try again?
- 34. git push 时输入账号密码后提示 Authentication failed
- 35. git reset --hard 之后,如何撤销
- 二、gradle篇
- 1.将 library 打包成 aar 导入另一个项目
- 1.1.打包 aar
- 1.2.将 aar 导入另一个项目
- 方法一
- 方法二
- 2.配置jks
- 3.查看 gradle 依赖树
- 4.添加Java8支持
- 5. gradle 缓存的 library 保存在哪里?
- 6. 使用阿里云镜像下载依赖库
- 三、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 地址
- 9. adb 启动 app
- 10. 打印当前屏幕正在运行的 app 的包名
- 11.打印 app 版本号
- 12.Logcat 频繁 "Unexpected EOF!"
- 13. Warning: debug info can be unavailable. Please close other application using ADB: Monitor, DDMS, Eclipse
- 14. adb 打开网页
- 四、Windows篇
- 1.环境变量
- 1.1.设置环境变量
- 1.1.Path 变量
- 1.2.其他变量
- 1.3.过时的CLASSPATH变量
- 1.4.环境变量设置后不生效
- 2.命令行
- 2.1.命令行删除文件夹及其里面的内容
- 2.2.命令行不删除文件夹,只清空里面的内容
- 2.3.从命令行打开文件夹
- 2.4.查看电脑信息
- 2.5. 添加账户
- 2.6. 连接 ftp 服务器
- 3.Office已阻止访问以下对象,以便保护你的安全
- 4.Win10 卡在锁屏页面,不显示密码输入框
- 5. 窗口在屏幕外拉不回来
- 6. 网络可以用,但图标显示无 Internet
- 7.查看剪贴板历史
- 五、Android Studio 篇
- 1.Android Studio给连接的设备截图
- 2.Live Templates
- 3.Logcat 栏的过滤栏不见了
- 4. Logcat 过滤 Log
- 5. Android Studio 报红但是可以运行
- 6.Debug 变得很卡,并提示 method breakpoints may dramatically slow down debugging
- 7. 在 Marketplace 中搜索插件时,不显示搜索结果。
- 8.中文乱码
- 9.修改 Logcat 输出日志的颜色
- 10. 工具栏不见了
- 11. "Launch succeeded" but not installed
- 12. 设置达到指定字符长度时自动换行
- 13. Android Studio 底部 行号:列号 不见了
- 14. SourceSet with name ‘main’ not found
- 15. Android Studio 全局 proxy 配置
- 六、Kotlin 篇
- 1.判断 lateinit 的变量是否已被初始化
- 七、Android 篇
- 1. java.UnknownServiceException: CLEARTEXT communication to not permitted by network security policy
- 2.忽略警告 "Access can be private" 或者 "Access can be package-only"
- 3. 打印 Activity 堆栈信息
- 4.values 资源文件夹匹配规则
- 八、命令行篇
- 1. 命令行网络请求
- 2.cmder 设置默认打开目录
- 3.Cmder 设置别名
- 4. Windows 刷新 dns 缓存
- 5. Windows 命令行打开网页
- 6. Cmd 输出到文件时乱码
- 九、Java 篇
- 9.1 String 存储位置
- 十、开发篇
- 1. 打印 Log 与开发同样重要
- 十一、Mac 篇
- 1. Mac 设置环境变量
- 十二、Chrome 篇
- 1. 开启 Chrome 多线程下载
- 2. 快速到达页面顶部、底部快捷键
简介
工作、学习中总会遇到各种各样的问题,本篇文章笔者将亲历的一些问题记录下来,以便日后查阅。
不定期更新。
一、Git篇
1.廖雪峰的 Git 教程
廖雪峰的 Git 教程应该是 Git 最好的入门教程:https://www.liaoxuefeng/wiki/896043488029600
2.git 每次都需要输入账号密码
git config --global credential.helper store
如果每次 push 的时候都需要指定分支名,则使用:
git push -u origin master
将 origin 和 master 分支关联上,以后主分支上的推送就可以直接使用 git push
了。
-u
是 upsteam
的缩写,也可以用全称:
git push origin master --set-upsteam
如果每次 pull 的时候都需要指定分支名,则使用:
git branch -u origin/master
merge 远程分支的同时,也更新对应 branch:
git pull origin master:master
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
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@example"
生成 RSA 公钥:
ssh-keygen -t rsa -b 4096 -C "你的邮箱地址,如:email@example"
21.git 清除所有untracked file
git clean -f
连带清除所有 untracked 文件夹:
git clean -fd
22.解决 MAC 从 Github git clone 很慢
先 ping 出 github 的 ip 地址
ping github.global.ssl.fastly
ping github
将获取到的 IP 地址记录下来。例如:
PING github.global.ssl.fastly (67.228.102.32): 56 data bytes
PING github (13.250.177.223): 56 data bytes
编辑 hosts:
sudo vi /private/etc/hosts
在 hosts 文件底部增加刚刚保存的 IP 地址映射:
67.228.102.32 github.global.ssl.fastly
13.250.177.223 github
23. git 关联远程库与取消关联
关联:
git remote add origin 地址
取消关联:
git remote remove origin
git 关联分支:
git branch --set-upstream-to=origin/远程分支名 本地分支名
关联之后直接使用 git pull,git push,默认操作这两个分支,无需指定分支名
24. git 恢复删除的文件
git reset HEAD 文件路径
或者恢复全部删除的文件
git reset HEAD .
25. git 删除除当前分支外的所有分支
git branch | xargs git branch -D
其中用到的 xargs 是指将前一个命令的输出作为第二个命令的输入。所以这里的逻辑是先用 git branch 列出所有分支,然后将分支名依次传入 git branch -D 中,就达到了将所有分支删除的目的。由于当前分支前会有一个 *
号,所以运行这行命令会输出;
error: branch '*' not found.
并且当前分支不能被删除,所以运行这行命令还会输出:
error: Cannot delete branch '当前分支名' checked out at '项目地址'
这两个错误提示不会导致删除其他分支失败,所以不用管他们。
26. 抓取字符串
例如:抓取包含 test 的分支
git branch | grep "test"
抓取不含 test 的分支
git branch | grep -v "test"
注:这个技巧是 grep 命令,和 git 关系不是特别大,但顺手记到这里。
27. git stash pop 冲突后撤销 pop 操作
冲突后,先用
git add .
将冲突文件都放至暂存区;
再用
git reset .
将其从暂存区恢复到工作区;
再用:
git checkout .
将工作区修改撤销。此时就回到了 git stash pop 之前的状态。
注:git stash pop 一般情况下会将 stash 中的修改内容弹出并将这次的修改内容从 stash 中删除。但如果 pop 时出现冲突,则这次的修改内容不会被删除。
28. git 打 diff,应用 diff
git diff > test.diff
应用:
git apply test.diff
相当于将此次的修改备份,然后就可以放心的 checkout 丢弃修改,需要时再将此次的修改加载出来。
29.pull 或者 push 时出现 fatal: refusing to merge unrelated histories
push 和 pull 时都可能出现这个错误,是因为远程 git 库和本地 git 库没有关联。最好是先检查一下当前远程库地址是否正确:
git config -l
查看 remote.origin.url
的值是否正确。如果确认地址是正确的,在操作命令后加上--allow-unrelated-histories
强制合并即可。例如:
git pull --allow-unrelated-histories
git push --allow-unrelated-histories
30.提示 hint: Please, commit your changes before merging.
有时候,明明没有内容需要 merge ,但 git 提示 commit your changes before merging。这是因为之前的操作导致当前正在 merge 过程中,所以无法进行其他操作,只要将之前的 merge 中止了就可以了。
git merge --abort
31.Git 提示 error setting certificate verify locations
这个问题是因为证书文件路径变了,将其修改为正确路径即可。
方案 1:
git config http.sslcainfo “C:\Program Files (x86)\git\bin\curl-ca-bundle.crt”
后面的路径就是当前的证书路径。
方案 2:
git config http.sslverify false
将证书先重置,再重新设置证书。
32.Git 切换 tag
git checkout tag的名称
33. Unlink of file Failed. Should I try again?
当操作 git 时,如果某个文件正在被其他程序占用,就会报这个错。
查看哪个程序在用这个文件,然后关掉那个程序就可以了。
查看哪个程序在用这个文件的步骤:
- (Windows + R) 打开 Run 窗口
- 输入 resmon 回车,打开 Resource Monitor
- 在 Associated Handles 右边的输入框输入文件名
- 找到正在用这个文件的程序之后,可以直接右键 End Process 关掉这个程序。
参考链接:https://stackoverflow/questions/4389833/unlink-of-file-failed-should-i-try-again
在 Android Studio 中,报这个错的原因一般是 GradleDaemon 在使用这个文件,可以先用 jps
命令查看 GradleDaemon 进程的 ID,然后用 taskkill /PID 进程ID
杀掉 GradleDaemon 进程。
34. git push 时输入账号密码后提示 Authentication failed
控制台还会有这样的提示信息:
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/xxx'
这是 github 为了安全起见,不再支持账号密码 push 了。需要在 github 账号中,点击 Settings → Developer settings → Personal access tokens &arr; 创建一个新的 token。
创建完成后将这个 token 字符串保存下来,在 push 时,输入账号和 token 就能正常 push 了。(也就是在以前输入密码的位置,输入 token)
笔者建了一个永久有效、支持所有功能的 token,这是 github 不推荐的,因为这样不安全,但这样使用的时候很方便,况且我也没有什么机密代码。
35. git reset --hard 之后,如何撤销
当我们使用 git reset --hard 回退版本之后,有时会发现回退错了,不应该回退,想要撤销这次 reset 操作,重新回到 HEAD。这时,我们可以使用 reflog 命令,这个命令会输出 HEAD 的历史,当执行 reset,checkout 等操作时,这些操作会被记录在 reflog 中。
git reflog
然后从 HEAD 历史中找到需要回到的 HEAD 的 commit id,再次调用 git reset --hard 即可:
git reset --hard 需要回到的HEAD的commitID
二、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
}
...
}
5. gradle 缓存的 library 保存在哪里?
有时候 gradle 下载 library 会失败,这时候我们可以去手动下载 aar 或 jar,下载后存到哪里呢?
存到这个位置:
C:\Users\你的用户名\.gradle\caches\modules-2\files-2.1
或者直接用这个路径:
C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1
%USERNAME%
表示名为 USERNAME 的环境变量,Windows 系统自带这个环境变量。
这个文件夹中有许多的包名,点击对应包名的文件夹就能看到这个 aar 或 jar 了,这些文件都放在一个名字很奇怪的文件夹中,比如 7b823157de0b185ceab43e948e3088adb928532d
之类的。这个文件夹名其实是这个文件的 SHA1 值。
计算文件 SHA1 值的命令:
certutil -hashfile 需要计算的文件 SHA1
查看这个命令的帮助文档:
certutil -hashfile -?
6. 使用阿里云镜像下载依赖库
有时候网络不好,下载 library 时频频报 Read Timeout,这时候可以通过阿里云镜像提升下载速度。
maven { url "https://dl.google/dl/android/maven2/" }
maven { url "https://maven.aliyun/repository/google" }
maven { url "https://maven.aliyun/repository/gradle-plugin" }
maven { url "https://maven.aliyun/repository/public" }
maven { url "https://maven.aliyun/repository/central" }
maven { url "https://maven.aliyun/repository/jcenter" }
有的 gradle 可能是用 kotlin 写的,所以顺便贴上 kotlin 版:
maven("https://dl.google/dl/android/maven2/")
maven("https://maven.aliyun/repository/google")
maven("https://maven.aliyun/repository/gradle-plugin")
maven("https://maven.aliyun/repository/public")
maven("https://maven.aliyun/repository/central")
maven("https://maven.aliyun/repository/jcenter")
其中,第一个地址 https://dl.google/dl/android/maven2/
不是阿里
感谢阿里!
三、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
9. adb 启动 app
启动 Settings:
adb shell am start com.android.settings/com.android.settings.Settings
10. 打印当前屏幕正在运行的 app 的包名
adb shell dumpsys window | findstr mCurrentFocus
11.打印 app 版本号
adb shell dumpsys package 包名| findstr versionName
12.Logcat 频繁 “Unexpected EOF!”
这是由于 Logcat 的缓存区写满了导致的
查看 Logcat 缓存区大小:
adb logcat -g
修改 Logcat 缓存区大小:
adb logcat -G 4M
这里我将其指定为 4M,这个值可根据自己的需要设置。
参考:分析解决logcat报read: Unexpected EOF!异常
13. Warning: debug info can be unavailable. Please close other application using ADB: Monitor, DDMS, Eclipse
有时候想要 Debug 却 Attach 不上,报这个错误。这时候可以通过在平板的开发者选项中,关闭/再打开 USB 调试解决。
14. adb 打开网页
adb shell am start -a android.intent.action.VIEW -d https://www.baidu
四、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
2.5. 添加账户
control userpasswords2
2.6. 连接 ftp 服务器
文件夹连接 ftp:
文件夹中输入 ftp://地址/
,输入账号密码即可。
命令行连接 sftp:
sftp 用户名@服务器地址
然后输入 密码即可。
将远程的文件下载到本地,使用 get
命令:
get 文件名
默认下载目录就是连接 sftp 时,所在的文件夹。
将本地的文件上传到 sftp 服务器,使用 pull
命令:
put 文件名
3.Office已阻止访问以下对象,以便保护你的安全
在“我的电脑”中输入%temp%
,然后回车,按时间排序,最近的文件就是被拦截的文件,点击运行即可。
4.Win10 卡在锁屏页面,不显示密码输入框
同时按下Ctrl + Alt + Delete
就可以显示密码输入框,然后输入密码即可。(智障 Windows,毁我青春)
5. 窗口在屏幕外拉不回来
先确保窗口显示到前台
然后按 alt + space 键,激活控制菜单。
之后按 M 键,开启窗口移动控制,再用键盘上的上下左右按键,将窗口移到中央位置。
6. 网络可以用,但图标显示无 Internet
这个问题可能因设备而异,我的原因是使用了 Clash,所以需要在 Clash 的规则中添加这两个地址:
DOMAIN-SUFFIX,msftconnecttest,🚀 节点选择
DOMAIN-SUFFIX,msftncsi,🚀 节点选择
参考链接:https://github/vernesong/OpenClash/issues/2239
7.查看剪贴板历史
Win + V
五、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 框到上下左右即可。
4. Logcat 过滤 Log
在过滤栏填入此正则表达式,勾选右侧 Regex 框:
^(?!.*不需要的内容)(?!.*另一个不需要的内容)(.*需要的内容|.*另一个需要的内容)
其中不需要的内容
和需要的内容
自行替换即可,可以无限连缀。
5. Android Studio 报红但是可以运行
尝试一:clean project 、rebuild project
尝试二:File → Invalidate caches / Restart
尝试三:关闭 Android Studio,删除项目文件夹下的 .gradle、.idea 文件夹,重新打开 Android Studio,在设备上运行项目,安装一次 app。
6.Debug 变得很卡,并提示 method breakpoints may dramatically slow down debugging
查看所有断点:
取消勾选 Java Method Breakpoints
7. 在 Marketplace 中搜索插件时,不显示搜索结果。
点击 File -> Settings -> Plugins,点击 Installed 右边的齿轮,在下拉框中选择 Manage Plugin Repositories:
然后添加上这个 URL: https://plugins.jetbrains/
参考:Plugins inside Android Studio Marketplace not showing when browsing
8.中文乱码
点击 Help -> Edit Custom VM Options,如果没有这个文件的话,会提示让你创建这个文件。
编辑这个文件,在文件底部添加一行:
-Dfile.encoding=UTF-8
参考文章:
Android Studio 3.6.3 Logcat 状态栏输出出现中文乱码的问题——完全解决
注:有的文章中说修改 Android Studio 安装目录下 bin/ 文件夹中的 studio64.exe.vmoptions,的确也能用,但 Android Studio 更新时会提示这个文件被篡改了,然后让你替换掉这个文件,所以不是长久之计。而本文记录的这个方法看起来是 IDEA 给我们提供的自定义 VM Options 的渠道,在 Android Studio 更新时应该会保留,不过笔者暂未测试过。
9.修改 Logcat 输出日志的颜色
- 在 Setting 中搜索 Logcat
- 取消右侧 Inherit values from 的选择,即可在上方的 Foreground 中设置自己想要的颜色
- 最后点击 Apply → OK
附上图中各个级别的日志颜色值:
VERBOSE:#BBBBBB
DEBUG:#54CEE3
INFO:#55E350
WARN:#F8DA3F
ERROR:#FF5370
ASSERT:#FF9492
参考文章:Android Studio修改Log信息颜色
10. 工具栏不见了
有时候,Android Studi
11. “Launch succeeded” but not installed
在 StackOverflow 上有人说降级 gradle,笔者测的时候,戳一下 “Sync Project with Gradle Files” 就好了。不一定适合所有情况,但可以试试。
参考文章:“Operation Succeeded” in Android Studio 4.1, with no action
12. 设置达到指定字符长度时自动换行
在格式化的时候,代码过长会自动换行。但有时一行并不是很长,也触发了换行。这个问题可以通过修改自动换行的长度解决:
13. Android Studio 底部 行号:列号 不见了
在 Android Studio 底部有个行号:列号
,点击可以输入行号自动跳转至某行。这个功能还挺好用的。
在 View -> Status Bar Widgets -> Line: Column Number
中开启,如果不喜欢这个功能也是在这里关闭。需要注意的是,如果要开启这个功能,还需要保证 Status Bar Widgets
上方的 Status Bar
也是勾选上的。Status Bar
表示底部整个状态栏。
14. SourceSet with name ‘main’ not found
运行 Java 的 main() 方法时,有时 Android Studio 会报 SourceSet with name ‘main’ not found。
修复方案是在 .idea
文件夹下的 gradle.xml
文件中添加 <option name="delegatedBuild" value="false" />
15. Android Studio 全局 proxy 配置
单个项目中配置 proxy 的位置在项目的 gradle.properties
中。如果要清除代理设置,还需要检查全局是否设置了代理。全局 proxy 配置路径是:C:\Users\%USERNAME%\.gradle\gradle.properties
六、Kotlin 篇
1.判断 lateinit 的变量是否已被初始化
private lateinit var dog: Dog
if (::dog.isInitialized) {
....
}
七、Android 篇
1. java.UnknownServiceException: CLEARTEXT communication to not permitted by network security policy
Android 9.0适配的问题,将 targetSdkVersion 降低到 27 或以下可以解决,也可以选择适配 Android 9.0
适配方式有两种:
在 AndroidManifest 中设置允许明文传输:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
这是最简单的方式。
或者新建一个 res/xml/network_security_config.xml 文件,注意替换需要明文传输的域名:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">api.example(to be adjusted)</domain>
</domain-config>
</network-security-config>
在 AndroidManifest 中声明使用此文件作为网络安全配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
2.忽略警告 “Access can be private” 或者 “Access can be package-only”
在方法前添加注解
@SuppressWarnings({"WeakerAccess"})
3. 打印 Activity 堆栈信息
adb shell dumpsys activity activities
这个命令打印所有存活的 Activity及其堆栈信息
adb shell dumpsys activity activities >文件名
这个命令输出所有存活的 Activity及其堆栈信息到文件
4.values 资源文件夹匹配规则
以 strings 为例,比如匹配英国资源:
- 先寻找
values-en-rGB
中的 string 中是否有此资源 - 如果没有找到,则再找
values-en
文件夹下是否有此资源 - 如果还是没有找到,则在
values-en-XX
(XX指任意国家,如values-en-rFR
、values-en-rDE
)这一系列中,寻找此资源 - 如果还是没有找到,则在
values
文件夹中寻找默认的资源。 - 如果
values
文件夹中再找不到就会 crash 了。
八、命令行篇
1. 命令行网络请求
GET 请求:
curl -X GET 请求地址
如:
curl -X GET https://www.baidu/
POST 请求:
curl -X POST --data "{\"body\":\"This is a Message.\"}" 请求地址
Head 信息:
curl -X POST --data "{\"body\":\"This is a Message.\"}" -H "Content-Type: application/json" 请求地址
携带用户名密码:
curl -D- -u 用户名:密码 -X POST --data "{\"body\":\"This is a Message.\"}" -H "Content-Type: application/json" 请求地址
2.cmder 设置默认打开目录
Cmder,命令行神器。
在设置中,修改 Startup → Task → {cmd::Cmder}
cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:D:\
其中,D:\
就代表默认打开目录。
3.Cmder 设置别名
编辑 安装目录\cmder_mini\config\user_aliases.cmd
文件,将别名添加到里面。如:
adbd=adb disconnect
传参:
commit=git commit -m "$*"
此时就可以使用:
commit message
效果等同于:
git commit -m "message"
多个参数:
printTest=echo $1 $2
此时,使用
printTest Hello World
就会在控制台输出
Hello World
组合命令,使用 &&
连接多个命令,每个命令会依次执行,后面的命令会等待前面的命令完全执行完毕后才执行。
例如:
sync=git add . && git commit -m "sync"
4. Windows 刷新 dns 缓存
ipconfig /flushdns
5. Windows 命令行打开网页
cmd /c start 网址
6. Cmd 输出到文件时乱码
在cmd中输入"chcp"命令,查看当前系统的默认编码格式,例如:
chcp // 输出结果为:当前代码页: 936
在cmd中输入以下命令,将系统的默认编码格式设置为UTF-8:
chcp 65001
九、Java 篇
9.1 String 存储位置
new 出来的 String 存储在堆区:
String a = new String("abc");
直接双引号写的 String 存储在元数据区:
String b = "abc";
两者的地址是不同的:
// 输出 false
System.out.println(a == b);
但 equal 方法是相等的:
// 输出 true
System.out.println(a.equals(b));
调用 intern 方法,可以将堆区的 String 转换为元数据区的引用:
String c = a.intern();
这时,c 和 b 就是指向的同一个地址:
// 输出 true
System.out.println(c == b);
十、开发篇
1. 打印 Log 与开发同样重要
在功能开发完成后,一定要专门抽出时间打印相关日志,日志务必做到详尽,包含正确流程的每一步,错误流程的每一步以及出错的原因,否则上线后如果出现问题,将很难追踪。
十一、Mac 篇
1. Mac 设置环境变量
mac 环境变量加载顺序:
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc
一般设置到 ~/.bash_profile 中。
mac 设置环境变量的命令:
echo 'export 环境变量名=环境变量值' >> ~/.bash_profile && source ~/.bash_profile
例如:
echo 'export ANDROID_HOME=/Users/$USER/Library/Android/sdk' >> ~/.bash_profile && source ~/.bash_profile
这个命令包含两个指令,设置环境变量并使其生效。
查看环境变量:
echo $PATH
十二、Chrome 篇
1. 开启 Chrome 多线程下载
进入Chrome 实验功能的网址 chrome://flags/
搜索 Parallel downloading,将其设置为 enabled,再重启 Chrome 就能生效了。
或者直接输入这个网址:chrome://flags/#enable-parallel-downloading
2. 快速到达页面顶部、底部快捷键
快速到达页面底部:end 键
快速到达页面顶部:home 键
版权声明:本文标题:编程杂记 —— Git、ADB、Android Studio 的疑难杂症汇总 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732055194h1519374.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论