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 也可查看本地路径。
下载的插件包在什么位置
- Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle
Gradle离线下载配置
离线下载官方地址:https://services.gradle.org/distributions
点击对应项即可下载。
查看项目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
。建议用迅雷下载。找到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版本为名的文件夹及其里面的文件夹,需要先用Android Studio软件打开项目后才能自动生成。内部类似
455itskqi2qtf0v2sja68alqd
这样的文件夹如果有多个,则按照时间,将对应的zip放入其中。重新打开AS项目
gradle版本和插件版本对应关系
Plugin version | Required Gradle version |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.5.0 | 2.2.1 - 2.13 |
2.0.0 - 2.1.2 | 2.10 - 2.13 |
2.1.3 - 2.2.3 | 2.14.1+ |
2.3.0+ | 3.3+ |
3.0.0+ | 4.1+ |
3.1.0+ | 4.4+ |
3.2.0 - 3.2.1 | 4.6+ |
3.3.0 - 3.3.2 | 4.10.1+ |
3.4.0 - 3.4.1 | 5.1.1+ |
3.5.0 - 3.5.4 | 5.4.1+ |
3.6.0 - 3.6.4 | 5.6.4+ |
4.0.0+ | 6.1.1+ |
4.1.0+ | 6.5+ |
4.2.0+ | 6.7.1+ |
gradle命令
查看模块依赖详情
1
./gradlew app:dependencies
查看模块依赖详情(指定configuration)
1
./gradlew app:dependencies --configuration releaseUnitTestRuntimeClasspath
SSH
修改密码
终端进入目录 /Users/(用户名)/.ssh
输入
ssh-keygen -f id\_rsa -p
,-p 选项请求修改私钥的密码
-f{filename} 选项去指定密钥的名称,比如其中的id\_rsa
为指定的私钥文件名原先有密码,则需输入old passphrase,旧密码; 原先没有密码,则直接输入新密码 new passphrase (empty for no passphrase)
Mac app打开问题处理
显示 “安全性与隐私”-“任何来源”
在 macOS Sierra 中,你会发现系统偏好设置的“安全性与隐私”中默认已经去除了允许“任何来源”的选项。 现在通过终端命令方式打开这个选项: 使用 spctl 命令:
1 | sudo spctl --master-disable |
OK!现在在 “安全性与隐私”中会多出“任何来源”这一选项。让我们愉快地使用app吧。
macOS 10.15 Catalina xxx.app已损坏,无法打开,你应该将它移到废纸篓解决方法
更新macOS 10.15 Catalina后,很多在10.14上可以使用的App都会提示提示【xxx已损坏,无法打开,你应该将它移到废纸篓解决办法】,哪怕你在【安全与隐私 》 通用】中已经开启了“任何来源”,但还是会这样提示,其实解决方法很简单。就是绕过macOS的公证。
绕过公证:
在终端中执行如下命令
1 | sudo xattr -rd com.apple.quarantine /Applications/xxxxxx.app |
将其中的 xxxxxx.app
替换为您需要设置的app名称。
比如软件StarUML:
1 | sudo xattr -rd com.apple.quarantine /Applications/StarUML.app |
或者复制以下命令粘贴到终端后
1 | sudo xattr -rd com.apple.quarantine |
打开Finder(访达),点击左侧的 应用程序
,将应用拖进终端中,然后按键盘的回车键(return),输入密码,再按回车键,完成。
注意
quarantine
后面必须有个空格
某个程序绕开公证。 想恢复公正许怎么做
重装应用
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 | can't start git: /usr/bin/git |
解决方案:
在终端输入:
1 | xcode-select --install |
据说原因是因为每次更新系统之后xcode就被卸载了,因此需要重新安装一次。
adb
多设备在线时,指定设备
- 通过adb devices命令获取所有online设备的serial number
1 | ➜ ~ adb devices |
具体需要选择哪个设备,可以通过插拔其中的设备进行辨别。
- 通过
adb -s <serial number> 命令
向设备发送adb命令
比如我需要安装app
1 | ➜ ~ adb -s 11ab03c3 install test.apk |
Git
删除分支(本地、远程)
查看分支,获取分支名称
1
git branch -a
删除本地分支
1
git branch -d <BranchName>
删除远程分支
1
git push origin --delete <BranchName>
修改分支名称
Sourcetree操作:(实例:将br_test_rename
改为br_test_rename_new
)
- 修改本地分支名称(BRANCHES目录下的是本地分支,下面提到的
REMOTES
是远程分支)
选中需要修改的分支br_test_rename
;
右键,点击Rename
,在弹出的对话框内输入新的分支名称br_test_rename_new
,点击 OK 按钮确认修改。 - 推送新名称分支到远程仓库
点击push
按钮;
在弹出的对话框内购选中br_test_rename_new
前的选择框;
点击OK按钮进行推送;
推送成功后,可以在REMOTES
目录下看到br_test_rename_new
的新分支 - 删除远程
br_test_rename
名称的旧分支
REMOTES
目录下找到br_test_rename
名称的分支;
右键,点击Delete…
;
在弹出的确认对话框内点击 OK 按钮进行删除; - 整个修改过程就完成了。
主要流程归纳为:- 修改本地名称
- 推送
- 删除远程旧分支
回退
本地仓库回退到指定版本
1
git rest --hard <commit id | HEAD^> //HEAD^表示上一个版本,HEAD^^ 表示上上个版本
暂存区回退到工作区
1
git reset HEAD <file>...
丢弃工作区修改(回到最新一次add或commit的状态)
1
git checkout -- <file>...
ssh与https相互切换
从ssh切换到https
格式:git remote set-url 远程仓库名称(当只有一个远程仓库时可省略) https地址
git remote set-url origin https://github.com/nhtzj/Java.git
从ssh切换到https
格式:git remote set-url 远程仓库名称(当只有一个远程仓库时可省略) ssh地址
git remote set-url origin git@github.com:nhtzj/Java.git
其他
添加远程仓库地址
1
git remote add origin git@gitee.com:goldsea/gitlearn.git
格式:git remote add + 自定义仓库命名 + 仓库ssh地址
第一次推送本地仓库内容到远程仓库
1
git push -u origin master
-u 参数的添加可以让本地仓库和远程仓库进行绑定
查看本地ssh key
1
cat ~/.ssh/id_rsa.pub
修改最近一次提交的提交信息(commit 未push)
1
git commit --amend
在文本编辑器内编辑提交信息,再保存
查看分支操作记录(带时间)
1
git reflog show --date=iso <branch name>
Iterm2
快捷键
分屏
- 垂直分屏:command + d
- 水平分屏:command + shift + d
- 切换屏幕:command + option + 方向键 或者 command + [ ]
命令
- 查看历史命令:command + ;
- 查看剪贴板历史:command + shift + h
- 上一条命令:ctrl + p
- 搜索命令历史:ctrl + r
- 删除错误的密码:ctrl + u
行内
- 清除当前行:ctrl + u
- 到行首:ctrl + a
- 到行尾:ctrl + e
- 删除当前光标的字符:ctrl + d
- 删除光标之前的字符:ctrl + h
- 删除光标之前的单词:ctrl + w
- 删除到文本末尾:ctrl + k
交换光标处文本:ctrl + t
其他
清屏:command + k
Vim 命令
多行注释
- 进入命令行模式,按ctrl + v(windows ctrl + q)进入 visual block模式
- 按上键( 或者下键)选中多行,把需要注释的行标记起来
- 按大写“I”键(Shift+i)进入插入模式,输入“#”(或者 “//”),然后按下“ESC”键(一下或两下)
取消多行注释
- 进入命令行模式,按ctrl + v进入 visual block模式
- 选中要删除的行首的注释符号,注意”//“ 要选中两个
- 按”d”即可删除注释
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
+]切换窗口:
command
+`返回上一浏览位置 (具体可在keymap内搜索back或forward查看)
返回上一次浏览位置back:option
+command
+ ← 或command
+ [
返回下一次浏览位置forward:option
+command
+ →或command
+ ]浮窗显示调用变量/方法定义:command + Y
高亮 - 查看某个变量在那个地方调用了:Cmd + Shift + Fn + F7
查看类的层次结构 :Control + H
自动生成变量:Cmd + Alt + V (Alt即option)
自动提取参数:Cmd + Alt + P
参数提示:Cmd + P
快速跳转到父类:Cmd + U
快速跳转到实现:Cmd + Option + B
国际化,检查代码内的中文字符
利用AS中的全局搜索+正则表达式,搜索。
正则表达式:
1 | ^((?!(*|//)).)+[\u4e00-\u9fa5] |
打开全局搜索,位于
Edit -> Find - > Fild in Path
在输入框内输入正则表达式:
^((?!(*|//)).)+[\u4e00-\u9fa5]
钩上
Regex
,也可钩上File mask
,用于查找指定文件后缀的文件In Project
、Module
、Directory
、Scope
用于指定查询路径点击
Open in Find Window
,在Find标签内一直保存。因为Fild in Path
窗口在你点击其他地方后就会消失。
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!大功告成!
AS直接安装apk提示:安装包有异常,无法安装
Android Studio 3.0会在debug apk的manifest文件application标签里自动添加 android:testOnly="true"
属性,导致IDE中run跑出的apk在大部分手机上只能用adb install -t
来安装,在oppo手机上甚至安装不了
解决方式
在主工程 /gradle.properties
内加入如下:
1 | # gradle.properties |
AS禁用原因:大致就是安全性问题
Android Studio 3.0 and FLAG_TEST_ONLY
参考
Disable ‘testOnly’ mode for Android Studio 3.0
More than one file was found with OS independent path ‘META-INF/proguard/androidx-annotations.pro’
处理方式
在 app/build.gradle
内加入如下:
1 | android { |
在
android节点内添加
packagingOptions`的内容
参考
More than one file was found with OS independent path ‘META-INF/proguard/androidx-annotations.pro’
Invoke-customs are only supported starting with Android O (–min-api 26)
处理方式
在 app/build.gradle
内加入如下:
1 | android { |
在`android节点内添加compileOptions的内容
参考
Invoke-customs are only supported starting with android 0 –min-api 26
Mac 快捷键
- 全屏/退出全屏:
control
+command
+F - Finder(访达)显示/隐藏 隐藏的文件或文件夹: shift + command + .
绘制圆图
- drawCircle() + BitmapShader
- Paint.setXfermode()
subLime
设置不换行
Preferences-->Settings-User
添加
"word_wrap" : false,
log日志过滤
- 「command + F」后在底部输入需要过滤的关键字
- 选择「Find All」
- 「command + L」或「菜单栏Selection -> Expand Selection to Line」:将选中项扩展为关键字所在行
- 「command + C」:复制
- 新建文档后在新文档内「command + V」复制到新文本
权限
修改文件或文件夹拥有者
使用权限 : root
语法
1 | chown [-fhv] [-R [-H | -L | -P]] owner[:group] file ... |
参数 :
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
- -c : 显示更改的部分的信息
- -f : 忽略错误信息
- -h :修复符号链接
- -v : 显示详细的处理信息
- -R : 处理指定目录以及其子目录下的所有文件
- –help : 显示辅助说明
- –version : 显示版本
事例:
1 | sudo chown -R $(whoami) ~/.ssh |
修改 ~/.ssh目录及目录下的所有文件拥有者为 $(whoami)
,
$(whoami)
: 表示当前登录的用户
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()
之后)才创建对话框。