本人面向ios小白,大佬勿看轻喷。
IOS离线打包部分
离线打包分为三部分:
mac端操作:command键相当于windows的ctrl键,在虚拟机虚拟机内按win键,例如复制粘贴操作就是win+c、win+v。
在Dcloud网站上可以下载到最新的资源
https://nativesupport.dcloud.net.cn/AppDocs/download/ios
我这里用的是mac os x 10.15 、xcode 11.4
Dcloud官网有写配置过程,但写的不是很清楚(导致我跌了非常多的坑),他们的教程在这。
https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/41?tdsourcetag=s_pctim_aiomsg
在mac系统解压开文件(在win系统解压会额外得到一个_MACOSX文件夹,那个无用可以直接删除)。
打开解压后得到的文件夹:
做标记的可以删除。
Feature-ios.xls:后期配置模块的excel表格。
Hbuilder-hello:工程文件主体。
Hbuilder-integrate:原生开发文件,暂时无用,后期第三方sdk开发用使用。
Resources:放资源文件的文件夹,这几个文件夹的资源都共用这一个文件夹,导致该文件夹非常大,无用资源很多,但必须保留。
打开xcode,欢迎界面如下:
若未弹出欢迎界面,则点击
点击
打开如图所示工程,也可以双击后缀名为xcodeproj的文件直接打开该工程。
首先先修改工程名,依次点击如图所示区域,修改工程名,修改完成后按enter确认修改。
Xcode会自动找到关联文件,一起修改名字,点击rename。这里我把工程名字改成了example。
点击produc,可以看到目前的应用名称,也将其修改成自己想要的,选中TARGETS,按下tab键修改。
应用的名字变成红色没关系,过一会就会边回白色。
在外部打开该工程的文件夹,找到Pandora文件夹打开,打开apps文件夹,删除该文件夹里的所有文件。
把自己的h5工程复制进去,重命名工程为www。
打开h5工程中的manifest.json文件,将”id”所对应的值复制,在www的同级目录创建一个文件夹,文件夹名改为改值,将www放进去
最后正确的顺序因为pandora-apps-id对应的值-www-h5工程里的所有文件。
回到xcode,点击TARGET,再点击General,如图所示
Display name 对应name。
Bundle identifier对应id,并且必须在id前加上io.dcloud.xxxxx,例如io.dcloud.HBuilder。
Version对应version中的name。
Build对应version中的code(若manifest内该值为空,则需要随便添加一个值,xcode必须与之对应)。
点击TARGETS,选择build settings,搜索packaging。
在Product bundle identifier这一行,双击把值改成你的Bundle identifier。
再回去general发现值变了,并且也可以修改。
左侧目录点击Supporting Files-control.xml文件
将appid改成你的bundle identifier,且不带io.dcloud,appver改成你的版本号version
例如:
这步很关键,不然进入之后会白屏。修改完成后command+s保存
证书的安装
Ios端有两种证书:p12、mobileprovision,都是通过双击证书文件安装,在“钥匙串”中可以查看(在访达中-应用程序-实用工具-钥匙串访问)。
将你的targets-signing里的signing(debug)、signing(release)都改成对应的证书。
Build settings内搜索signing,将signing部分的code signing identity和development team也改成证书及证书对应的研发团队。这步涉及隐私,在这就不过多描述。
将project里build settings里的signing也改成对应的证书。
修改图标和进入画面
点击targets-genera-app icons and launch images-app icons source ,点击右方的箭头,
打开存放图标的文件夹,将图标拖动至对应尺寸的图标上即可。
若尺寸不对应它会给出提示,需要多少x多少尺寸的图标。
最后一个1024*1024的是用于app store的,没有也没事,空着。
(在xcode内黄色感叹号并不影响程序运行,红色感叹号则需排查)。
设置进场画面,点击targets-general-launch screen file,从2020年4月开始,苹果不在允许使用图片类型的格式作为进场画面,必须提供storyboard。
我们可以选择已有的storyboard,并修改对应的launch screen。
单击launchscreen文件(打开时间比较久),对它进行修改,使用起来非常简单,在这就不过多描述,有些操作需要英文比较好。
国际化配置
在该离线工程对国际化进行了配置,导致最后手机上生成的app名字并不是自己设定好的。
方法如下:
删除这两个文件中的这行语句即可(一个是英文环境,一个是简体中文环境),修改完成后记得command+s保存。
运行
点击左上方,选择你想运行的测试环境。
第一个为真机测试。
第二个为通用ios设备。
以下的ios simulators为ios模拟器,xcode自带模拟器,不过启动起来稍卡。
运行之前可以试着执行product-clean build folder操作,对xcode执行一个类似clean的操作,释放缓存。
问题表:
试着clean build folder 或重启xcode即可解决。
证书问题,具体情况具体分析。
有可能是手机上面的证书问题,通用-设备管理-企业级应用-删除应用,重新真机运行。
通用-设备管理-企业级应用-信任,重新启动该程序即可。
配置模块
App在运行的时候可能会出现这种问题:
这时候就需要配置模块。Dcloud有给出详细的教学但不是很友好。
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/common
这里再说明一下。
打开起初解压文件里面拿到Feature-iOS.xls文件,这里以push推送模块为例,找到提醒未添加的push模块所在行。
找到属于你的模块所需要的具体内容,像我这边的push模块实际上需要的是个推的东西。
可以看到这里有4个地方需要配置成和图上一样。
Linker Flags
在targets内点击build settings搜索linking,双击other linker flags的值,在弹出来的框里点击加号输入excel内对应的值,一次只能添加一条,如果有多个则多次添加。
如图所示
Library(.a)和Framework
配置library和framework需要在工程内创建一个libs的group(黄色文件夹叫group,蓝色的是folder),如图。
在我们解压出来的resource文件夹内打开libs,所搜对应的library和framework,如我的个推需要的就是这些内容,找到以后全部拷贝到libs文件夹。
节约时间这里我只拷贝了一个。
回到xcode中,右键libs,add files to “工程名”。
选中文件点击add(按住win键点击可以复选,相当于windows的ctrl复选,注意不要重复添加)。
可以看到已经添加进来了。
可以看到你的general的frameworks,libraries,and embedded content中已经自动添加了刚刚配置的文件。
若没有则需要手动添加。
点击frameworks,libraries,and embedded content最底部的加号键
在弹出框里添加刚刚配置的文件就好。
注意已经添加的文件不会出现在里面。
Framework也是同理,在build phases内的link binary with libraries内添加。也是会自动添加,若失败则拉到底部用加号添加。
Info
在info下找到对应的键,写入对应的值(若不知道值为多少,且h5工程已配置好,可以看h5工程中manifest的配置,与之对应)。
XCODE文件打包部分
本文针对xcode11的打包,推荐设置为generic ios device,通用ios环境下打包。
推荐使用release模式,点击product-scheme-edit scheme
如图设置。
点击product-archive
需要等待一定的时间
点击distribute app
选择对应的导出选项,我这里选择了组织,点击next。
在这个界面等待转圈结束。
若出现,如图所示的提示,很有可能是你的framework中出现了i386,x86_86这个架构(没有可跳过)。具体解决方案可以看
https://blog.csdn.net/bitcser/article/details/105156142
这位的文章。
把i386,x86_86架构移除后重新archive
配置好相关的证书,no profile required说明不需要相关证书,然后点击next。
等待。。。。。
确认信息信息无误后点击export
选择要导出的位置,点击export即可。
最后在导出的文件夹里看到ipa文件,那个就是安装包了,其他的日志文件等可以不需要。