现在开始写一个APP时,在前期搭建一个好的框架是能让你在开发中节省很多时间,提升你的开发效率的。所以我准备写一些文章,(AS、框架、UI、代码…..)目的就是让你的项目尽可能变得更易维护,更节省时间,以及避免一些容易犯错的地方…..
AS快捷键、插件
第一篇就介绍下开发工具,基本的配置就不说了!重点介绍下常用插件,配置…..
”工欲善其事,必先利其器“,AS大家应该都很熟了,这里的话我只写些我认为比较好用的一些快捷键和插件。如有更好的欢迎补充交流。
- 快捷键
功能 | Windows/Linux | Mac | 说明 | ||
---|---|---|---|---|---|
打开设置对话框 | Control+Alt+S | Command+, (comma) | |||
切换tab窗口 | Control+Tab | Control+Tab | 编辑打开的文件,和工具窗口 | ||
全局搜索 | Double Shift | Double Shift | 常用 | ||
查找 | Control+F | Command+F | 文件内查找 | ||
全局查找 | Control+Shift+F | Command+Shift+F | 全局 | ||
查找类/资源 | Control+Shift+N | Command+Shift+O | |||
查找类/资源方法 | Control+Shift+Alt+N | Control+Shift+Option+O | |||
替换 | Control+R | Command+R | |||
生成代码 | Alt+Insert | Command+N | setter、getter、toString… | ||
编译 | Control+F9 | Command+F | |||
编译并运行 | Shift+F11 | Control+R | |||
重命名 | Shift+F6 | Shift+F6 | |||
抽取变量 | Control+Alt+V | Command + Option + V | |||
查看所有断点 | Control+Shift+F8 | Command+Shift+F8 | |||
快速索引类到项目 | Alt+F1 | ||||
捕获异常 | Ctrl+Alt+T | Cmd+Opt+T |
- 插件
插件名称 | 说明 | 快捷键 | |
---|---|---|---|
GsonFormat | 快速实现JavaBean | Alt+Insert | |
ADB Idea | ADB常用命令 | Control+Shift+A 再输入 adb | |
android-butterknife-zelezny | 根据butterknife定制的一款插件 | Alt+Insert | |
EventBus导航插件 | 跟踪EventBus | https://github.com/kgmyshin/eventbus-intellij-plugin | |
Findbugs | Findbugs 是一个分析代码中可能有隐患代码的工具 | ||
Exyna | 快速生成代码 | https://plugins.jetbrains.com/plugin/8600-exynap |
Gradle配置
Gradle一些常用配置
build.gradle
在build.gradle(project)添加一些编译的版本号,方便同一管理
ext { compileSdkVersion = 25 buildToolsVersion = "25.0.2" minSdkVersion = 17 targetSdkVersion = 25 supportLibraryVersion = "25.2.0" }
compileSdkVersion rootProject.ext.compileSdkVersion
build.gradle(module)
添加第三依赖库的时候,也可以三方库的版本管理
ext { dagger2Version = '2.0' leakcanaryVersion = '1.3' blockcanaryVersion = '1.0.0' metricsVersion = '0.4' }
compile "com.google.dagger:dagger:${dagger2Version}"
签名配置
在gradle.properties添加Key的信息
KEYSTORE_FILE = C:\\Users\\Documents\\Android\\HelloWorld.jks KEYSTORE_PASSWORD = xxxxxx KEY_ALIAS = xxxxxx KEY_PASSWORD = xxxxxx
builde.gradle(module)
apply plugin: 'com.android.application' apply plugin: 'android-apt' android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { applicationId "com.xiahao.geek" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode Integer.parseInt(project.VERSION_CODE) versionName project.VERSION_NAME testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true resConfigs "zh" // 仅支持中文 } signingConfigs { release { Properties p = new Properties() p.load(new FileInputStream(project.file('release.properties'))) keyAlias props['KEY_ALIAS'] keyPassword props['KEY_PASSWORD'] storeFile file(props['KEYSTORE_FILE']) storePassword props['KEYSTORE_PASSWORD'] } debug { storeFile file("debug.keystore") } } buildTypes { release { shrinkResources true signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' buildConfigField "boolean", "LOG_DEBUG", "false" } debug { signingConfig signingConfigs.debug minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' buildConfigField "boolean", "LOG_DEBUG", "true" } } packagingOptions { pickFirst 'META-INF/rxjava.properties' } productFlavors { dev {} // Store360 {} // QQ {} // WanDouJia {} // Flyme {} // Market91 {} // AnZhuo {} // BaiDu {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } } ext { butter_knife_version = "8.4.0" retrofitVersion = "2.0.2" okhttpVersion = "3.2.0" } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile "com.android.support:appcompat-v7:${rootProject.ext.supportVersion}" compile "com.android.support:support-v13:${rootProject.ext.supportVersion}" compile "com.google.dagger:dagger:${dagger2Version}" }
关于gradle的配置这里只是一些常用的,具体还得根据你自己需要配置。
关于用AS常见的一些错误
- 将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法:
在build.gradle里添加以下两句:
aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false
- 将项目导入到AS中出现以下问题
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.bui
在build.grade中添加以下代码
android{ packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' } }
- 未知错误
Error:Timeout waiting to lock cp_proj class cache for build file '/Users/Mr.xiao/Desktop/AndroidShopNC2014MoblieNew/androidShopNC2014Moblie/build.gradle' (/Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj). It is currently in use by another Gradle instance. Owner PID: unknown Our PID: 1412 Owner Operation: unknown Our operation: Initialize cache Lock file: /Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj/cache.properties.lock
以上是错误提示。
解决的思路很简单只需要把cache.properties.lock文件删除了就可以了。当时我们删除的时候会被占用这时候需要进入任务管理器结束关于java的进程就行比如 java 的jdk 删除后重启让java jdk启动 启动Android Studio就能启动APK了。- 修改了Android项目的最小SDK版本之后出现很多stysle文件找不到
compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "net.mmloo2014.android" minSdkVersion 14 targetSdkVersion 23
compileSdkVersion 是多少版本的
那么compile ‘com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。
- finished with non-zero exit value 2
Error:Execution failed for task ':androidShopNC2014Moblie:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
这个错误在app的build.gradle里面添加下面这句就好了。
android { defaultConfig { multiDexEnabled true } }
- finished with non-zero exit value 1(导入依赖重复导致)
Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.[Android](http://lib.csdn.net/base/15).build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\[Java](http://lib.csdn.net/base/17)\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 1
- Error:Execution failed for task
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/http/ConnectionClosedException.class
2个库中存在相同的类,需要删除其中的一个就可以解决了。
- finished with non-zero exit value 1
rror:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
buildToolsVersion版本太高,把buildTools版本降下来就好了
- 导入GitHub项目经常要build.gradle要很久
这个问题我的比较快捷的处理方式就是,修改项目的一些文件,先看下你本地的(我的是下面的版本)
classpath 'com.android.tools.build:gradle:2.2.1'
distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip
复制修改到项目对应的文件中就可以打开了,当然如果有些依赖或者插件那还是要等他下载完的。
- 将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法:
总结
第一部分主要是说了一些关于AS常用的一些快捷键/插件,gradle的配置,以及一些AS错误解决办法,下篇准备介绍下项目开始的实践内容,让你少走弯路。