Android 开发中的一些小技巧

727 阅读1分钟
原文链接: caimuhao.com

强制重新下载依赖库

./gradlew --refresh-dependencies

在测试和正式构建中使用不同的包名

android {
      buildTypes {
          debug {
              applicationIdSuffix '.debug'
              versionNameSuffix '-DEBUG'
          }
          release {
              // ...
          }
      }
  }

停止运行 gradle 构建进行

./gradlew -stop

不要在 build.gradle文件中共同包含 jcenter() & mavenCentral()仓库

jcenter中包含MavenCentral

使用 dryrun 直接运行项目

只需要运行 dryrun REMOTE_GIT_URL

使用一个抽象的 Logger 类

https://github.com/imuhao/android-tips-tricks/blob/develop/Logger.java

使用一个代码样式
你应该使用一个标准的代码样式
AOSP Codestyle
Square IntelliJ Codestyle

使用 Android Studio 内置的控制台
Working with Embedded Local Terminal

使用 Android Studoi 中的Memory/Network/CPU Monitor 提升你 App 性能
配置 Android Studio

在 Android Studio 中直接运行一个方法

在build.gradle 中定义一个编译时期的变量

android{
  defaultConfig {
    ...
    buildConfigField "String", "SERVER_ENDPOINT", '"http://www.myendpoint.com"'
    buildConfigField "int", "FOO", "52"
    buildConfigField "boolean", "LOG", "false"
    ...
  }
}
在代码中使用它BuildConfig.SERVER_ENDPOINT,BuildConfig.SERVER_ENDPOINT

基于 git 信息,自动的计算版本名和版本号

在你的app 的 build.gradle

// Version code is calculated as the number of commits from last commit on master
def getVersionCode = { ->
  try {
    def code = new ByteArrayOutputStream()
    exec {
      commandLine 'git', 'rev-list', 'HEAD', '--count'
      standardOutput = code
    }
    return Integer.parseInt(code.toString().trim())
  } catch (exception) {
    return "1";
  }
}
// Version name is Last Tag Name + No. of commits form last Tag +  short git sha
def getVersionName = { ->
  try {
    def stdout = new ByteArrayOutputStream()
    exec {
      commandLine 'git', 'describe', '--tags', '--dirty'
      standardOutput = stdout
    }
    return stdout.toString().trim()
  } catch (exception) {
    return "0.0.0.1";
  }
}
// Use
android{
  defaultConfig {
    ...
    versionCode getVersionCode()
    versionName getVersionName()
    ...
  }
}

在 build.gradle中得到一个构建时间的变量

// Get the date of build
def getDateOfBuild = { -> // ISO 8601 time format
  return new Date().format("yyyy-MM-dd'T'HH:mm'Z'").toString().trim()
}
// then use it as a variable in BuildConfig
android{
  defaultConfig {
    ...
    buildConfigField "String", "DATE_OF_BUILD", "\"${getDateOfBuild()}\""
  }
}

使用Bettert Historian
分析 Android 手机的电池状态

使用 Proguard

学习一些像 MVP 这样的架构或代码简洁

Activity 生命周期