
# 导入导出应用源码包
#### 什么是应用包
轻应用或行业应用开发完成后，应用需要编译打包，这种编译后的压缩包即应用包。
- **应用包类型**
  在AstroZero中，编译打包的应用包类型有以下两种：
  - **源码包**：该类型包中的所有组件，都不受保护和限制。在其他环境安装后可编辑包中组件，即在原有基础上可进行再开发。若后续其他用户在开发环境安装后，会显示在开发环境首页的"项目"页签下。
  
  - **资产包** ：该类型支持设置包中的组件，是否受保护。打包时不做编译设置，默认打出的包都是资产包，包中组件都为只读保护模式，将包安装到其他环境时，只能运行和预览，不可编辑包中组件。若后续其他用户在其他开发环境安装资产包后，应用会显示在开发环境首页的"库"页签下。
    ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
    应用包类型的详细介绍，请参见[源码包与资产包对比]。
    
   
- **软件包环境**
  图1环境介绍   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932888328.png "点击放大")
  - AstroZero分为开发环境，沙箱环境和运行环境三个部分，更多介绍请参见[基本概念](https://support.huaweicloud.com/productdesc-astrozero/astrozero_03_0004.html)。
  
  - 开发者在开发环境开发应用和BO，开发完成后生成对应的软件包。
  
  - 发布软件包到沙箱环境中进行测试。
  
  - 测试通过后，发布安装到生产环境实际运行和维护。
    ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
    仅专业收费版本支持沙箱环境和运行环境，免费版本无沙箱环境和运行环境权限。
    
   
- **软件包制作**
  - 应用或BO创建完成后，平台会同步创建同名的软件包。
  
  - 对应用和BO内的组件，进行增删查改都会同步反映到软件包中。
  
  - 开发者也可以在编译设置中，对软件包和其中组件的属性进行修改。
   
 
 #### 源码包与资产包对比
源码包和资产包都是应用发布类型，大部分的功能都是一致的，例如都分为全量和组件两种形式，都是按"编译-发布"的流程进行。目前来说，主要有以下几点不同之处：
- 不同的保护模式设置。 源码包中的所有组件都不受保护和限制，其保护模式也无法进行设置修改，这些组件在安装后可以被自定义编辑修改。而资产包的大部分组件默认在安装后是不允许被修改的，甚至可以设置某些组件不可见，如服务编排，脚本等，可防止泄露源代码，保护知识产权。其保护模式可以在编译设置中，进行修改。
  
- 二次开发与发布模式不同。 源码包在开发环境中安装后允许再次进行打包发布，而资产包安装后无法二次打包发布。另外，源码包只能发布到"我的仓库"，而资产包主要用于发布到应用市场。
  
 
#### 如何快速区分源码包与资产包
- 在经典版应用设计器中，可区分源码包和资产包。
  图2资产包和源码包位置   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933047728.png) 
- 在沙箱或运行环境中，安装资产包和源码包后，在packageinstall表中，查看managed字段的值，true是资产包，false是源码包。如何使用控制台查看，可参见[使用控制台分析查询SQL](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0350.html)。
  图3控制台中查看packageinstall   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960286857.png "点击放大") 
 
#### 为什么要用源码包
应用包主要用于租户之间或者环境之间的资产复用，避免重复开发。而源码包主要用于同一租户内，在不同环境之间的资产迁移，以源环境的状态继续开发（类似自己代码仓库），或者用于备份租户自己的代码，以便在需要恢复时使用。
 #### 如何导出源码包
- 可参考资产包的导出流程，导出和编译设置参数，请参见 [应用打包发布](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0675.html)。
- 先发布源码包，再下载源码包到本地（下载即是导出源码包），请参见[1]。
- 发布源码包的步骤，请参见[如何将应用发布到"我的仓库"](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_5049.html)。
  图4编译设置：全量导出源码包   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960127041.png "点击放大")
  图5编译设置-组件：部分组件导出源码包   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933047732.png "点击放大")
  ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
  类别中"租户级组件"指的是当前租户内所存在的组件。
  
 
#### 如何导入源码包
1. 获取到其他租户导出的源码包。
   
   其他租户在应用开发页面左侧，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960127049.png)，在"已发布 \> 源码包"页签中，可查看到已发布的源码包。单击"下载"，将包下载到本地，然后将发布好的源码包发送给需要安装该应用的用户。
   
   
2. 参考[如何登录经典版环境配置](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2092.html)中操作，登录经典版环境配置。
3. 在左侧导航栏中，选择"应用管理 \> 软件包管理 \> 软件包安装"。
4. 单击"新建"，在"软件包安装"页面将应用包拖入进去。 
   若需要检查软件包中对象属性变更情况时，请勾选"检查软件包中对象属性变更情况"，单击"检查并安装"。
   勾选"检查软件包中对象属性变更情况"，表示安装前会检查软件包中的对象属性变更情况。对象属性变更可能引起环境中某些对象记录内容的变化，默认不勾选。安装软件包的具体操作，请参见软件包安装。
   ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
   运行环境和沙箱环境禁止安装源码包，因为源码包的多版本策略会破坏基线/资产包的多版本策略，导致将来再装资产包时无法自动激活资产的版本组件。
   
   
 
