分享到:
发表于 2024-12-31 14:48:50 楼主 | |
![]()
![]()
根据业务场景,合理配置增量/并行编译、开启守护进程,可以降低约 60% 的构建耗时 2. 模块化编译构建 为了提升HarmonyOS应用的开发效率和开发者体验,DevEco Studio引入了模块化编译方式,以优化传统的JSBundle化编译方案。以往的方案会为每个入口页面打包成一个独立的bundle包,不支持运行时共享,因此每当修改单个模块文件时,需要进行整包重新编译。这不仅增加了编译时间,也导致HAP包体积增大,影响开发效率。 模块化编译通过以下方式解决这些问题:
通过这些优化,开发者在修改单个模块代码时,无需整包编译,减少了编译的代码量,加快了增量编译速度,从而提升了整体开发效率和体验。需要注意的是,模块化设计的复杂性可能增加管理成本,因此开发者需要平衡好模块化的粒度。 3. 降低应用包体积
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt '), 'proguard-rules.pro' } } 4. 优化库管理加速构建 为了进一步优化长时间的构建我们还可以通过采用动态共享包(HSP)和静态共享包(HAR)的策略提升构建效率。动态共享包(HSP) 通过按需加载减少了不必要的编译时间,而静态共享包(HAR)在模块间实现了高效的资源共享。这些方法在实际项目中表现也足够出色,能够有效优化构建流程。
?当需要在应用内部进行代码和资源共享时,建议使用HSP。它可以包含代码、C++库、资源和配置文件,但不支持独立发布,需随宿主应用一起发布。HSP通过按需加载,减少不必要的编译时间,提高构建效率。 ?当共享包作为应用模块的依赖项被引用时,应选择HAR。它同样可以包含代码、C++库、资源和配置文件,适合用于通用组件的共享。HAR通过高效资源共享,优化了模块间的依赖管理,进一步缩短构建周期。
?在多任务窗口场景中,HSP通过与宿主应用同进程运行,实现了更高效的资源管理和调用。这种方式不仅减少了资源加载的延迟,还优化了内存使用,使应用在多任务环境下更流畅地运行。此外,按需加载的特性进一步提升了应用启动速度。 ?HAR在跨多个应用或模块的资源共享中表现出色。其模块化设计允许独立发布和管理,确保资源在不同应用间的高效共享。这种方法减少了重复资源的存在,降低了整体包体积,并简化了依赖管理,适合频繁更新和维护的复杂项目。通过优化资源的重用和依赖关系,提高构建效率。
?懒加载技术(如LazyForEach),是一种按需加载数据或资源的策略。通过按需加载数据或资源,懒加载避免了在构建初期加载所有内容,从而减少了构建时间和资源消耗。这种方法有效降低了编译时的负担,使得构建过程更加高效。此外,懒加载减少了不必要的库加载,优化了依赖管理,进一步缩短了构建周期。 5. 性能可视化检验成果 使用Build Analyzer工具会在每次构建应用时默认生成一份报告,可以记录任务执行耗时、线程、ArkTS编译中的各环节的细分耗时情况等信息,开发者可以通过这些数据分析排查构建过程中的性能问题。
hvigorw assembleHap --analyze=normal --config properties.hvigor.analyzeHtml=true
"properties": { "hvigor.analyzeHtml": true // 生成构建可视化html文件 } 构建任务时间图谱,构建任务展示按照各个任务总时长占比,以相对长度进行展示。可以对时间块进行缩小放大,查看具体的任务名称及耗时信息。 6. 不止于此 通过一系列优化策略,我们显著提升了超级APP的构建效率。首先,通过模块化设计,将应用拆分为多个独立模块,减少了构建时的耦合,并提高了并行处理能力。其次,利用Hvigor的增量和并行编译特性,仅对代码变更部分进行编译,大幅缩短了构建时间。缓存机制的合理配置减少了重复数据加载,优化了资源访问速度。同时,压缩和混淆代码、优化图片和音频文件、删除未使用资源等措施有效减小了应用包体积。共享代码与懒加载技术进一步优化了资源管理。借助Build Analyzer工具,我们能够实时监控和分析构建过程,快速识别和解决性能瓶颈。除此之外,通过自定义插件和构建任务,我们灵活调整了构建流程,进一步提升了效率。这些措施不仅缩短了构建时间,还提高了开发效率和产品迭代速度,使开发团队能够更快速地响应市场需求和用户反馈,确保应用的高效交付和稳定性。 |
|
个性签名:无
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见