欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 安卓小米便签工程结构分析

安卓小米便签工程结构分析

2024/10/24 14:24:20 来源:https://blog.csdn.net/m0_54182006/article/details/141256043  浏览:    关键词:安卓小米便签工程结构分析

目录

安卓小米便签工程结构分析

App下的子目录 

1 manifests子目录

2 java子目录 

3 res子目录

Gradle Scripts下的目录 

1 Gradle Scripts简介

2 什么是Gradle

3 App下的 build.gradle 文件示例

清单文件(AndroidManifest.xml) 

1 常见属性 

2 清单文件示例 

Activity 

结语


安卓小米便签工程结构分析

        ①App工程分为两个层次,第一个层次是项目,另外一个层次是模块

        ②模块依附于项目,每一个项目至少有一个模块,也可以拥有多个模块;

        ③一般我们说的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。

App下的子目录 

1 manifests子目录

下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文件;

2 java子目录 

存放当前模块的Java源代码

3 res子目录

存放当前模块的资源文件

    在Android开发中,这些文件类型和目录主要用于组织和管理应用的资源和布局,它们各自有特定的功能和用途:

  1. color:这个目录用于存放颜色资源文件。颜色资源可以被应用中的不同部分(如布局、样式、主题等)引用,以保持应用视觉风格的一致性和易于维护性。颜色资源文件通常以.xml格式存储,其中可以定义多个颜色值,如背景色、文字色等。

  2. drawable:这个目录用于存放应用的图形资源文件,如图片、图标、按钮的形状等。这些资源可以被应用的布局文件引用,用于显示在界面上。图形资源文件同样以.xml格式存储,可以包含多个尺寸的图片、不同状态下的图标等,以适应不同设备的屏幕密度和用户交互需求。

  3. layout:这个目录用于存放布局文件,即定义应用界面结构的XML文件。布局文件可以包含各种控件(如按钮、文本框、图像视图等),并定义它们的排列方式、大小、位置等。通过使用布局文件,开发者可以创建可重用的界面组件,提高代码的可维护性和可重用性。

  4. menu:这个目录用于存放菜单资源文件,即定义应用的上下文菜单、工具栏菜单等的XML文件。菜单资源可以被应用的不同部分引用,用于提供用户交互的选项。通过使用菜单资源,开发者可以创建可自定义的菜单界面,以满足不同的用户需求。

  5. raw:这个目录用于存放原始资源文件,如音频、视频、图片等原始数据文件。这些文件通常不经过Android系统解析,直接作为原始数据提供给应用使用,适用于存储不可解析的二进制数据。

  6. values:这个目录用于存放应用的资源值文件,如字符串、整数、布尔值等。资源值文件通常以.xml格式存储,文件中定义了一系列资源值,这些值可以被应用中的不同部分引用。通过使用资源值文件,开发者可以创建可重用的、易于维护的资源集合,避免在代码中硬编码资源值。

  7. xml:这是一个通用的文件扩展名,用于表示XML格式的文件。在Android开发中,除了上述特定目录下的.xml文件,还有其他类型的.xml文件,如配置文件、资源描述文件等,用于定义应用的特定配置或描述资源信息。

这些文件类型和目录共同构成了Android应用的资源系统,使得开发者能够创建功能丰富、界面美观、易于维护和扩展的应用程序。

Gradle Scripts下的目录 

1 Gradle Scripts简介

 Gradle Scripts下面主要是工程的编译配置文件,主要有:

        ① build.gradle:App工程的编译配置文件,该文件分为项目级别与模块级别两种,用于描述App工程的编译规则;

        (工程级别是全局的配置,模块的配置就只影响App的模块)

        ② proguard-rules.pro:该文件用于Java代码的混淆规则;

        (因为APK可以解压,通过反编译可以看到源码,故需要混淆)

        ③ gradle.properties:该文件用于配置编译工程的命令行参数,一般无需改动;

        ④ settings.gradle:该文件配置了需要编译哪些模块。初始内容为include ':app',表示只编译app模块;

        ⑤ local.properties:本地项目的配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。

 

这些文件都是与Gradle构建工具相关的配置文件,用于定义和管理项目的构建过程。以下是这些文件的详细解释:

  1. build.gradle (Project: Notes): 这是一个项目级别的构建脚本,用于定义整个项目的构建规则、依赖、任务等。在这个文件中,你可以配置项目的名称、版本、依赖库、构建类型(如debug或release)以及自定义的任务。

  2. build.gradle (Module :app): 这是一个模块级别的构建脚本,通常用于定义应用的特定构建规则。与项目级别的build.gradle相比,这个文件只对应用模块有效,可以在这里定义模块的依赖、配置特定的任务等。

  3. gradle.properties (Project Properties): 这个文件用于存储项目级别的属性,这些属性可以被多个构建脚本引用。例如,你可以在里面设置项目的默认JDK版本、Gradle的默认配置等。

  4. gradle-wrapper.properties (Gradle Version): 这个文件用于存储Gradle的版本信息和配置。Gradle Wrapper是一个用于简化Gradle安装和版本管理的工具,通过这个文件,Gradle可以自动下载并使用正确的版本进行构建。

  5. local.properties (SDk Location): 这个文件用于存储本地的SDK路径。在Android开发中,SDK包含了开发和调试所需的工具和库,通过这个文件,你可以指定SDK的存放位置,从而避免在构建过程中重复查找SDK路径。

  6. settings.gradle (Project Settings): 这是一个项目级别的配置文件,用于定义项目中所有模块的构建规则和依赖关系。在这个文件中,你可以配置模块的依赖、全局的构建规则、默认的构建类型等。通过这个文件,你可以统一管理项目的构建设置,而不需要在每个模块的build.gradle文件中重复配置。

这些文件共同作用,使得Gradle能够高效、灵活地构建和管理复杂的项目结构。

2 什么是Gradle

 Gradle 是一个项目自动化构建工具,帮助我们做依赖、打包、部署、发布、各种渠道的差异管理等工作。

 我们要把整个拥有这么多代码的工程发布运行,最终是要打包为APK文件才能发布,那么多代码要APK打包,以及源代码的编译,这一系列的过程全由Gradle来完成。(类似Java Web编程中的 Maven )

注意:

        ① Gradle工具的版本配置在gradle\wrapper\gradle-wrapper.properties;

        (也可以在File->Project Structure -> Project,在设置界面中修改Gradle Version) 

        ② 不同版本的Android Studio都有对应版本的Gradle版本,当两者版本匹配时,才可运行成功。

 

3 App下的 build.gradle 文件示例

  1. plugins:引入插件

  2. android:包含了配置 Android 构建的所有信息,比如编译 SDK 版本、应用 ID、版本号、签名配置等。

  3. dependencies:用于声明该模块所依赖的其他库和模块。可以包括编译时依赖、运行时依赖、测试依赖等。

// Top-level build file where you can add configuration options common to all sub-projects/modules.
// 顶级构建文件,在这里可以添加适用于所有子项目/模块的通用配置选项。buildscript {// 定义构建脚本依赖项的仓库repositories {google() // 添加 Google 仓库,用于获取 Android 构建工具jcenter() // 添加 JCenter 仓库,用于获取其他依赖项}// 添加 Gradle 插件的依赖项dependencies {classpath 'com.android.tools.build:gradle:7.4.2' // 指定使用 Android 构建工具的版本}
}// 定义扩展属性
ext {// 设置默认的目标 SDK 版本defaultTargetSdkVersion = 21
}// 应用到所有子项目
allprojects {// 定义所有子项目共用的仓库repositories {google() // 添加 Google 仓库jcenter() // 添加 JCenter 仓库}
}

清单文件(AndroidManifest.xml) 

每个应用的根目录都必须包含一个AndroidManifest.xml,并且文件名必须固定这样,不可修改。这个文件包含了App的配置信息,系统需要工具里面的内容运行App的代码,显示界面。

1 常见属性 

        ① android:allowBackup : 是否允许备份;

        ② android:icon :指定App在手机屏幕上显示的图片; 

        ③ android:label :指定App在手机屏幕上显示的名称; 

        ④ android:roundIcon :指定App的圆角图标; 

        ⑤ android:supportsRtl :是否支持阿拉伯语 / 波斯语这种从右到左的文字排列顺序;

        ⑥ android:theme :指定App的显示风格。 

 application 后面部分还有 activity 节点,这是活动页面的注册声明。只有在AndroidManifest.xml 中正确配置activity节点,才可在运行时访问对应的活动页面。初始配置的 MainActivity 是App的默认主页,因为其 activity 节点内部配置了如下过滤信息。

    <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>

action 节点中设置的 android.intent.action.MAIN 表示该页面是App的入口页面,启动App时会先打开该页面。category 节点设置的 android.intent.category.LAUNCHER 决定了是否在手机屏幕上显示App图标。

2 清单文件示例 

 

<?xml version="1.0" encoding="utf-8"?><!-- 版权声明:该文件属于MiCode开源社区(www.micode.net) -->
<!-- 许可协议:Apache 2.0,详情参见http://www.apache.org/licenses/LICENSE-2.0 --><manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="net.micode.notes"android:versionCode="1"android:versionName="0.1"><!-- 使用的SDK版本 --><uses-sdk android:minSdkVersion="14" /><!-- 应用需要的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /><uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /><uses-permission android:name="android.permission.GET_ACCOUNTS" /><uses-permission android:name="android.permission.USE_CREDENTIALS" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!-- 应用程序定义 --><applicationandroid:icon="@drawable/icon_app"android:label="@string/app_name"><!-- 主Activity,启动器 --><activityandroid:name=".ui.NotesListActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:label="@string/app_name"android:launchMode="singleTop"android:theme="@style/NoteTheme"android:uiOptions="splitActionBarWhenNarrow"android:windowSoftInputMode="adjustPan"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 编辑笔记的Activity --><activityandroid:name=".ui.NoteEditActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:launchMode="singleTop"android:theme="@style/NoteTheme"><!-- 处理外部HTTP链接和编辑意图 --><intent-filterandroid:scheme="http"tools:ignore="AppLinkUrlError"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="vnd.android.cursor.item/text_note" /><data android:mimeType="vnd.android.cursor.item/call_note" /></intent-filter><!-- 处理插入或编辑意图 --><intent-filter><action android:name="android.intent.action.INSERT_OR_EDIT" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="vnd.android.cursor.item/text_note" /><data android:mimeType="vnd.android.cursor.item/call_note" /></intent-filter><!-- 处理搜索意图 --><intent-filter><action android:name="android.intent.action.SEARCH" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><!-- 搜索配置 --><meta-dataandroid:name="android.app.searchable"android:resource="@xml/searchable" /></activity><!-- 提供者:用于管理笔记数据 --><providerandroid:name="net.micode.notes.data.NotesProvider"android:authorities="micode_notes"android:multiprocess="true" /><!-- 小部件提供者:2x2尺寸 --><receiverandroid:name=".widget.NoteWidgetProvider_2x"android:label="@string/app_widget2x2"><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /><action android:name="android.appwidget.action.APPWIDGET_DELETED" /><action android:name="android.intent.action.PRIVACY_MODE_CHANGED" /></intent-filter><meta-dataandroid:name="android.appwidget.provider"android:resource="@xml/widget_2x_info" /></receiver><!-- 小部件提供者:4x4尺寸 --><receiverandroid:name=".widget.NoteWidgetProvider_4x"android:label="@string/app_widget4x4"><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /><action android:name="android.appwidget.action.APPWIDGET_DELETED" /><action android:name="android.intent.action.PRIVACY_MODE_CHANGED" /></intent-filter><meta-dataandroid:name="android.appwidget.provider"android:resource="@xml/widget_4x_info" /></receiver><!-- 启动完成时初始化闹钟 --><receiver android:name=".ui.AlarmInitReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver><!-- 闹钟接收器:运行在远程进程中 --><receiverandroid:name="net.micode.notes.ui.AlarmReceiver"android:process=":remote"></receiver><!-- 闹钟提醒Activity --><activityandroid:name=".ui.AlarmAlertActivity"android:label="@string/app_name"android:launchMode="singleInstance"android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar"></activity><!-- 设置Activity --><activityandroid:name="net.micode.notes.ui.NotesPreferenceActivity"android:label="@string/preferences_title"android:launchMode="singleTop"android:theme="@android:style/Theme.Holo.Light"></activity><!-- 任务同步服务 --><serviceandroid:name="net.micode.notes.gtask.remote.GTaskSyncService"android:exported="false"></service><!-- 默认搜索设置 --><meta-dataandroid:name="android.app.default_searchable"android:value=".ui.NoteEditActivity" /></application>
</manifest>

Activity 

 Activity 是一个应用程序的组件,提供一个屏幕,可以用来与用户交互,完成某项任务。(即包含可执行操作的界面。)

结语

下一篇开始解读JAVA代码

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com