• HMS06. 编译构件相关


    01.编译构件

      编译构建是将HarmonyOS应用的源代码、资源、第三方库等打包生成HAP或者APP的过程。其中,HAP可以直接运行在真机设备或者模拟器中;APP则是用于应用上架到华为应用市场。

      为了确保HarmonyOS应用的完整性,HarmonyOS通过数字证书和授权文件来对应用进行管控,只有签名过的HAP才允许安装到设备上运行(如果不带签名信息,仅可以运行在模拟器中);

      同时,上架到华为应用市场的APP也必须通过签名才允许上架。因此,为了保证应用能够发布和安装到设备上, 需要提前申请相应的证书与Profile文件

      

      申请证书和Profile文件时,用于调试和上架的证书与授权文件不能交叉使用:

    • 应用调试证书与应用调试Profile文件、应用发布证书与应用发布Profile文件具有匹配关系,必须成对使用,不可交叉使用。
    • 应用调试证书与应用调试Profile文件必须应用于调试场景,用于发布场景将导致应用发布审核不通过;应用发布证书与应用发布Profile文件必须应用于发布场景,用于调试场景将导致应用无法安装。

    02.编译构建前配置

      在进行HarmonyOS应用的编译构建前,需要对工程和编译构建的Module进行设置,请根据实际情况进行修改。

    • build.gradle:HarmonyOS应用依赖gradle进行构建,需要通过build.gradle来对工程编译构建参数进行设置。
      build.gradle分为工程级和模块级两种类型,其中工程根目录下的工程级build.gradle用于工程的全局设置,各模块下的build.gradle只对本模块生效。
    • config.json:应用配置文件,用于描述应用的全局配置信息、在具体设备上的配置信息和HAP的配置信息。

      >> 关于 工程级别 build.gradle 文件的结构说明   

    • apply plugin:在工程级Gradle中引入打包app的插件,不需要修改。 
      apply plugin: 'com.huawei.ohos.app'
    • ohos闭包:工程配置,包括如下配置项:
      • compileSdkVersion:应用编译构建的目标SDK版本。
      • signingConfigs:应用的签名信息,包括调试签名信息或发布签名信息。(默认不存在)
    • buildscript闭包:Gradle脚本执行依赖,包括Maven仓地址和HarmonyOS编译构建插件。
      HarmonyOS编译构建插件是以Gradle插件为基础,在使用相应的HarmonyOS编译构建插件时,需要使用配套的Gradle插件,两者之间的配套关系如下表所示。
    • allprojects闭包:工程自身所需要的依赖,比如引用第三方库的Maven仓库和依赖包。

      >> 关于 模块级别 build.gradle 文件的结构说明  

    • apply plugin:在模块级Gradle中引入打包hap和library的插件,无需修改。
    • ohos闭包:模块配置,包括如下配置项:
      * compileSdkVersion: 依赖的SDK版本

      * showInServiceCenter: 是否在服务中心露出,只有在创建工程时,钩选了 "Show in Service Center" 选项时,才会生成这个字段;
      showInServiceCenter true
      buildTypes: Java代码混淆功能;
         
      * signingConfigs: 在构建生成HAP中进行设置后自动生成;
      * entryModel "entry"    该Feature模块关联的Entry模块;
      * mergeJsSrc true      
         跨设备的应用编译构建,是否需要合并JS代码。
         //合并JS代码打包时,需要在ohos闭包下手动添加, true:表示需要合并代码,false表示不需要合并;
      * annotationEnabled: 支持数据库注释
         

    • dependencies闭包: 该模块所需的依赖项; 

    • config.json配置文件
      HarmonyOS应用的每个模块下包含一个config.json配置文件,在编译构建前,需要对照检查和修改config.json文件

     03. 配置 Java 代码混淆

      DevEco Studio提供了代码混淆功能,通过使用ProGuard工具(ProGuard是一个开源的Java代码混淆器)将工程中的Java文件源代码进行混淆,
      以简短无意义的名称(例如a、b、c等),对类、字段和方法等进行重命名,可以有效的减少应用的大小。
      同时,代码混淆功能还可以提升反编译的难度,降低源代码泄露的风险,起到保护源代码的目的。
      >>> 在模块 build.gradle 中配置 proguardEnabled true
        在DevEco Studio中,在开启混淆功能后,压缩、优化功能均为默认开启的状态。如果想要关闭这些功能,可以在自定义规则文件中进行配置。
      启动混淆功能后,在构建Release类型的hap包或APP时,DevEco Studio会自动对源码进行混淆

      >>>  公共模块在混淆时的处理规则 
        工程中存在多个模块的情况下,如果多个模块引用了公共的HarmonyOS Library模块或HAR类库,则需要在每一个模块中的config.json文件的module闭包中添加如下字段,
        避免在混淆打包的时候出现公共的HarmonyOS Library模块或HAR类库的混淆结果被相互覆盖。
        

      >>> 在DevEco Studio中为每一个模块默认提供了Proguard规则文件proguard-rules.pro。   
        开发者在proguard-rules.pro中配置混淆规则后,构建时会将自定义的混淆规则与SDK中默认的规则合并、应用到程序中。
        如果程序引用了其它HarmonyOS Library模块或HAR类库,依赖中被打包的混淆规则也会一并应用到主程序中。
      >>> 对于HarmonyOS Library模块,需要在模块下手动创建“consumer-rules.pro”文件,目录层级与“proguard-rules.pro”文件并列。
               HarmonyOS Library模块中的混淆规则文件consumerRulesFiles,在编译时会打包到har包中,并更名为“proguard.txt”。
      更多混淆规则 :https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_java_obfuscate-0000001063740093

    04. 关于构建 生成HAP  

      HAP可以直接在模拟器或者真机设备上运行,用于HarmonyOS应用开发阶段的调试和查看运行效果。HAP按构建类型和是否签名可以分为以下四种形态:

    • 构建类型为Debug的HAP(带调试签名信息):携带调试签名信息,具备单步调试等调试手段的HAP,一般用于开发者使用真机设备调试应用。
    • 构建类型为Release的HAP(带调试签名信息):携带调试签名信息,不具备调试能力的HAP,相对于Debug类型的HAP包,体积更小,运行效果与用户实际体验一致。一般用于开发者在代码调试完成后,在真机设备中验证应用运行效果。
    • 构建类型为Debug的HAP(不带签名):不带调试签名信息,具备单步调试等调试手段的HAP,一般用于开发者使用模拟器调试应用。
    • 构建类型为Release的HAP(不带签名):不带调试签名信息,不具备调试能力的HAP,相对于Debug类型的HAP包,体积更小,运行效果与用户实际体验一致。一般用于开发者在代码调试完成后,在模拟器设备中验证应用运行效果。

      根据HarmonyOS工程介绍,一个HarmonyOS工程下可以存在多个Module,在编译构建时,可以选择对单个Module进行编译构建;也可以对整个工程进行编译构建,同时生成多个HAP。

      >>> a. 打开DevEco并连接上设备
          

       >>> b. 打开配置签名模块 (因为上一步已经登陆了,所以这里直接出现了配置窗口, 但我们现在还没有项目,需要先去创建一个项目)
          

          登陆 AppGallery Connect 去创建一个项目

          1.先创建一个项目

           

          2. 在项目中创建一个应用

            

          3. 确认以后,会打开一个引导页面 
           >> 下载配置文件“agconnect-services.json”  >>将Huawei DevEco Studio切换到项目视图 >> 将agconnect-services.json添加到模块根目录

              

            >> Gradle文件中设置 AppGallery Connect 的Gradle插件以及 AppGallery Connect SDK 基础包

              

          4. 此时再进入Project Structure 进行签名配置,发现,还是无法处理
           

           >>> 由于缺少HarmoneyOS设备,无法创建配置文件。请先通过IP或USB连接HarmoneyOS设备 

           >>> 接入 HarmoneyOS 的真机设备, 立马出来了;

             

          >>> 在工程级别的gradle中将出现签名数据
            

          5.  左下角: OhosBuild Variants 检查确认为 debug 模式, 并编译HAP

             

             ** 如果只需要对单个Module进行编译构建,请在DevEco Studio左侧的工程目录中选中要编译的Module,
             然后在主菜单栏点击Build > Make Module 'Module Name',生成单个Module的HAP包。

          6.  一键重构

            

            

             

      

      

     


      

  • 相关阅读:
    shell script 学习笔记-----标准输出
    《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer
    《TCP/IP详解 卷一》读书笔记-----TCP超时重传
    《TCP/IP详解 卷一》读书笔记-----TCP数据流
    《TCP/IP详解 卷一》读书笔记-----TCP连接建立
    《TCP/IP详解 卷一》读书笔记-----DNS
    《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP
    《TCP/IP详解 卷一》读书笔记-----UDP&IP 分片
    《TCP/IP详解 卷一》读书笔记-----动态路由协议
    《TCP/IP 详解 卷一》读书笔记-----IP静态 路由
  • 原文地址:https://www.cnblogs.com/jieling/p/15408252.html
Copyright © 2020-2023  润新知