Android Studio 使用笔记

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相关

名称 备注
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 [email protected]
 * @Maintainer: hailong.qiu [email protected]
 * @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 :重新排列代码

猜你喜欢

转载自blog.csdn.net/qw85525006/article/details/107892319
今日推荐