Android系统架构
Android程序结构
创建一个Android项目,为初学便于理解,将程序项目结构切换为Project模式,项目结构如下
.gradle和.idea:这两个目录下放的都是Android Studio自动生成的文件,无需我们关心,也不需要手动编辑。
app:项目中的代码、资源等内容几乎都放在这个目录下,开发工作基本在这个目录下进行。
libs:如果项目引用了第三方jar包,就需要吧这些jar包放在libs目录下,此目录下的jar包都会自动添加到构建目录中。
androidTest:此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
java:此目录防止我们所有Java代码的位置,展开此目录可看到新建此项目适的MyApplicationActivity文件就在里面。
res:这个目录下存放项目使用到的所有图片、布局、字符串等资源。
drawable开头:放图片,drawable和mipmap一样,只是没有自动生成,如果为了兼容各种设备,则需要自己新建drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等文件夹,开发程序时最好将一张图片提供不同分辨率版本,分别放在这些文件夹下,运行时会自动根据当前设备分辨率高低选择加载哪个文件夹图片。如果只有一张图片,则将所有图片放在drawable-xxhdpi下也可以。
layout开头:放布局文件
mipmap开头:放应用图标。(有很多mipmap开头的文件,主要是为了让程序能更好兼容各种设备)
values开头:放字符串、样式、颜色等配置。
AndroidManifest.xml:整个Android项目配置文件,在程序中定义的所有四大组件都要在这个文件中注册,并还可以在文件中给应用程序加权限声明。
test:用来编写Unit Test测试用例,对项目自动化测试的另一种方式
.gitignore:用于将app模块指定的目录或文件排除在版本控制外,作用和外层的类似。
build.gradle:app木块的gradle构建脚本,此文件中会指定很多项目构建相关的配置。
prohiard-rules.pro:用于指定项目代码的混淆规则,当开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解这难以阅读。
build:无需关心,包含了编译时自动生成的一些文件
gradle:包含gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否联网下载gradle,编译器默认没有启动,如果需要打开,可点击File--Settings--Build Execution,Deployment-Gradle进行配置更改。
.gitignore:这个文件是用来将制定的目录或文件排除在版本控制之外。
build.gradle:项目全局的gradle构建脚本,通常这个文件的内容不需要修改。
.gradle.properties:全局的gradle配置文件,此处配置的属性会影响项目中所有的gradle编译脚本。
gradlew和gradlew.bat:这两个文件用来在命令行界面执行gradle命令,其中gradlew是在Linux或Mac系统中使用的,gradle.bat实在windows系统中使用的。
local.properties:这个文件用于指定本机中的Android SDK路径,通常是自动生成的,不需要修改。除非本机中的Android SDK位置发生了变化。
MyApplication.iml:iml文件是所有IntelliK IDEA项目都会生成一个文件,(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,不需要修改这个文件的任何内容。
settings.gradle:这个文件用于指定项目中所有引用的木块。由于上图项目只有一个app模块,因此此文件也只引用了app这个模块。
Android项目文件分析
首先运行一下刚刚创建的项目。
打开AndroidManifest.xml项目配置文件,可以看到如下代码
<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
此段xml代码表示对MainActivity这个活动进行注册,没有在此文件中注册的活动是不能使用的,其中intent-filter中的两行代码最为重要,<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />表示此活动是这个项目的主活动,打开程序首先看到的就是这个活动。
然后我们在main-java-中看看MainActivity.java类,可以看到继承自AppCompatActivity,这是一个向下兼容的Activity,可将各个系统版本增加的特性和功能最低兼容到Android2.1版本,Activity是Android系统提供的一个活动基类,项目中用到的所有活动都必须继承它或它的子类才能拥有活动的特性。然后可以看到有一个onCreate方法,这个方法是在活动呗创建时必定要执行的方法,其中只有两行代码,并没有看到Hello word!字样,那么上图运行时显式的Hello word!是怎么来的呢?
Android程序的设计讲究逻辑和视图分离,因此不推荐直接在活动中直接编写界面,而是在布局文件中编写界面,然后在活动中引用进来。如下代码,在onCreate方法第二行调用了setContentView(R.layout.activity_main),表示当前活动引入一个R/layout目录activity_main布局。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
打开res/layout目录,可以看到activity_main.xml文件,然后切换到Text模式,可以看到一个<TextView>标签下,有一行android:text="Hello World!"。
原文地址:https://www.cnblogs.com/vice/p/9011727.html