概述
文章目录
- 1. 项目相关
- 包名分类
- 注释
- Checkstyle
- 版本控制
- res/layouts 分包
- 解决导入 jar 与 aar 的冲突问题
- 2. 编译,运行和调试,性能
- 分析崩溃的堆栈信息
- 关联调试某个运行的APP
- 签名
- 优化加速
- 性能检测相关
- 3. grlade相关
- 4. 插件—效率提升
- ADB Idea
- Material UI Theme
- Rainbow Brackets
- Butterknife Zelezny
- Alibaba Java Coding Guidelines
- Git Commit Template
- 5. Settings设置相关
- 类注释模板
- 自动导包
- Code Style
- 一些异常问题处理
- Build Output 乱码问题
1. 项目相关
保持开发人员IDE版本一致
IDE统一编码格式为UTF-8
包名分类
名称 | 备注 |
---|---|
activity | 我们按照模块继续拆分,将不同模块的 Activity 划分到不同的包下。 比如 LoginActivity 等等; |
fragment | 和activity差不多 |
adapter | 所有适配器都放在一起。 |
entity | 将所有的实体都放在一起。 有相应的setter和getter方法。entity(实体类)的作用一般是和数据表做映射,JSON数据类.Entity 也是这个样子,Entity 中应该只有属性,否则就不叫Entity。只是当 Entity 有上百 个时,就需要考虑按照模块划分。 |
db | SQLLite 相关逻辑的封装。 |
engine | 将业务相关的类都放在一起。 |
ui | 将自定义控件都放在这个包中。 |
utils | 将所有的公用方法都放在这里。 |
interfaces | 真正意义上的接口,命名以 I 作为开头。 |
listener | 基于 Listener 的接口,命名以 On 作为开头。 |
extensions | 扩展函数 |
注释
TODO 需要实现,目前未实现的
FIXME 功能代码有问题,需要修复说明的
Checkstyle
版本控制
res/layouts 分包
当 res/layout 的 xml 比较多,散乱的话,可以处理下
没有问题,通过设置,可以变的更直观
第一步:右键单击项目的 res,选择 New -> Directory,命名为 layouts,避免重复.
第二步:选择 layouts 目录,右键单击选择 New -> Folder -> Res Folder,比如命名为 home, chat… .
第三步:添加 layout 布局目录(就像Android的 res/layout)
最后一步:修改 Gradle 脚本,app/build.gradle
sourceSets {
main {
res.srcDirs = ['src/main/res',
'src/main/res/layouts/chat',
'src/main/res/layouts/home',
'src/main/res/layouts/profile'
]
}
}
解决导入 jar 与 aar 的冲突问题
2. 编译,运行和调试,性能
分析崩溃的堆栈信息
将崩溃信息复制,点击Analyze菜单,选择 Analyze Stack Trace,
就会显示下面的内容,就可以点击到的具体位置进行分析
关联调试某个运行的APP
考虑两种情况:
- 机器 上运行的 某个版本或者xxxx 的应用出现了问题,重新 Run 成本太大。
- 某个 第三方的APP,无法编译项目。
这个时候,只要有代码 就行.
Android Studio 菜单栏->Run->Attach Debugger to Android Process
或者点击工具栏的图标也可以
选择你需要调试的某个APP,点击 show all processes 可以显示很多正在运行的
点击后,会显示下面的界面
在代码打上断点,就可以进行调试了
签名
系统签名(platform.x509.pem 与 platform.pk8),如何导出到Android Studio 签名APK;
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name android
keytool -importkeystore -deststorepass 123456 -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 123456
debug {
storeFile file("../platform.jks")
storePassword "123456"
keyAlias "android"
keyPassword "123456"
}
优化加速
# 提升 JVM 的堆内存
org.gradle.jvmargs=-Xmx1536m
# 配置 可用内存
性能检测相关
3. grlade相关
grlade下载地址
名称 | 备注 |
---|---|
API | 类似于 compile,编译时依赖和运行时依赖,支持依赖传递 |
Implementation | 不支持依赖传递,底层Module无法访问上层Module依赖的库 |
CompileOnly | 类似于provided,仅仅在编译时进行依赖,不会将依赖打包到APP中 |
RuntimeOnly | 类似于APK,它仅仅将依赖打包到APK中,但在编译时无法获得依赖的类 |
AnnotationProcessor | 类似于apt,是注解处理器的依赖 |
Test Implementation | Java测试库的依赖,仅仅在测试环境中生效 |
AndroidTestImplementation | Android 测试库依赖,仅仅在测试环境中生效 |
[Flavor]+Api | 仅对某个Flavor的依赖,写法是:Flavor+名称+依赖的方式 |
// api和compile关键字作用效果是一样的,在高版本的gradle,使用compile关键字会报错并提示使用api关键字代替
api 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:appcompat-v7:26.1.0'
api ('com.android.support:appcompat-v7:26.1.0') {
transitive = true; // true 支持传递依赖, false关闭传递依赖
}
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support' // 删除 group 指定的module
}
// 同一个模块下,使用效果一样的.
// 不同模块会有区别,比如 App 的 moduleA 使用下面的配置,app 引用 moduleA 后,
// implementation关键字的appcompat-v7包无法在app module中使用
// 使用compile关键字的design包则可以使用
implementation 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
// compileOnly经常用于解决依赖冲突等问题,一般第三方库中,比较常用的依赖,如support、gson、Eventbus等等
compileOnly 'com.android.support:cardview-v7:26+'
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
// 测试库
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
组合依赖:相关库成为了一组,删除,添加都很方便
implementation([
'io.reactivex.rxjava2:rxjava:2.0.1',
'io.reactivex.rxjava2:rxandroid:2.0.1'
])
依赖管理:项目的库越多,变得难以管理,统一进行管理
// 根目录建议一个文件 xxx.gradle
ext {
android = [
compileSdkVersion = 28
buildToolsVersion = "28.0.3"
minSdkVersion = 21
targetSdkVersion = 28
]
dependencies = [
"appcompat":"com.android.support:appcompat-v7:26.1.0"
]
}
// 引用的 build.gradle 中加入 xxx.gradle
apply from:"xxx.gradle"
// 引用
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
}
}
dependencies {
implementation rootProject.ext.dependencies["appcompat"]
}
4. 插件—效率提升
插件名称 | 备注 |
---|---|
ADB Idea | ADB工具 |
Material UI Theme | 主题颜色 |
Rainbow Brackets | 圆括号,方括号和大括号 颜色 |
Butterknife Zelezny | Butterknife 快捷导入 |
Alibaba Java Coding Guidelines | 阿里巴巴Java开发规约 |
Git Commit Template | git commit 提交模板 插件 |
ADB Idea
ADB Idea提供了单击快捷方式命令,用于启动,卸载,终止应用程序,撤消权限以及清除应用程序数据。
Android 4.0以上为例,Tools->ADB Idea
,就可以看到使用菜单
Material UI Theme
使用教程
Rainbow Brackets
确实解决了程序员的痛点,就是 嵌套 或 多个 括号 不好查找定位;
这个插件使用了颜色 将 圆括号,方括号和大括号以颜色标注,清晰明了;
Butterknife Zelezny
Alibaba Java Coding Guidelines
使用方式,点击 编码规约扫描
,就会列出所有不规范的地方
Git Commit Template
5. Settings设置相关
类注释模板
Settings->Editor->File and Code Templates
/**
*
* @Author: hailong.qiu 356752238@qq.com
* @Maintainer: hailong.qiu 356752238@qq.com
* @Date: ${DATE}
* @Copyright: ${YEAR} www.andriodtvdev.com Inc. All rights reserved.
*/
自动导包
有时候需要手动导包,确实很麻烦,自动导包就能很方便的解决此问题.
Code Style
这里推荐 Square Android Code Style
或者 使用 grandcentrix.xml
使用 Import Scheme 导入 SquareAndroid.xml,最后选择 Copy to Project…,避免每次重复导入.
当输入变量的时候,没有提示的话可以这么改.
- 非共有,非静态的成员变量以’m’
- 开始静态成员变量以’s’开始
如果感觉Tab与缩进不舒服,可以更改下
如果函数的排序不是按照临近来的,可以更改下
如果发现代码格式化,变量之间有空格,可以更改
最后需要注意
通过快捷键 Ctrl + Alt + Shift + L 可以打开配置 dialog,勾选以下内容
Optimize imports:优化导入
Rearrange code :重新排列代码
一些异常问题处理
Build Output 乱码问题
打开Android Studio目录下的 studio64.exe.vmoptions,加入这行 -Dfile.encoding=UTF-8
最后
以上就是怕黑雪糕为你收集整理的Android Studio 使用笔记1. 项目相关2. 编译,运行和调试,性能3. grlade相关4. 插件—效率提升5. Settings设置相关一些异常问题处理的全部内容,希望文章能够帮你解决Android Studio 使用笔记1. 项目相关2. 编译,运行和调试,性能3. grlade相关4. 插件—效率提升5. Settings设置相关一些异常问题处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复