Android 杂记

文章目录

  • 简介
  • 一、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 只显示一行
  • 二、gradle篇
    • 1.将 library 打包成 aar 导入另一个项目
      • 1.1.打包 aar
      • 1.2.将 aar 导入另一个项目
    • 2.配置jks
    • 3.查看 gradle 依赖树
    • 4.添加Java8支持
  • 三、adb篇
    • 1.adb 安装apk
    • 2.adb 卸载app
    • 3.adb 强制安装apk
    • 4.adb远程联调
    • 5.adb 查看已连接的设备
    • 5.Android Studio 模拟器无法上网
    • 6.adb 抓取 log
    • 7.adb 终端输出 log
  • 四、Windows篇
    • 1.环境变量
      • 1.1.设置环境变量
      • 1.1.Path 变量
      • 1.2.其他变量
      • 1.3.过时的CLASSPATH变量
      • 1.4.环境变量设置后不生效
    • 2.命令行
      • 2.1.命令行删除文件夹及其里面的内容
      • 2.2.命令行不删除文件夹,只清空里面的内容
      • 2.3.从命令行打开文件夹
      • 2.4.查看电脑信息
    • 3.Office已阻止访问一下对象,以便保护你的安全
  • 五、Android Studio 篇
    • 1.Android Studio给连接的设备截图
    • 2.Live Templates
    • 3.Logcat 栏的过滤栏不见了
  • 六、Kotlin 篇
    • 1.判断 lateinit 的变量是否已被初始化
  • 七、Android 篇
    • 1. java.net.UnknownServiceException: CLEARTEXT communication to not permitted by network security policy

简介

工作、学习中总会遇到各种各样的问题,本篇文章笔者将亲历的一些问题记录下来,以便日后查阅。由于是给自己看的,所以比较杂乱。如果恰好也能够帮到你,It’s my pleasure.

不定期更新。

一、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 你的邮箱地址

13.git 删除 stash 中的内容

例如,删除第一个:

git stash drop stash@{0} 

删除所有:

git stash clear

14.git 每个 log 只显示一行

git 查看 log 时,为了方便查找以前的 log,可以让每个 log 只显示一行:

git log --oneline

二、gradle篇

1.将 library 打包成 aar 导入另一个项目

1.1.打包 aar

点击 Android Studio 侧边栏 Gradle → 点击需要打包的 library → 点击 Tasks → 点击assembleRelease
Android 杂记_第1张图片
切换到 Project 视图 → 在"对应的library\build\outputs\aar"目录下,可以看到打包出来的 aar 文件
Android 杂记_第2张图片

1.2.将 aar 导入另一个项目

将 aar 文件放入项目的 app\libs 文件夹下
在 app 模块的 build.gradle 中添加:

...

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    ...
    implementation(name: 'aar的文件名称,不带后缀,如library-release', ext: 'aar')
}

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

adb logcat -v threadtime | grep "字符串"

其中的字符串表示筛选包含指定字符串的 log,直接在终端输出。

四、Windows篇

1.环境变量

1.1.设置环境变量

在文件夹的 This PC上点击右键,点击Properties:(由于工作原因,笔者使用的英文版…)
Android 杂记_第3张图片
点击 Change settings → 在弹出的窗口中切换到 Advanced 标签 → 点击Environment Variables → 在 System variables中设置环境变量。
Android 杂记_第4张图片

1.1.Path 变量

Windows 环境变量中 Path 变量的作用:敲命令行时,除了会寻找当前路径下的 exe 程序外,还会去 Path 包含的路径中寻找对应的 exe 程序,(或写作PATH,path,Windows不区分大小写)

1.2.其他变量

点击New...,可以自定义环境变量,引用自定义变量时,语法是%变量名%
Android 杂记_第5张图片
如安装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%,然后回车,按时间排序,最近的文件就是被拦截的文件,点击运行即可。

五、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
Android 杂记_第6张图片
如上图定义的是一个输入ld,生成以下代码:

Log.d("~~~","")

的快捷方式。$变量名$用来定义变量,这里定义了一个data变量,作用是:在代码模板输入后,光标会自动移动到变量的位置。
(6)定义变量值
点击 Edit variables 可以定义变量值,如笔者定义了一个输入 head 便生成头注释的模板:
Android 杂记_第7张图片
并且将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

你可能感兴趣的:(Android基础)