uni-app实现XCode苹果本地离线打包APP

uni-app项目离线打包之iOS(零基础教程) uni-app项目离线打包 uni-app项目离线打包官方文档 - 点击跳转 当我们需要使用原生开发时,需要对uni-app项目使用离线打包方式进行调试运行及打包。 以下将简单整理uni-app项目离线打包iOS应用相关流程,让你对整个流程有一个大体的了解。 离线打包流程 一、下载编译 使用Xcode应用打开SDK包中的HBuilder-Hello项目。 下载好SDK包并解压,最新iOS平台SDK下载。 在解压文件夹中双击项目文件:HBuilder-Hello>HBuilder-Hello.x 阅读详情
AI摘要

本文详细介绍使用uni-app和XCode进行苹果APP离线打包的步骤。从安装配置HBuilderX到解决打包过程中的常见问题,如引用第三方库导致的错误等。特别针对苹果系统和XCode更新后的环境进行了说明。

uni-app实现XCode苹果本地离线打包APP

本文适用无其他任何功能的离线打包,其余功能,请关注后续文章
坑:苹果系统和xcode升级后,以为插件引用了第三方包,同一操作打包,报错AMapFoundationKit/AMapFoundationKit.h' file not found,其实已经引用过文件了
在这里插入图片描述

参考

1、前提

1.已安装某版本的HBuilderX(以最新3.1.18为例),
2.已安装xcode,
3.有代码已能调试运行
4.注册HBuilder账号
5.有Appkey:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey
6.已有苹果的证书

2、官方打包指南入口

1.官方离线打包指南: https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios
2.HBuilderX入口如下:
在这里插入图片描述

3、生成WWW文件

登录HBuilder账号,配置manifest.json,DCloud appid登录后点击“重新获取” ,再点发行,原生APP-本地打包,生成本地打包App资源
在这里插入图片描述

4、解压,xcode打开项目

在这里插入图片描述

5、修改基本配置

以com.test.aytestcc为例:

com.test.aytestcc

在这里插入图片描述

6、修改证书

根据APPstore 生成的证书,选择调试和发布版本的证书
在这里插入图片描述
配置签名证书相应的设置
在这里插入图片描述

6、修改图标、启动图

图标
在这里插入图片描述
若有已有包,可以选中show in finder,把新项目的APPIcon删除,把旧的APPIcon.appiconset拖过去
在这里插入图片描述
启动图:先拖图片,后建View
把需要用到的启动图拖到Images.xcassets下
在这里插入图片描述
往LaunchScreen.storyboard中View添加Image View

在这里插入图片描述
设置图片大小
在这里插入图片描述
选择图片做为启动图
在这里插入图片描述

7、修改APP名称

设置离线APPid
在这里插入图片描述

8、添加包和值

添加值
在这里插入图片描述
添加包
在这里插入图片描述
添加系统库可以直接搜,添加即可,添加SDK中有的依赖需要选Add Files,一般依赖库在sdk的Libs,依赖资源在Bundles里
在这里插入图片描述
其中依赖资源很容易被忽略,这个标的不准,有的是sdk里面的内容,标在系统库,找不到的时候,都找找,总之还是有坑。。。
若没看到文件,就从弹框的左上角,一路选下去,选到相应版本的sdk目录

9、运行生成

10、其他模块

10.1 接入搜索关键字

10.1.1 引入定位及地图所需文件
10.1.2 新建及修改文件

需要修改的文件位置及文件如下:(GKSearchInfo为新建class,一直选默认的就好)

在这里插入图片描述

10.1.2.1 GKSearchInfo

GKSearchInfo.h

#import <Foundation/Foundation.h>

typedef void (^SearchResultBlock)(NSArray *arr);

@interface GKSearchInfo : NSObject


+ (instancetype)shareInstance;

- (void)searchKeyInfo:(NSString *)key resultBlock:(SearchResultBlock)resultBlock;
@end

GKSearchInfo.m

#import "GKSearchInfo.h"
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <AMapSearchKit/AMapSearchKit.h>

@interface GKSearchInfo ()<AMapSearchDelegate>

@property (nonatomic,copy)SearchResultBlock searchtResultBlock;
@property (nonatomic,strong)AMapPOIKeywordsSearchRequest *searchRequest;
@property (nonatomic,strong)AMapSearchAPI *search;
@end

static GKSearchInfo * _keyInfo = nil;

@implementation GKSearchInfo

+ (instancetype)shareInstance
{
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
       _keyInfo = [[GKSearchInfo alloc] init];
   });
   return _keyInfo;
}
- (void)searchKeyInfo:(NSString *)key resultBlock:(SearchResultBlock)resultBlock
{
  
   // 先进行在线建议查询
   [self suggestionSearchWithKey:key];
   self.searchtResultBlock = resultBlock;
}

- (void)suggestionSearchWithKey:(NSString *)key
{
   if(!self.search){
       self.search = [[AMapSearchAPI alloc] init];
      
   }
   if (!self.searchRequest) {
       self.searchRequest = [[AMapPOIKeywordsSearchRequest alloc] init];
   }
   self.search.delegate = self;
   self.searchRequest.keywords            =  key;
   self.searchRequest.city                = @"城市";
//    self.searchRequest.types               = @"类型";
   self.searchRequest.requireExtension    = YES;
   [self.search AMapPOIKeywordsSearch:self.searchRequest];
}

#pragma mark - BMKSuggestionSearchDelegate

/* POI 搜索回调. */
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response
{
   if (response.pois.count == 0)
   {
       return;
   }else{
       NSMutableArray *mutArr = [NSMutableArray new];
       for (AMapAOI *aoi in response.pois) {
           NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithCapacity:0];
           [dic setObject:@(aoi.location.latitude) forKey:@"lat"];
           [dic setObject:@(aoi.location.longitude) forKey:@"lng"];
           NSString *keyList = aoi.name;
           [dic setValue:keyList forKey:@"keyword"];
           [mutArr addObject:dic];
       }
       !self.searchtResultBlock?:self.searchtResultBlock(mutArr);
   
   }
}

- (void)AMapSearchRequest:(id)request didFailWithError:(NSError *)error{
   NSLog(@"%@",error);
}

@end

10.1.2.2 TestModule

TestModule.h

#import <Foundation/Foundation.h>
#import "DCUniModule.h"

NS_ASSUME_NONNULL_BEGIN

@interface TestModule : DCUniModule

@end

NS_ASSUME_NONNULL_END

TestModule.m

#import "TestModule.h"
#import "GKSearchInfo.h"

@implementation TestModule

// 通过宏 UNI_EXPORT_METHOD 将异步方法暴露给 js 端
UNI_EXPORT_METHOD(@selector(testAsyncFunc:callback:))

/// 异步方法(注:异步方法会在主线程(UI线程)执行)
/// @param options js 端调用方法时传递的参数
/// @param callback 回调方法,回传参数给 js 端
- (void)testAsyncFunc:(NSDictionary *)options callback:(UniModuleKeepAliveCallback)callback {
   // options 为 js 端调用此方法时传递的参数
   if (!options[@"key"]) {
       return;
   }
  
   [[GKSearchInfo shareInstance] searchKeyInfo:options[@"key"] resultBlock:^(NSArray *arr) {
       if (callback) {
           // 第一个参数为回传给js端的数据,第二个参数为标识,表示该回调方法是否支持多次调用,如果原生端需要多次回调js端则第二个参数传 YES;
           callback(arr,NO);
       }
   }];
}

// 通过宏 UNI_EXPORT_METHOD_SYNC 将同步方法暴露给 js 端
UNI_EXPORT_METHOD_SYNC(@selector(testSyncFunc:))

/// 同步方法(注:同步方法会在 js 线程执行)
/// @param options js 端调用方法时传递的参数
- (NSString *)testSyncFunc:(NSDictionary *)options {
   // options 为 js 端调用此方法时传递的参数
   NSLog(@"%@",options);

   /*
    可以在该方法中实现原生功能,然后直接通过 return 返回参数给 js
    */

   // 同步返回参数给 js 端 注:只支持返回 String 或 NSDictionary (map) 类型
   return @"success";
}

@end
10.1.2.3 AppDelegate.m

初始化sdk的高德key, 添加代码位置如下图:
在这里插入图片描述

#import <AMapFoundationKit/AMapFoundationKit.h>
[AMapServices sharedServices].apiKey = @"申请对应应用的高德的苹果的key";

申请高德key链接

有疑问

微信小程序联系客服,及时沟通
地图轨迹预览效果

扫描公众号,了解更多实例与资源免费分享:
实例分享

参考

前辈传授及官方指南摸索所得
远程控制苹果设置

Uniapp在IOS系统打包测试流程 总的来说,UniApp 在 iOS 系统上的打包测试流程涉及到环境搭建、项目创建、配置信息、调试测试、打包编译、Xcode 配置、设备连接、发布上架等多个步骤。通过逐步完成这些步骤,您可以成功将 UniApp 应用在 iOS 设备上进行打包测试,并最终发布到 App Store 中。当应用开发完成后,您需要进行编译打包操作,生成可在 iOS 设备上安装的应用包。在 UniApp 项目中,您需要编辑 manifest.json 文件,配置应用的基本信息,如应用名称、图标、启动页等。 阅读详情

相关推荐

uniapp离线打包保姆级教程(安卓+IOS)

Uniapp离线打包保姆级教程(2026最新版) 本文详细介绍了Uniapp离线打包的完整流程,解决云端打包排队久、次数受限、体积超限等问题。内容涵盖: 核心优势:离线打包速度快、无次数限制、可自定义原生配置、安全性高 准备工作: 工具清单(HBuilderX、离线SDK、AndroidStudio/Xcode) 版本匹配要点(避免白屏闪退) 证书与离线打包Key获取 详细操作: Android平台:资源生成、SDK配置、签名设置 iOS平台:Xcode工程配置、证书管理 常见问题:白屏、体积过大、网络权限

斌味代码的博客 1943

uniapp-IOS本地离线打包

uniapp IOS本地离线打包步骤和常见问题的解决方法

qq_39377906的博客 2625

uniapp离线打包升级SDK(iOS端)

uniapp离线打包升级SDK

Baron_007的博客 3156

Uniapp iOS 本地离线打包(详细流程)

App离线SDK暂时不支持Swift,依然使用的是Object-C,未来不清楚。uniapp提供了云打包与本地打包两种方案,云打包需要排队且还有次数限制,本地打包则就没有这些限制,而且会本地打包对开发原生插件有很大的帮助。细节:需要Xcode打包的时候,记得先通过工具栏的Product -> 先 Clean Buidl Folder... -> 再 Build -> 最后再打包或运行,生成基座或者测试离线包都适用这套流程。可以使用快捷键,先,再,再打包或运行。

卡尔特斯 7183

从零到一:UniApp离线SDK打包iOS App实战避坑指南

本文详细介绍了使用UniApp离线SDK打包iOS App的实战避坑指南,涵盖环境准备、项目配置、资源打包和编译调试等关键步骤。特别针对Xcode版本兼容、权限管理、Bundle ID设置等常见问题提供解决方案,帮助开发者高效完成App打包,避免常见错误。

weixin_33738555的博客 342

uniapp ios app离线打包 - 配置

进行UniApp 插件开发之前, 建议先认真阅读一遍官方的开发文档。真正阅读过了,可以少踩很多坑。本文介绍插件开发前的准备及iOS工程的一些配置和需要注意的事项。 官方文档: iOS插件开发教程 iOS原生工程配置 首先,需要去UniApp官网创建一个开发者账号 注册开发者 登录开发者中心 App的创建 AppKey的生成 AppId 的配置 AppKey的配置

Rey的技术博客 3208

uni-app 本地打包 ios app

将下载的SDK包解压,里面有一个HBuilder-Hello文件夹,将这个文件夹单独拖出来(可以不拖出来,我为了清晰一点给它单独拖到桌面上),注意这个文件夹里包含了一个名为HBuilder-Hello.xcodeproj的文件,不要拖错了,文件夹里还有一个同名文件夹的。,在应用管理中选择要打包的这个应用,点击各平台信息,生成离线打包key,点击查看,复制APP Key,将其黏贴到dcloud_appkey一项中。按需选择配置项,建议选择测试手机的机型或全机型,然后一路next,最后export。

NotBad_的博客 1171

uniapp - 实现苹果App打包上架App Store应用商店详细教程,详解Hbuilder打包编译ipa发布上传到苹果ios软件商店全流程,提供云打包/离线本地打包ios、申请IOS苹果证书方法

uni-app,苹果ios,苹果app,打包编译,appstore应用商店,ipa发布到软件商店,uniapp的app苹果应用商店上架,上架苹果APPStore,uniApp打包的ipa文件上传到商店,上架苹果商城,审核失败,被拒绝,UniApp打包ipa文件,上架iOSAppStore流程指南,最新详细教程最全,Hbuilder打包发布iosapp,苹果云打包上线全过程,云打包IPA并上传到商店,打包iOSipa文件后怎么发布到应用商店,苹果证书申请教程,ios证书申请,mac电脑,审核很久

🏆 前端领域优质创作者 1万+

用Xcode实现对iOS的离线打包

用Xcode实现对iOS的离线打包 这个链接有一个相对详细的教程 但有一些小的地方没有写的很详细 很容易导致配置过程报错 接下来我将结合下面的链接对iOS的离线打包做一些补充 https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios 一 开发环境 二 SDK目录说明 补充说明:SDK完整目录结构 三 配置工程 补充说明: 上图说“找到HBuilder-Hello文件夹,并打开原生工程,然后准备配置工程”, 但实际上如果只是对App离线SDK压缩包解

weixin_42440878的博客 1021

简单说说Python中的pip如何换源

【安装包】:pip install 【升级包】:pip install --upgrade 【卸载包】:pip uninstall 【查看已安装的包】:pip list【搜索包】:pip search (注意:pip search功能在pip 10.0.0之后被弃用,建议使用其他方式搜索包,如访问PyPI官网或使用其他搜索引擎)

一捌柒的博客 2667

模拟波束赋形 vs 数字波束赋形:5G天线设计中的成本与性能权衡

本文深入剖析了5G天线设计中模拟波束赋形与数字波束赋形的核心差异,重点探讨了二者在硬件成本、功耗、网络覆盖能力和频谱效率等方面的权衡。文章指出,模拟方案成本低但灵活性有限,数字方案性能强大但代价高昂,而混合波束赋形已成为主流折中方案。决策需紧密结合具体的部署场景、性能要求和总拥有成本进行综合考量。

weixin_28432777的博客 840

uni-app开发ios,免费真机测试,发布全流程

uni-app开发ios应用,免费真机调试,全流程

xishaoguo的博客 7208

基于LORA的双机通信的智能农业系统

通过LoRa模块与主机进行通信,监测环境中的温度、湿度、土壤湿度和光照强度等参数,并根据预设的自动控制逻辑或者手动指令控制继电器开关,从而调节风扇、加热器、水泵、喷雾器和灯光等设备,为植物提供适宜的生长环境。使用的Lora是大夏龙雀的感觉这个是我使用过的Lora里面最好用的,因为不用设置频道就可以直接透明传输,使用起来得心应手。就像两个单片机直接串口通信一样,缺点是异步串行,不能同时进行接收和发送。继电器灯亮模拟打开对应的风扇、水泵、灯、喷雾、加热。1.使用温度传感器测当前环境的温湿度。

ssjsjss的博客 1739

uniapp打包离线App(ios) 实测可行

uniapp打包原生App(ios) 实测可行,加油!

qzo_smile的博客 5455

【机器视觉】Halcon 最新版本安装教程(HALCON 24.11.1.1 Progress-Steady)

注:如果使用评估版本,下载前先了解最新评估授权密钥所支持的版本。。近几年不同版本安装过程类似,均可参考本教程。

OpenSeek的博客 3万+

RLC电阻电容电感基础知识——电感篇

电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω

azj2019的博客 1万+

uniapp的iOS本地打包指南

uniapp的iOS本地打包指南

我的ID:sumer-work(全网同名)昵称:程序员SUMER(全网同名) 2579

Coze HTTP请求节点实战:5分钟搞定天气API对接(含动态参数技巧)

本文通过一个天气预报API对接的实战案例,详细讲解了如何在Coze平台使用HTTP请求节点实现外部数据交互。文章重点演示了动态参数传递、JSON响应解析与错误处理等核心技巧,帮助开发者在5分钟内快速构建稳定可靠的智能体外部服务调用能力。

weixin_29233333的博客 676

iOS混合开发之uni-app本地打包集成到iOS原生项目

iOS混合开发1.前言2.项目背景3.项目框架4.从入坑到踩坑5.从踩坑到挖坑 1.前言     前端统一开发越来越多,公司为了大一统前端的所有页面显示问题,同时为节约人力资源成本,决定做前端统一开发的预研以及选型。 2.项目背景     经过几次讨论后决定前端统一开发选型方案从以下几种方式进行: flutter reactnative uniapp ionic 各统一开发方案的优劣势与选型结...

longlongValue 7707

LVGL 实战:倒计时翻页钟

环境:LVGL 9.x + PC 模拟器。每个数字做成上下两半的卡片,秒变时用绕中缝翻页:上半旧页折叠下去、下半新页展开上来,配合阴影遮罩做出立体感。从 02:00 倒计时到 0,闪一下再重置。界面文案用英文(默认字体无中文)。

摸鱼专家 213

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

uni-app 安卓 iOS 离线打包参考

UniApp 离线打包安卓应用指南摘要(150字): 本文整理了UniApp安卓应用离线打包的完整流程。开发者需先配置原生工程环境,通过DCloud官方文档获取AppKey并进行基础设置。离线打包需要准备Android Studio开发环境,配置gradle构建文件,并正确处理原生插件依赖。与云打包相比,离线打包更适合需要深度原生定制的项目。常见问题包括签名配置错误、资源合并冲突及权限设置不当等。文中还提供了详细的排错方法和注意事项,帮助开发者顺利完成本地编译打包流程。

Demon's blog 309

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

uni-app 安卓与iOS离线打包实战:从环境搭建到应用发布全流程解析

本文详细解析了uni-app安卓与iOS离线打包的全流程,从环境准备、SDK下载到应用发布。重点介绍了Android Studio和Xcode的环境配置、资源替换、签名设置以及常见问题排查,帮助开发者掌握uni-app离线打包的核心技术,提升应用开发效率。

Pepper的专栏 238

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

uniapp 本地离线打包IOS (mac环境)

uniapp 本地离线打ios包

qq_40056142的博客 606

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

uniapp离线打包ios端苹果应用内支付配置

本文介绍了uniapp离线打包iOS应用内支付(IAP)的集成流程:1)在Xcode中配置feature.plist文件并添加支付模块所需的.a文件和框架;2)在苹果开发者后台配置内购产品,确保产品状态为"准备提交";3)前端调用支付模块时需传入产品ID数组,支付成功后需将参数发送至服务端进行二次验证。文中包含详细的配置截图和注意事项,指导开发者完成从开发环境配置到完整IAP接入过程。

zhu_hangfeng的博客 354

uni-app iOS 原生资源与 Info.plist 配置实战:云端打包下的 Bundle Resources、Capabilities 与 Watch App 嵌入

本篇技术指南围绕 uni-app 项目的 iOS 原生配置能力展开,核心讲解如何通过 `Info.plist`、`UniApp.entitlements`、`PrivacyInfo.xcprivacy` 与 `nativeResources/ios` 资源目录,在云端打包链路中定制 iOS 应用的权限描述、URL Scheme、横竖屏、系统 Capabilities、隐私清单、Bundle 资源乃

gitblog_00636的博客 394
上一篇: SQL Server 查询慢
下一篇: uni-app及uniCloud开发
wx_h13813744
博客等级 码龄10年 290粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wx_h13813744

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值