【安卓】Android开发技巧

    1. KeyPromoter

      快捷键提示插件 -- 试用了一下,就是你点击的时候有些按钮会出来提示框告诉你这个的快捷键是什么以及你使用的次数,还不错,目的就是让你进行键盘流操作。

    2. String Manipulation

      提供 Action 转换大小写什么的,感觉想不起来用。

    3. Lines Sorter

      Add Sort Lines action in Edit menu to sort selected lines or whole file if selection is empty.

    4. Findbugs

      静态代码审查工具

    5. Sonar Lint

      也是个代码审查工具,检查可能出现的bug

    6. Checkstyles

      代码风格管理的插件

    7. ADB Idea

      增加了例如卸载,重启App的功能

    8. Exynap

      这个玩意挺NB的输入个大概就能帮你写代码。其中的bind view 挺好用的。

    9. Dagger IntelliJ Plugin

      Dagger的可视化辅助工具

    10. JVM Debugger Memory View

      可以调试JVM的一些细节,讲真我用的不多

  • 在 Android Studio 中使用 Live Templateso

    • newInstance - 在Fragment中生成 newInstance 方法
    • Toast - 生成 Toast.makeText(context, "", Toast.LENGTH_SHORT).show();
    • fbc - 生成 findViewById
    • const - 定义一个 android style int 常量
    • logd - 生成 Log.d(TAG, "");
    • logm - Log 当前方法名称和参数
    • logr - Log 当前方法结果
    • logt - 当前类生成 log tag
    • psf - public static final
    • sout - 打印一个字符串到 System.out
    • soutm - 打印当前类名和方法到 System.out
    • soutp - 打印方法参数和返回值到 System.out
    • visible - 设置 view VISIBLE
    • gone - 设置 view GONE
    • noInstance - private 构造方法

    Comprehensive list of all Live Templates in Android Studio 这个库有很多的自定义模版

  • Android Studio 的自动完成

    Android Studio/IntelliJ 可以帮你自动完成一些代码

    • <expr>.null 转换成 if(<expr> == null)
    • <expr>.nootnull 转换成 if(<expr> != null)
    • <expr>.var 转换成 T name = <expr>
    • <expr>.field 会自动生成一个全局变量 field = <expr>
    • <ArrayExpr>.for 转换成 for(T item : <Arrayexpr>)
    • <ArrayExpr>.fori 转换成 for(int i = 0; i < <Arrayexpr>.length; i++)
    • <ArrayExpr>.forr 转换成 for(int i = <Arrayexpr>.length - 1; i > 0 ; i--)

    完整的转换列表参见 Settings → Editor → Postfix Templates

  • 使用黑色主题

    虽然是个人爱好,反正我觉得使用白色主题好瞎眼啊

  • 别使用小字体

    给你的 Android Studio 选择一个合适的字体,作者推荐使用Menlo font 反正我觉得mac的字体就挺好的,在linux上开发已经觉得不顺眼了.

  • 使用一个 code style

    你应该使用一个标准的编码风格,它可以是:

    表示在编码风格这一块自己确实有待规范^^

  • 使用 Embedded Terminal inside Android Studio

  • 使用 Memory/Network/CPU Monitor 检测你的 code/app

  • 配置 Android Studio

    这个可以看下,文章提到的我是早就配置过了

模拟器

Vysor

简单说就是显示你连上的真机,也就在你做演示的时候有些用处,而且我一连上手机就自己跳出来,各位自己使用评价吧!

DeskDock

不但能展示还可以控制你的Android设备.免费版本 可以使用电脑鼠标, 收费版本 可以使用电脑键盘. 你可以手不离开键盘进行测试.

-

编码时候的更优选择

  • 使用 OkHttp 替代 HttpUrlConnect

    HttpUrlConnect 有一些bug quite some bugsOkhttp 优雅的解决了他们. [Reference Link]

  • 按照如下方式使用本地 aar [Stackoverflow Ref]

          dependencies {
             compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
           }
          repositories{
                flatDir{
                        dirs 'libs'
                 }
           }
    
  • 使用 Pidcat 获得更好的阅读体验

    这个不错,不过我没找到一个命令参数表,就只关注我想要关注的 log

  • 使用版本控制系统(VCS) 例如 Git

  • 使用 ClassyShark

    可以分析Android Apk很不错

  • 使用 Stetho

    Facebook 出品,非常不错的工具,可以在 Chrome 中看到网络请求,调试数据库和SharePreference,和 Okhttp搭配使用更好,我配合urlconnection使用不生效,原因不明。

  • 使用 Battery Historian

    使用"bugreport"分析耗电

  • 总是使用固定的版本号 例如 "24.2.0"

    版本依赖时候避免使用 +

    • 防止api变更.
    • 编译的时候不会请求网络检查版本.
  • 使用 Handler 替代 TimerTask

    这篇文章可以看一下,作者说在一些设备上 Timer 不工作但是原因不明,作者说的使用 Handler 替代 Timer 确实是对的,我们商店有一段时间anr很多,后来发现和Timer相关。

  • Google Play 的开发者账户不要使用你的个人邮箱

  • 使用 Vectors 替代 PNG

    如果你 确实 要用png, 可以使用 TinyPNG 压缩.

  • 使用 proguard

        android {
          ...
          buildTypes {
              release {
                  minifyEnabled true
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
          }
      }
  • 使用 shrinkResources

        android {
          ...
          buildTypes {
              release {
                  shrinkResources true
                  minifyEnabled true
                  ...
              }
          }
        }

    shrinkResources 是把你没用到的文件用一个很小的文件替换,我觉得要是你发现了那个文件确实没啥用,你还是删除了吧。

  • 模拟 app 在后台被杀死, 在终端运行

    adb shell am kill

  • 参考 降低 gradel 内存又加快构建

    译文见降低 gradel 内存又加快构建

        Gradle memory >= Dex memory + 1Gb
  • 使用 ndk 的时候注意自己分割 abi

        defaultConfig {
            ...
    
            ndk {
              abiFilters "armeabi", "armeabi-v7a", "mips", "x86"
            }
          }
    
        //Split into platform dependent APK
          splits {
            abi {
              enable true
              reset()
              include 'armeabi', 'armeabi-v7a', 'mips', 'x86' //select ABIs to build APKs for
              universalApk false //generate an additional APK that contains all the ABIs
            }
          }
    
          // map for the version code
          project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'mips': 5, 'x86': 8]
    
          // Rename with proper versioning
          android.applicationVariants.all { variant ->
            // assign different version code for each output
            variant.outputs.each { output ->
              output.versionCodeOverride =
                  project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) *
                      1000000 +
                      android.defaultConfig.versionCode
            }
          }
  • 学习一些架构例如 MVP 或者 Clean架构

  • 尝试理解 TDD (测试驱动开发)

  • 强制重新下载 dependencies

        ./gradlew --refresh-dependencies
  • gradle 中跳过某个task

    下面的例子是跳过 javaDoc 这个任务

      ./gradlew clean build -x javaDoc
  • 为每个子项目的脚本配置同名 gradle 构建文件

    settings.gradle 中设置

      rootProject.children.each{
        it.buildFileName = it.name + '.gradle'
      }

    更多的Gradle技巧

  • 记住 DRY

    DRY = Do not Repeat Yourself

  • 按照功能分包

    一开始我们也是按照层去分包的,很坑爹。按照功能分可能你不是很好区分在哪个功能中,不过也比你按照层区分要好找很多。

  • 学习依赖原理

    有利于你学习解决一些依赖冲突. 官方参考

  • 给你没发布的版本使用不同包名

          android {
              buildTypes {
                  debug {
                      applicationIdSuffix '.debug'
                      versionNameSuffix '-DEBUG'
                  }
    
                  release {
                      // ...
                  }
              }
          }
  • 找出并解决你的内存泄露

  • 小心使用 @android:color/transparent

  • 遵循标准的资源命名

  • build.gradle 中使用自定义任务

    Android使用Gradle构建,这实际上可以很容易做些自动化的东西。实用的 Gradle 脚本

  • 给你的Android项目使用合适的 .gitignore, Check it here

  • 使用 LeakCanary 分析你的app

  • 使用 Android Studio 2.3 加速 gradle 构建+

    • 切换到 gradle 3.3

      执行下面的代码升级你的 gradle wrapper

      ./gradlew wrapper --gradle-version 3.3 --distribution-type all
    • 全局 gradle.properties 如下设置

      android.enableBuildCache=true
      

    这个命令我测试了,不好使啊!直接改wrapper里面引用就行。

  • 停止 gradle 构建进程

转载自:https://blog.csdn.net/u013749540/article/details/62222587

猜你喜欢

转载自blog.csdn.net/qq_25955641/article/details/89790649