文章目录

  • 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 比较多,散乱的话,可以处理下

androidstudio心得 android studio总结_Android Studio


没有问题,通过设置,可以变的更直观

androidstudio心得 android studio总结_android_02


第一步:右键单击项目的 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,

androidstudio心得 android studio总结_Android_03


就会显示下面的内容,就可以点击到的具体位置进行分析

androidstudio心得 android studio总结_Android Studio_04

关联调试某个运行的APP

考虑两种情况:

  • 机器 上运行的 某个版本或者xxxx 的应用出现了问题,重新 Run 成本太大。
  • 某个 第三方的APP,无法编译项目。

这个时候,只要有代码 就行.

Android Studio 菜单栏->Run->Attach Debugger to Android Process

或者点击工具栏的图标也可以

androidstudio心得 android studio总结_Android_05


选择你需要调试的某个APP,点击 show all processes 可以显示很多正在运行的

androidstudio心得 android studio总结_Android Studio_06


点击后,会显示下面的界面

androidstudio心得 android studio总结_Android_07


在代码打上断点,就可以进行调试了

androidstudio心得 android studio总结_Android Studio_08

签名

系统签名(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,就可以看到使用菜单

androidstudio心得 android studio总结_1024程序员节_09

Material UI Theme

使用教程

androidstudio心得 android studio总结_1024程序员节_10

Rainbow Brackets

确实解决了程序员的痛点,就是 嵌套 或 多个 括号 不好查找定位;

这个插件使用了颜色 将 圆括号,方括号和大括号以颜色标注,清晰明了;

androidstudio心得 android studio总结_androidstudio心得_11

Butterknife Zelezny

Alibaba Java Coding Guidelines

androidstudio心得 android studio总结_Android Studio_12


使用方式,点击 编码规约扫描,就会列出所有不规范的地方

androidstudio心得 android studio总结_1024程序员节_13

androidstudio心得 android studio总结_android_14

androidstudio心得 android studio总结_androidstudio心得_15

Git Commit Template

androidstudio心得 android studio总结_Android_16

5. Settings设置相关

类注释模板

Settings->Editor->File and Code Templates

androidstudio心得 android studio总结_Android Studio_17

/**
 *
 * @Author: hailong.qiu 356752238@qq.com
 * @Maintainer: hailong.qiu 356752238@qq.com
 * @Date: ${DATE}
 * @Copyright: ${YEAR} www.andriodtvdev.com Inc. All rights reserved.
 */

自动导包

androidstudio心得 android studio总结_androidstudio心得_18


有时候需要手动导包,确实很麻烦,自动导包就能很方便的解决此问题.

androidstudio心得 android studio总结_Android_19

Code Style

这里推荐 Square Android Code Style 或者 使用 grandcentrix.xml

androidstudio心得 android studio总结_Android_20


使用 Import Scheme 导入 SquareAndroid.xml,最后选择 Copy to Project…,避免每次重复导入.

当输入变量的时候,没有提示的话可以这么改.

  • 非共有,非静态的成员变量以’m’
  • 开始静态成员变量以’s’开始

    如果感觉Tab与缩进不舒服,可以更改下

    如果函数的排序不是按照临近来的,可以更改下

如果发现代码格式化,变量之间有空格,可以更改

androidstudio心得 android studio总结_androidstudio心得_21


最后需要注意

通过快捷键 Ctrl + Alt + Shift + L 可以打开配置 dialog,勾选以下内容
Optimize imports:优化导入
Rearrange code :重新排列代码

一些异常问题处理

Build Output 乱码问题

打开Android Studio目录下的 studio64.exe.vmoptions,加入这行 -Dfile.encoding=UTF-8