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

现在开始写一个APP时,在前期搭建一个好的框架是能让你在开发中节省很多时间,提升你的开发效率的。所以我准备写一些文章,(AS、框架、UI、代码…..)目的就是让你的项目尽可能变得更易维护,更节省时间,以及避免一些容易犯错的地方…..

AS快捷键、插件

第一篇就介绍下开发工具,基本的配置就不说了!重点介绍下常用插件,配置…..

”工欲善其事,必先利其器“,AS大家应该都很熟了,这里的话我只写些我认为比较好用的一些快捷键和插件。如有更好的欢迎补充交流。

  • 快捷键
功能Windows/LinuxMac说明
打开设置对话框Control+Alt+SCommand+, (comma)
切换tab窗口Control+TabControl+Tab编辑打开的文件,和工具窗口
全局搜索Double ShiftDouble Shift常用
查找Control+FCommand+F文件内查找
全局查找Control+Shift+FCommand+Shift+F全局
查找类/资源Control+Shift+NCommand+Shift+O
查找类/资源方法Control+Shift+Alt+NControl+Shift+Option+O
替换Control+RCommand+R
生成代码Alt+InsertCommand+Nsetter、getter、toString…
编译Control+F9Command+F
编译并运行Shift+F11Control+R
重命名Shift+F6Shift+F6
抽取变量Control+Alt+VCommand + Option + V
查看所有断点Control+Shift+F8Command+Shift+F8
快速索引类到项目Alt+F1
捕获异常Ctrl+Alt+TCmd+Opt+T

- 插件

插件名称说明快捷键
GsonFormat快速实现JavaBeanAlt+Insert
ADB IdeaADB常用命令Control+Shift+A 再输入 adb
android-butterknife-zelezny根据butterknife定制的一款插件Alt+Insert
EventBus导航插件跟踪EventBushttps://github.com/kgmyshin/eventbus-intellij-plugin
FindbugsFindbugs 是一个分析代码中可能有隐患代码的工具
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

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

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值