maq
maq
  • 发布:2015-11-28 18:06
  • 更新:2019-12-01 21:56
  • 阅读:9213

如何能做出一个“干净”的离线打包 app?

分类:HBuilder

先说我的观点:现在官方提供的离线打包 SDK,里面的 HBuilder-Hello 并不适合引导产品化的 app 打包操作。

HBuilder-Hello 作为一个演示项目,功能配置很全,对于新用户了解 HBuilder 的能力边界很有帮助,对于在实际开发过程中遇到的某个功能模块的配置使用问题也会有很好的参考意义。

我们的开发团队对于 H5 比较熟悉,而对于 Android/iOS 的原生开发环境并不熟悉,仅限于安装构建环境、创建缺省项目、build、export... 而已。我想,绝大部分选择了 HBuilder 这种“H5 混合模式”来开发移动端应用的开发者可能都差不多是这种情形吧。

HBuilder 确实很强大,所以开发过程本身进行得比较顺利,而在离线打包的环节遇到了不少麻烦。HBuilder-Hello 是一个大而全的套装集合,打包后接近 20M,而一个不使用任何第三方功能模块的 app 最终打包可能不到 3M。然而,从导入 HBuilder-Hello 开始做减法,把第三方功能模块一个一个摘干净,这对于一个并不是特别熟悉原生开发环境的人来说是相当痛苦的。

中间我曾经想改变思路,从零开始做加法,新建一个空项目,再把 Pandora 引进来,但实际结果仍然是步步坎坷。原因很简单,第一我对原生开发环境并不熟悉(Google 的 Android Studio 还算相对简单,Apple 的 XCode 复杂得多),第二我对 HBuilder(或者说是 Pandora)的结构布局并不了解。

虽然是一路跌跌撞撞,但终于还是走下来了。为了对后来者有所帮助,我希望 DCloud 能够对离线打包的支持做一些改进。就我个人的实践体会来说,一个有效的离线打包指南应该包括下面这些内容:

0. 在“离线打包 SDK”中提供一个最简单的 HBuilder-blank 项目,可以没有任何实际功能,但要凸显出如何修改 app 名称、版本、icon、splash。

1a. 在原生开发环境中新建一个空项目,把 HBuilder-blank 项目中的内容分别复制到适当的位置。

1b. 在原生开发环境中打开 HBuilder-blank,并设置修改 app 名称、版本、icon、splash(这个相对简单的事情对于新手来说其实挺茫然的)。

2. 编译、运行、打包、导出。

3. 当需要引入一个第三方功能模块的时候,需要做哪些事情(复制文件、在原生开发环境中的设置、修改 manifest.json 文件)。

其中第 2 步的内容纯粹是原生开发环境的事情,简单提及即可,而其他内容则只能拜托 DCloud 详细提供了,因为这些知识在别的地方是找不到的。

关于第 3 步的内容,现在官方给出的 Feature-Android.xls 和 Feature-iOS.xls 已经很完整地列出了“有哪些”,但对于“怎么做”还缺少一点更直观的引导。

最后再感慨一下,HBuilder 是一个非常用心的产品,希望越做越好!

2015-11-28 18:06 2 条评论 负责人:无 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

附件中有安卓和iOS的纯净的SDK

  • 木子喵

    太感谢啦!~


    2016-01-20 10:23

  • GaGada

    为什么导不进eclipse啊?


    2016-01-20 15:20

  • GaGada

    回复 木子喵:你的能导进eclipse吗?


    2016-01-20 15:34

  • 木子喵

    回复 GaGada:可以呀,是你的eclipse之前有Hbuilder-Hello重名了所以导不进去吧?改一下名字就好了~


    2016-01-20 17:09

  • GaGada

    回复 木子喵:那你离线打包搞定了没?


    2016-01-26 10:06

  • 木子喵

    回复 GaGada:用clean这个有问题,之前的基座没问题


    2016-01-27 20:25

  • 雷穆天

    你好。我在用了你的Clean。然后发现XCode出现报错提示。

    "OBJC_CLASS$_ZipArchive",referenced from:

    Objc-class-ref in liblibPDRCore.a(DCSAAppResManager.o)

    Objc-class-ref in liblibPDRCore.a(PDRCoreAppManager.o)

    Objc-class-ref in liblibPDRCore.a(PDRCoreApp.o)

    Symbol(s) not found for architectrue x86_64


    请问这个是要加什么框架进去,还是要怎么操作啊?如何解决这个问题?


    2016-04-13 12:43

木子喵

木子喵

赞同!

GaGada

GaGada

请问有没有相对干净的演示项目,不知道怎么去除HBuilder-Hello里面多余的东西,打包出来好大...

GaGada

GaGada

非常感谢!!

wenju

wenju - https://www.mescroll.com -- 精致的下拉刷新和上拉加载组件

昨天正想回答你的这个问题的 今天还没来得及写完 官方就给出了案例 ~ 我也就不写啦;

关于Android的案例,官方给的是Runtime集成方式,类似于HBuilder的云打包,应该符合你的需求了;

如果你的app有一部分界面是原生写的,另外一部分是html写的,想把html写的集成到原生项目,这时就得用widget方式集成;可参考官方的http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/81
如果看不懂的话 再叫官方整个干净的widget案例吧 哈哈; 或者如果需要,我可以帮忙整理一个~

wenju

wenju - https://www.mescroll.com -- 精致的下拉刷新和上拉加载组件

@诸葛亮七进七出 我已经写了个案例哦 http://ask.dcloud.net.cn/article/526

小苏

小苏

mark

4***@qq.com
2***@qq.com

2***@qq.com - 部落冲突 buluo.cc

顶下

s***@126.com

s***@126.com

顶!就打包这个事情我搞了两天,从hbuild-hello里面开始删,删完之后还有十几兆

  • skysowe

    你不顶起来,不知道这个问题2015年就有人提了,到现在官方文档里还是老的例子hbuilde-hello,不熟悉原生开发的人,离线打包真的很痛苦,不敢随便删项目里的配置文件,又不知道自己是否修改了所有该修改的地方!!!楼里面有些朋友回复的,我回头再仔细看一下。


    好不容易把hbuilder-hello打包成功,但是如何替换成自己的,还是问题很多!


    2017-07-19 08:45

6***@qq.com

6***@qq.com - 90后

文章一针见血,我也遇到这个困惑了,大神那现在怎么才能创建一个纯净版的离线打包的“壳子呢”,求指教

d***@126.com

d***@126.com

撑撑撑撑

飞刀英雄

飞刀英雄 - 一辈子只做一件事

你说的这个确实是事实,因为官方已经配置好了android studio工程基础版,基础版比较臃肿,对于小白们只能在这个基础上进行配置,实现android离线打包。但我经过自己研究,已经实现不依赖基础版,从0开始实现android离线打包。可以参考:http://www.xiaotiaogou.com/mui003.php

该问题目前已经被锁定, 无法添加新回复