1 Star 0 Fork 33

ooooooyun / uapp

forked from uappkit / uapp 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

了解 uapp

uapp 是一个方便 uniapp 离线打包的脚手架工具,类似 cordova, expo, Taro 等项目cli的作用。uapp还包含 uapp-android, uapp-ios 两个平台的模板代码。

开发过程中,很多繁琐的操作用uapp都是一步搞定:

  • 开起一个新项目,通常要修改工程里的很多参数,比如app的名称,版本号, dcloud_key, 微信相关的 appkey 等,人工不仅繁琐,还容易出错,使用 uapp manifest sync 一步搞定。
  • APP发布和开发调试时的配置不完全相同,比如你不能把 debug-server-release.aar 这种调试相关的库发布,那就需要把发布和开发的配置隔离开,uapp已经帮你做好隔离配置,并且很方便通过jenkins实现发布流程的自动化集成,即使不需要也好过手动改来改去,把自己都改晕了。
  • 自己编译个调试基座,还需要手动 COPY 到 HBuilderX 下?用 uapp publish debug 自动编译一步搞定。
  • HBuilderX 编译好的本地APP资源,还需要手动 COPY 到工程里? 用 uapp prepare 一步搞定。
  • 微信开发者平台,DCloud 开发者中心 都需要的签名信息怎么查看,uapp info 一步搞定。
  • uniapp-cli 创建新工程的命令是啥了的,没记住,uapp new xxx 一步搞定。

uniapp 用一套代码,运行到多个平台

uniapp是一个基于Vue同构技术的多平台前端框架,对公司或创业者来说,只需要有一个会Vue的前端,就可以同时写App(android/ios) ,H5,快应用,微信/QQ/抖音/飞书/百度/支付宝等各家小程序,维护一套代码可以发布10多个平台。有以下几大好处:

  • 发布多个平台获取更多流量
  • 一旦熟悉,开发效率极高
  • 至少省 1 / 3 研发成本,商业试错成本更低
  • 即使当前不需要发布多平台,同样花时间写代码,为什么不选择复用价值更高的方法呢

但 uniapp 官方发布的离线包里只有 DEMO,对于一个新的项目,需要手动更改的配置较多,且调试基座和正式发版共用一个配置,维护起来也很不方便。uapp 就是我们在实践了一些产品后,积累的一些经验,分离了调试和发布的配置,也方便通过命令加入自动化集成。

为什么不使用在线打包呢?

uniapp 在线打包,一般无法满足灵活的需求,比如:

  • 没法在团队里实施自动化集成(自动构建、单元测试、发布)。
  • 有些包是冗余的,在线打包不能控制具体打入哪些包。
  • 在线打包有大小限制,超过需要单独付费,因为特别占用官方服务器资源。
  • 写uniapp插件扩展时,必须有离线工程才方便调试,且可以自己控制是否发布插件。我们也是在写 ffmpeg 扩展时,遇到些许不便。

先安装 uappsdk

1、 安装 uapp 命令

npm install -g uapp

# 初始化或更新 uappsdk
uapp sdk init

2、下载 uniapp 离线打包的 SDK

注意和.uappsdk区分开,此处的uniapp离线包的SDK是指dcloud 官方发布的

android 离线打包SDK:

https://nativesupport.dcloud.net.cn/AppDocs/download/android

ios 离线打包SDK:

https://nativesupport.dcloud.net.cn/AppDocs/download/ios

解压其中的SDK目录,放入 .uappsdk 文件夹里,最终 .uappsdk 文件夹结构如下:

> $HOME/.uappsdk/
.
├── android
│   ├── SDK # -> 这里是Android的SDK
│   └── libs
├── ios
│   ├── SDK # -> 这里是iOS的SDK
└── templates
    └── manifest.json

SDK 相关文件都放在当前用户的 $HOME/.uappsdk 目录下。

需要引入哪些模板,请务必仔细阅读官方的 SDK 模块依赖说明,包含多了会影响APP审核,少了会影响功能使用。

.uappsdk 目录下默认包含的第三方依赖包,仅含有微信授权登录,苹果授权登录,基础功能等。不包含广告、通知等相关依赖,因为广告和通知类的sdk,在审核时需要特别提交数据跟踪说明,比较麻烦。

如不是必须,最好不包含。如果确实需要,可以自行手动添加,参照如下模块依赖说明。

android 模块依赖说明:

针对 android,仅需提取必用的依赖包放入 $HOME/.uappsdk/android/libs 里。 https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/android_Library

ios 模块依赖说明:

https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/common

下载离线打包工程源码

1. 下载 Android 离线工程源码

git clone https://github.com/uappkit/uapp-android.git

2. 下载 iOS 离线工程源码

git clone https://github.com/uappkit/uapp-ios.git

iOS 的工程化一直都不太方便,通常都是用的 CocoaPods,但不适合 DCloud离线SDK 的发布形式。经过我们在产品中的不断实践,最终选择了 XCodeGen。

3. 工程下常见命令

# 读取 manifest 中的配置,并更新基本信息
uapp manifest info
uapp manifest sync ${webapp}/src/manifest.json

# 更新 HBuilderX 本地打包资源
# 如果通过 HBuilderX 重新编译,或者通过 uniapp-cli 命令重新编译的资源,可以通过 prepare 命令更新到离线 APP 工程中,用于 APP 重新打包发布。
uapp prepare

# 编译并发布自定义基座到 HBuilderX 下
uapp publish debug

manifest.json 相关配置

注意: uapp.* 参数 是 uapp 根据需要扩展出来的, 非 dcloud 官方标准.

原工程里的 manifest.json 内的参数,大多是给 hbuiderx 在线云打包用的。编译后生成的终极发布包,里面的 manifest.json 已被去除了无关数据,所以不用担心参数暴露问题。

{
  "name": "uapp",
  "appid": "__UNI__ECA8F4D",
  "versionName": "1.0.1",
  "versionCode": "1000000",
  "uapp": {
    "name": "μAppKit",
    "package": "com.code0xff.uapp",
    "android.appkey": "b4ab7d1c668cbb3b257aeeabd75c29da",
    "ios.appkey": "aa215ff1522abe39cb7ccec5943eeb92",
    "prepare.dir": "${SRC}/../dist/build/app",
    "prepare.before": "cd ${SRC}/../ && npm run build:app",
    "prepare.after": "uapp publish debug"
  },
  "app-plus": {
    "distribute": {
      "sdkConfigs": {
        "oauth": {
          "weixin": {
            "appid": "wx95039516c9f72e50",
            "appsecret": "123456",
            "UniversalLinks": "https://uapp.code0xff.com/"
          }
        }
      }
    }
  }
}

🔥 uapp.* 参数说明

👉 不同平台可以用前缀区分

name, package, versionName, versionCode 如果需要平台差异化定义, 可以加前缀 android.xxx, ios.xxx

例如 android.name, android.package, ios.package, ios.versionCode ...

prepare.* 参数内,可以使用 ${SRC}, ${SRC} 为当前 manifest.json 的同级目录,支持加 ../定位上一级目录,避免用绝对路径。

👇👇 👇

uapp.* 参数 说明
name APP名字,不填写默认使用根节点的name。不同平台可以加前缀区分,如 android.name
package 应用的包名。不同平台可以加前缀区分,如 ios.package
android.appkey DCloud平台申请的,Android 平台 dcloud_appkey,下方有申请地址
ios.appkey DCloud平台申请的,iOS 平台 dcloud_appkey,下方有申请地址
versionName App版本名,同上可以加前缀区分不同平台。如 android.versionName
versionCode App版本Code,同上可以加前缀区分不同平台。如 ios.versionCode
prepare.dir (选填) 自定义 uapp prepare 获取编译资源的路径
prepare.before (选填) 在 uapp prepare 执行前的命令。比如可以执行 npm run build:app 先编译 vue 项目
prepare.after (选填) 在 uapp prepare 执行后的命令。比如可以执行 uapp publish debug 发布离线包

如何申请 dcloud_appkey

https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey

如何申请微信 appid

登录微信开发者平台创建APP,审核过后,获取 weixin.appid, weixin.appsecret 等参数,用于微信登录,分享,支付等相关参数

https://open.weixin.qq.com/

跨端开发注意事项

https://uniapp.dcloud.io/matter.html

iOS 苹果授权登录

1、获取到 team_id, client_id, key_id 填入到 jwt/config.json 中,如下:

{
    "team_id": "3DSM494K6L",
    "client_id": "com.code0xff.uapp.login",
    "key_id": "3C7FMSZC8Z"
}

2、登录苹果开发者账号,创建并下载签名文件, 改名为jwt/key.txt。

3、运行 uapp info 命令查看 JWT Token

👉 参考教程: http://help.jwt.code0xff.com

uapp 使用帮助

doc/help.txt

License

The Apache License 2. Please see License File for more information.

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright `Yin Qisen <yinqisen@gmail.com>` Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

uapp 是一个方便 uniapp 离线打包的脚手架工具,类似 cordova, expo, Taro 等项目cli的作用。uapp还包含 uapp-android, uapp-ios 两个平台的模板代码。 展开 收起
NodeJS
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
NodeJS
1
https://gitee.com/xianwenhao/uapp.git
git@gitee.com:xianwenhao/uapp.git
xianwenhao
uapp
uapp
main

搜索帮助