备忘录

Gradle

下载的依赖包在什么位置?

  • Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1
  • Windows系统默认下载到:C:\Users(用户名).gradle\caches\modules-2\files-2.1

也可在 External Libraries下找到需要查看的依赖包,
以oss为例,在Gradle:com.aliyun.dpa:oss-android-sdk:2.8.0 上右键->Libraries Properties 也可查看本地路径。 查看依赖包本地位置操作 查看依赖包本地位置

Gradle离线下载配置

离线下载官方地址:https://services.gradle.org/distributions

点击对应项即可下载。

  1. 查看项目gradle版本

    打开项目的根目录下的 /gradle/wrapper/gradle-wrapper.properties,我的配置如下:

    1
    2
    3
    4
    5
    6
    #Tue Mar 12 16:38:29 CST 2019
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

    使用的gradle版本为4.10.1,离线下载可以直接点击https://services.gradle.org/distributions,找到对应项 gradle-4.10.1-all.zip,或者在 https://services.gradle.org/distributions/后接上 gradle-4.10.1-all.zip即可下载。比如 https://services.gradle.org/distributions/gradle-4.10.1-all.zip。建议用迅雷下载。

  2. 找到gradle存放位置,将下载的gradle离线包放入对应文件夹内。

    Mac路径:/User/用户名/.gradle/wrapper/dists/dists文件夹下是以gradle版本为名称的文件夹。以小编4.10.1为例,打开 gradle-4.10.1-all文件夹,找到类似 455itskqi2qtf0v2sja68alqd这样的文件夹,直接将之前下载的zip包放入即可。

    下图中gradle-4.10.1-all.zip文件上方的三个为AS打开项目后自动解压生成的。

    gradle_list

    注:以gradle版本为名的文件夹及其里面的文件夹,需要先用Android Studio软件打开项目后才能自动生成。内部类似 455itskqi2qtf0v2sja68alqd这样的文件夹如果有多个,则按照时间,将对应的zip放入其中。

  3. 重新打开AS项目

Fetch failed: Could not read from remote repository

今天兴致勃勃地将Mac上地Android Studio 3.0升级到了3.1。但是用AS自带地图形化按钮提交和更新代码时(使用Git),却一直提示 “Fetch failed: Could not read from remote repository”。这可真是郁闷啊。Add、Commit都可以,就时Push不行。Add、Commit是对本地仓库地操作。用终端命令push又是可以的,所以该问题可以断定是3.1地AS将git的某个或某些配置改掉了。 解决途径: AS下进入: Settings -> Version Control -> Git -> SSH Executable 如果SSH Executable选择的是Built-in,将它改为Native。 OK!大功告成!

SSH

修改密码

  1. 终端进入目录 /Users/(用户名)/.ssh

  2. 输入 ssh-keygen -f id\_rsa -p

    -p 选项请求修改私钥的密码
    -f{filename} 选项去指定密钥的名称,比如其中的 id\_rsa 为指定的私钥文件名

  3. 原先有密码,则需输入old passphrase,旧密码; 原先没有密码,则直接输入新密码 new passphrase (empty for no passphrase)

Mac “安全性与隐私”-“任何来源”

在 macOS Sierra 中,你会发现系统偏好设置的“安全性与隐私”中默认已经去除了允许“任何来源”的选项。 现在通过终端命令方式打开这个选项: 使用 spctl 命令:

1
sudo spctl --master-disable

OK!现在在 “安全性与隐私”中会多出“任何来源”这一选项。让我们愉快地使用app吧。

Mac下用Charles实现Android http和https抓包

Mac下用Charles实现Android http和https抓包

Mac更新系统后无法使用git

更新了系统后,进入到git工程目录,输入git命令,提示错误:

1
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

进入Android Studio后提示:

1
2
can't start git: /usr/bin/git 
probably the path to git executable is not valid . `fix it`.

解决方案:

在终端输入:

1
xcode-select --install

据说原因是因为每次更新系统之后xcode就被卸载了,因此需要重新安装一次。

adb

多设备在线时,指定设备

  1. 通过adb devices命令获取所有online设备的serial number
1
2
3
4
➜  ~ adb devices
List of devices attached
11ab03c3 device
emulator-5554 device

具体需要选择哪个设备,可以通过插拔其中的设备进行辨别。

  1. 通过adb -s <serial number> 命令向设备发送adb命令

比如我需要安装app

1
➜  ~ adb -s 11ab03c3 install test.apk

Git

删除分支(本地、远程)

  1. 查看分支,获取分支名称

    1
    git branch -a
  2. 删除本地分支

    1
    git branch -d <BranchName>
  3. 删除远程分支

    1
    git push origin --delete <BranchName>
  4. 本地仓库回退到指定版本

    1
    git rest --hard <commit id | HEAD^> //HEAD^表示上一个版本,HEAD^^ 表示上上个版本
  5. 暂存区会退到工作区

    1
    git reset HEAD <file>...
  6. 丢弃工作区修改(回到最新一次add或commit的状态)

    1
    git checkout -- <file>...
  7. 添加远程仓库地址

    1
    git remote add origin git@gitee.com:goldsea/gitlearn.git

    格式:git remote add + 自定义仓库命名 + 仓库ssh地址

  8. 第一次推送本地仓库内容到远程仓库

    1
    git push -u origin master

    -u 参数的添加可以让本地仓库和远程仓库进行绑定

  9. 查看本地ssh key

    1
    cat ~/.ssh/id_rsa.pub
  10. 修改最近一次提交的提交信息(commit 未push)

    1
    git commit --amend

    在文本编辑器内编辑提交信息,再保存

  11. 查看分支操作记录(带时间)

    1
    git reflog show --date=iso <branch name>

Iterm2

快捷键

Mac终端Iterm2快捷键大全

分屏

  • 垂直分屏:command + d
  • 水平分屏:command + shift + d
  • 切换屏幕:command + option + 方向键 或者 command + [ ]

命令

  • 查看历史命令:command + ;
  • 查看剪贴板历史:command + shift + h
  • 上一条命令:ctrl + p
  • 搜索命令历史:ctrl + r

行内

  • 清除当前行:ctrl + u
  • 到行首:ctrl + a
  • 到行尾:ctrl + e
  • 删除当前光标的字符:ctrl + d
  • 删除光标之前的字符:ctrl + h
  • 删除光标之前的单词:ctrl + w
  • 删除到文本末尾:ctrl + k
  • 交换光标处文本:ctrl + t

    其他

  • 清屏:command + k

Vim 命令

多行注释

  1. 进入命令行模式,按ctrl + v(windows ctrl + q)进入 visual block模式
  2. 按上键( 或者下键)选中多行,把需要注释的行标记起来
  3. 按大写“I”键(Shift+i)进入插入模式,输入“#”(或者 “//”),然后按下“ESC”键(一下或两下)

取消多行注释

  1. 进入命令行模式,按ctrl + v进入 visual block模式
  2. 选中要删除的行首的注释符号,注意”//“ 要选中两个
  3. 按”d”即可删除注释

gradle命令

  1. 查看模块依赖详情

    1
    ./gradlew app:dependencies
  2. 查看模块依赖详情(指定configuration)

    1
    ./gradlew app:dependencies --configuration releaseUnitTestRuntimeClasspath

Android Studio

快捷键

  • 类结构(方法和成员变量):command +fn + F12 、菜单Navigate -> File Structure

  • 优化导包:control+option+o

  • 显示注释:control+J (在settings对话框的搜索框中,输入“quick doc”进行搜索)

  • 导出为成员变量:option+command+F (在Refactor -> Extract 内也有)

  • 切换tab: (需要切换英文输入法,光标在编辑器内,在Window -> Edit Tabs 内也能看到)
    上一页 shift+command+[

    下一页 shift+command+]

  • 返回上一浏览位置 (具体可在keymap内搜索back或forward查看)
    返回上一次浏览位置back: option+command+ ← 或 command+ [
    返回下一次浏览位置forward: option+command+ →或 command+ ]

国际化,检查代码内的中文字符

利用AS中的全局搜索+正则表达式,搜索。

正则表达式:

1
^((?!(*|//)).)+[\u4e00-\u9fa5]
  • 打开全局搜索,位于 Edit -> Find - > Fild in Path

  • 在输入框内输入正则表达式:^((?!(*|//)).)+[\u4e00-\u9fa5]

  • 钩上 Regex,也可钩上 File mask,用于查找指定文件后缀的文件

  • In ProjectModuleDirectoryScope用于指定查询路径

  • 点击 Open in Find Window,在Find标签内一直保存。因为 Fild in Path窗口在你点击其他地方后就会消失。

as_find_in_path

Mac 快捷键

  • 全屏/退出全屏:control+command+F

绘制圆图

  • drawCircle() + BitmapShader
  • Paint.setXfermode()

subLime

  • 设置不换行

    Preferences-->Settings-User

    添加 "word_wrap" : false,

Android 开发注意事项

不能在 Activity 没有完全显示时显示 PopupWindow 和 Dialog

说明:

Android Activity 创建时的生命周期,按照 onCreate() -> onStart() -> onResume() -> onAttachedToWindow() -> onWindowFocusChanged() 的 顺 序 , 其 中 在Activity#onAttachedToWindow() 时,Activity 会与它的 Window 关联,这时 UI 才 会开始绘制,在 Activity#onWindowFocusChanged() 时,UI 才变成可交互状态,可以提示用户使用。如果在 Window 未关联时就创建对话框,UI 可能显示异常。 推荐的做法是在 Activity#onAttachedToWindow() 之后(其实最好是Activity#onWindowFocusChanged() 之后)才创建对话框。

坚持原创技术分享,您的支持是对我最大的鼓励!