Android开发中,让你事半功倍的整理归档(一)

来源:互联网 发布:mysql gt lt 大于小于 编辑:程序博客网 时间:2024/06/14 06:01

现在开始写一个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.jksKEYSTORE_PASSWORD = xxxxxxKEY_ALIAS = xxxxxxKEY_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: unknownOur PID: 1412Owner Operation: unknownOur operation: Initialize cacheLock 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 23buildToolsVersion "23.0.3"defaultConfig {applicationId "net.mmloo2014.android"minSdkVersion 14targetSdkVersion 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

    复制修改到项目对应的文件中就可以打开了,当然如果有些依赖或者插件那还是要等他下载完的。

总结

第一部分主要是说了一些关于AS常用的一些快捷键/插件,gradle的配置,以及一些AS错误解决办法,下篇准备介绍下项目开始的实践内容,让你少走弯路。

0 0
原创粉丝点击