浅谈Android开发中项目的文件结构及规范化部署建议

2019-12-10 18:50:53于海丽

-编译不同的flavours 或应用的 variants
-创建简单的 类-脚本 任务
-管理和下载依赖
-自定义keystores
-等等
Android的Gradle插件同样被Google指定为新的标准编译系统,而且Google不断为其升级。

项目结构
有两种流行的选择:旧的Ant & Eclipse ADT项目结构;新的Gradle & Android Studio项目结构。你应该选择后者。如果你的项目使用旧的结构,那么换掉吧。
旧结构

old-structure 
├─ assets
├─ libs
├─ res
├─ src
│ └─ com/futurice/project
├─ AndroidManifest.xml
├─ build.gradle
├─ project.properties
└─ proguard-rules.pro

新结构

new-structure
├─ library-foobar
├─ app
│ ├─ libs
│ ├─ src
│ │ ├─ androidTest
│ │ │ └─ java
│ │ │ └─ com/futurice/project
│ │ └─ main
│ │ ├─ java
│ │ │ └─ com/futurice/project
│ │ ├─ res
│ │ └─ AndroidManifest.xml
│ ├─ build.gradle
│ └─ proguard-rules.pro
├─ build.gradle
└─ settings.gradle

新结构主要的不同在于拆分了'源代码集' (main,androidTest),这是来自Gradle的理念。
使用最高级别"app"有利于将你的app和其他你的应用所引用的库项目(如:library-foobar)做区分。然后settings.gradle保持应用对这些库的索引,而app/build.gradle可以指向这些库。

Gradle配置
通用架构请遵循Google's guide on Gradle for Android;
小任务(脚本),你可以使用Gradle来制作小任务而不是Shell、Python或Perl等,具体参考Gradle's documentation;
密码。在你应用的build.gradle中你需要为发布编译定义 signingConfigs。具体如下:
不要像下面这样写,这样会出现在你的版本控制系统里:

signingConfigs { 
  release {  
   storeFile file("myapp.keystore")  
   storePassword"password123"
   keyAlias"thekey"
   keyPassword"password789"
  }
}