Android项目程序解读

来自CloudWiki
跳转至: 导航搜索

本章我们将对项目进行解读,让大家对整个项目有个基本的了解。打开完整版的项目文件,可以看到如下工程结构:

在该项目中,最重要的是 app 这个文件夹,在这个文件夹里分为 3 个部分:

1、build	存放项目的输出
2、libs	存放我们这个项目需哦需要的第三方 jar 文件
3、src	存放我们编辑的源代码
4、build.gradle	模块中的 gradle 文件

gradle文件

Gradle 是一种依赖管理工具,基于 Groovy 语言,面向 Java 应用为主,它抛弃了基于 XML 的各种繁琐配置,取而代之的是一种基于 Groovy 的内部领域特定(DSL)语言。

一个 Android Studio 项目中,会存在多个.gradle 文件。其中 project 目录下存在一个 build.gradle 文件和每一个 module 会存在一个 build.gradle 文件。

工程中的 build.gradle 内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的 jcenter(), 之前版本则是 mavenCentral(), jcenter 可以理解成是一个新的中央远程仓库,兼容 maven 中心仓库,而且性能更优。另一个是声明了 android gradle plugin 的版本.android studio 1.0 正式版必须要求支持 gradle plugin 1.0 的版本。

模块中的 build.gradle 可以算是整个项目最主要的 gradle 配置文件,主要内容及意义如下:

// 这表示该 module 是一个 app module apply plugin: 'com.android.application' android {
//  基于哪个版本编译
compileSdkVersion 23
// 基于哪个构建工具版本进行构建的
buildToolsVersion "23.0.3"

// 缺省配置主要包括:应用 ID,最小 SDK 版本,目标 SDK 版本,应用版本号、应用版本名
defaultConfig {
applicationId "open_open.com.helloworld" minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
// buildTypes 是构建类型,常用的有 release 和 debug 两种,可以在这里面启用混淆,启用 zipAlign 以及配置签名信息等。
buildTypes {
release {
minifyEnabled false
proguardFiles	getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
// dependencies 它定义了该 module 需要依赖的 jar,aar,jcenter 库信息。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
}

java文件夹

点开 src 文件夹,继续点开 main 文件夹,在里面有 java 文件夹:

此文件夹用于存放我们编写的程序代码,为了便于代码的管理,我们将不同的功能放在不同的包里。

(1)application 包:定义全局信息 (2)base 包中的 TaskResult:对异步任务执行结果进行封装。 (3)fragment 包:存放各个 fragment,方便屏幕适配。 (4)fs 包:云存储的各类功能进行封装。 (5)utils 包:对各种常用功能进行封装,便于调用。

res 文件夹

该文件夹存放项目中用到的各种资源如布局、菜单、图片等等。

(1)layout 文件夹: 存放布局资源 (2)menu 文件夹: 存放菜单资源 (3)drawable 文件夹: 存放图片资源 (4)values 文件夹: 存放值资源


清单文件:manifest文件夹

AndroidManifest.xml 是每个 android 程序中必须的文件。它位于整个项目的根目录, 描述了 package 中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的 Activities, ContentProviders, Services, 和 Intent Receivers,还能指定 permissions 和 instrumentation(安全控制和测试)


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xiandian.openstack.cloud.swiftstorage" android:versionCode="1"
android:versionName="1.0">

<!-- (1) 增加权限,能够访问网络、拍照、存储 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<application
android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
<activity
android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".LoginActivity" android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".WelcomeActivity" android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".RegisterActivity"></activity>
</application>

</manifest>