本节介绍HAP配置文件和鸿蒙应用程序工程的目录结构。
2.1.3节中,在新建HelloWorld工程的同时默认创建了一个名为entry的Entry。下文将对该entry的配置文件进行初步介绍。在DevEco Studio的Project工具窗体中选择HelloWorld→entry→src→main→config.json,即可打开Entry的配置文件,如图2-8所示。
Entry的配置文件为json格式,包含了app、deviceConfig和module共3个主要部分。这3个部分缺一不可。app对象内部定义了应用程序的全局配置,同一个应用的不同HAP包的app配置必须保持一致。其中,bundleName定义了应用程序的打包名称,也称为Bundle名称(BundleName);vendor定义了应用程序开发商的名称(可选);version定义了应用程序的版本号;apiVersion定义了应用运行所需要的鸿蒙API最小版本(compatible)和目标版本(target)。
注意: Bundle名称用于唯一性标识应用程序,在签名、发布应用程序时会通过Bundle名称识别应用程序。在将应用程序上传到华为应用商店时,BundleName必须是全局唯一的。只有Bundle名称相同且签名信息相同的应用程序才会被鸿蒙设备认为是同一个应用程序。另外,Bundle名称可以与具体的Java代码的包名不同。
图2-8 HAP配置文件config.json
deviceConfig对象定义了在具体设备上的配置信息,可以包含default对象、car对象、tv对象、wearable对象、liteWearable对象和smartVision对象。上述这些对象分别对应了在所有设备、车机、智慧屏、智能穿戴、轻量级智能穿戴和智能摄像头上的配置信息。
module对象定义了该HAP包的配置信息,包括包名对象package、类名对象name和描述对象description等。比较重要的通用配置如下:
(1)deviceType:目标设备类型,包括Phone(手机)、TV(智慧屏)、Car(车机)、Wearable(智能穿戴)、Lite Wearable(轻量级智能穿戴)等。
(2)distro:HAP发布的具体描述信息。
(3)abilities:各ability的配置信息。
(4)js:使用JavaScript UI框架时,各JavaScript模块的配置信息。
(5)defPermissions:自定义HAP所需要的权限。
(6)reqPermissions:声明该HAP在运行时可能需要申请的权限。
在今后的学习中,会经常修改config.json文件用于配置应用程序及HAP。
在Project工具窗体中,显示了HelloWorld工程的结构,包含了众多目录和文件。值得注意的是,这些目录并不是存储在硬盘文件系统中的真实的目录结构。
注意: 在Project工具窗体的上方,切换Project下拉选框为Project Files即可显示工程真实的目录结构,但是,真实的目录结构较为复杂,层级较多,并不利于工程管理。
接下来,介绍这些目录和文件的基本功能。
(1).gradle与.idea目录:存放Gradle和idea的配置文件和缓存等。一般情况下,这两个目录下的文件不需要读者过于关心,也不要去修改其内容。
(2)build目录:编译目录,包含了应用程序编译后的结果。例如,当读者学完2.2节,运行了应用程序后,会在该目录下生成.\outputs\hap\debug\wearable\entry-debug-unsigned.hap文件。这个文件就是entry HAP的文件实体。
(3)entry目录:名为entry的Entry HAP的目录。鸿蒙应用程序工程的代码和资源就放在这个目录里面,是应用程序开发的“主战场”。
(4)gradle目录:该目录包含了Gradle Wrapper类库和相关配置文件。通过Gradle Wrapper,DevEco Studio可以自动下载所需要的Gradle版本用于应用程序构建。
(5).gitignore:该文件是Git的忽略文件列表,而Git是常用的版本控制工具。
(6)build.gradle:该文件是工程的Gradle构建脚本,是非常重要的。
(7)CustomTimer.iml:源于IntelliJ idea的工程配置文件,一般情况下不需要修改这个文件。
(8)gradle.properties:Gradle的全局配置文件。
(9)gradlew与gradlew.bat:Gradle命令行工具,前者用于Linux、macOS等操作系统,后者用于Windows操作系统。
(10)local.properties:该文件用于指定鸿蒙SDK和Node.js环境的目录位置。
(11)settings.gradle:用于声明该工程中所有的HAP。
在entry目录中,还包含许多子目录和文件。这些文件在开发中经常被使用。接下来,列举一些常见的目录和文件:
(1)build目录:编译目录,读者一般情况下不需要了解其具体内容,但是,其中包含了在今后的学习中会经常遇到的ResourceTable.java文件。这个文件可以将xml文件所定义的控件、字符串等资源转换为Java对象。
(2)libs目录:库目录,可以用于引用其他的jar文件。
(3)src目录:源(source)目录,用于存放代码和资源。该目录下的./main/java/目录中存放了Java代码文件;./main/resouces/目录存放了布局、字符串、图像、图标等资源文件。
(4)build.gradle:该HAP构建所需要的gradle配置文件。
另外,在entry目录中,还包含了Git忽略文件列表.gitignore文件和源于IntelliJ idea的工程配置文件entry.iml等。