使用Android Studio开发Android应用是很简单的,最近几年学习Android很少使用eclipse的了,现在喜欢用eclipse无疑都是大佬,今天来重新温习一下Android的应用结构。
目录
Android项目结构
首先我们来看一下Android Studio大致目录结构图。
接下来我们来了解一下对应文件的内容。
build.grade构建文件
apply plugin: 'com.android.application' //标注使用了此插件,所有的Android项目都需要使用此插件,如果使用Kotlin开发项目,则有其它依赖插件
android {
compileSdkVersion 29 //sdk的版本
buildToolsVersion "29.0.3" //buildTools工具的版本,包含aapt,dx等等
defaultConfig {
applicationId "com.example.dhd.myapplication" //程序包名
minSdkVersion 14 //最小sdk版本,如果设备小于此版本,则无法安装此应用
targetSdkVersion 29 //sdk版本
versionCode 1 //应用版本,首次是一,往后一次加1
versionName "1.0" //版本名字,用户可以在应用详情里面看到的版本号
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" //单元测试
}
buildTypes {
//正式版本的配置,应用已经上市使用的配置
release {
minifyEnabled false //是否对代码进行混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) //配置lib目录下的所有jar包
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3' //配置从中央仓库下载依赖jar包
testImplementation 'junit:junit:4.12' //定义项目测试代码(test目录下)的依赖
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
AndroidManifest.xml清单文件
AndroidManifest.xml是每个项目必须需要的,此文件中说明了项目的名称(唯一性),图片,组件(Activity、Service、BroadcastReceiver、ContentProvider),权限等。
<?xml version="1.0" encoding="utf-8"?>
<!--应用包名-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.dhd.myapplication">
<!--权限-->
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<!--从上往下依次为
允许第三方备份此应用数据
图片
名字
圆形图标
是否支持从右到左的布局,只在api大于17的时候生效
应用风格
定义应用中的一个组件,类名为MainActivity
-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<!--指定MainActivity为应用的入口,打开应用默认是此入口-->
<action android:name="android.intent.action.MAIN" />
<!--指定加载应用时运行此Activity-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
应用权限说明
应用在手机上面运行时,需要获取权限才能够访问系统,比如需要打开相机就需要在AndroidManifest.xml清单文件中添加此
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
权限才可以访问相机
关于权限大全,大家可以去看看这篇博客
点这里
要注意的一点就是在Android6.0以上需要申请权限,6.0以下不需要申请权限,关于申请权限的问题可以参考我的另一篇博客。
点这里
res目录说明
res目录下存放了项目中所用的图片,字符串,颜色,尺寸等资源,将这些资源放在不同的目录下,让aapt工具扫描这些资源进行使用,,并为它们生成相对应的资源R.java。
我们以/res/values/colors.xml文件为例。
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
</resources>
这里面定义了三种颜色,当然自己可以自定义一些颜色,使其在整个项目中都可以使用。
使用方法:
<TextView
android:textColor="@color/colorAccent"
android:text="重头再来"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
Android应用组件介绍
Android应用是由组件组成的,我们平常看到的界面就是Activity,也就是我们常说的Android四大组件之一,此外还有Service,BroadcasetReceive,ContentProvider等组件。
View
view是所有UI控件的基类,View组件其实就是用户看到的界面,我们需要将组件放在Activity里面,并通过 setContentView(R.layout.activity_main);
显示出来。
Activity
activity就是与用户进行交互的组件,用户看到的界面都是Activity,Activity需要继承Activity基类使用。
Service
Service与Activity并列,Service一般是在后台运行,不与用户进行交互,Service需要继承Service基类使用,有不同于Activity的生命周期,Service一般用于后台服务或者监控其它组件的运行状态。
BroadcasetReceive
BroadcasetReceive也是比较重要的一个组件,它代表广播接收器,类似于监听用户的点击事件,例如如果实现了开机广播监听,当Android系统启动的时候,可以监听到开机广播,进行App的开机自启动。
ContentProvider
ContentProvider是相互独立运行的,各自运行在独立的进程中。ContentProvider一般与ContentResolver结合使用。举个例子,当我们使用发送短信的时候,我们需要获取手机联系人,通讯录使用ContentResolver暴露数据,而短信使用ContentProvider接收联系人数据。
apk签名
当我们写好一个应用时,我们需要发布正式版的apk,这个时候我们就需要对apk进行签名处理。
有时候我们测试apk的时候,可以不进行签名,直接使用如下图方案将apk包打包为debug模式。
当我们需要签名的时候可以按照下面步骤进行签名处理
选择apk,点击Next
如果系统中没有数字证书,需要点击Create new…填写数字证书
数字证书如下进行填写。
填写完之后会返回到上一个界面,点击Next,出现如下图
选择replace,下方的v1和v2至少选择一个,
如果只勾选v1,在Android7.0以上不会应用新的签名方式。如果只勾选V2,Android7.0以下的机子将无法安装APK! 建议,两个都勾选上去。
选好之后,点击Finish,稍等片刻,即可在replace文件夹中找到打包好的apk。
结束语
到这里先结束了,有空再补充,如果有错误,欢迎提出来!