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

CH340以及CH系列USB转串口驱动下载

在之前使用USB转串口时,很多时候大家可能会不知道去哪下载驱动,然后百度随便下载一个,但往往鱼龙混杂且版本不一,所以今天特意整理一下CH340驱动以及CH系列的官方驱动下载地址,方便大家进行下载也方便自己后期查找,所有链接皆指向官方下载链接,每次下载都可获取官方当前最新驱动。 CH340/CH341 Windows驱动下载链接:CH341SER.EXE下载链接 Linux驱动下载链接:CH341SER_LINUX.ZIP下载链接 Andr...

OIDCAT的博客 4万+

【Linux】Petalinux使用QSPI FLASH引导启动

1. 预分配Flash空间使用Flash引导Petalinux做的系统,也有进阶的做法。部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。1. 预分配Flash空间根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。

Tesseract_9527的博客 3375

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

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

xishaoguo的博客 7208

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

本文提供了一份详细的GMT6.1绘制地形起伏图的保姆级教程,从环境搭建到数据下载,再到核心绘图命令解析,帮助用户避开常见错误。特别适合科研人员和地理信息爱好者快速掌握专业地形图的绘制技巧,提升工作效率。

weixin_42549723的博客 277

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

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

qzo_smile的博客 5455

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测

本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。

weixin_29207149的博客 95

学习利用ce修改游戏生命参数

易语言代码 游戏的简陋界面 用ce查找存储这个1000即生命值的内存地址(得先附加到目标程序上,点击左上角那个电脑按钮) 看到有很多值为1000的,但哪个是生命值呢?真相只有一个 我们点击一下打我这个按钮,看下面的ce界面上地址为004A65C0处的值变了,所以这个就是我们要找的生命值 接下来我们对生命值进行修改,修改为99

zsd747289639的博客 5万+

uniapp的iOS本地打包指南

uniapp的iOS本地打包指南

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

别再羡慕专业版!用这个批处理脚本,一键给Win11家庭版装上官方沙盒

本文详细介绍了如何通过批处理脚本在Windows 11家庭版上安装官方Windows沙盒(Windows Sandbox),无需复杂操作即可享受专业版功能。脚本自动激活系统内置组件,提供安全隔离的虚拟化环境,适用于软件测试、安全浏览等场景。

weixin_26757925的博客 495

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

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

longlongValue 7707

LVGL在单色屏上运行

本文主要讲述LVGL在单色屏应用中的实现思路,并已验证通过。网上关于lvgl移植的文章有很多了,本文不加以赘述。

weixin_43278295的博客 4462

若依框架二次开发——RuoYi-AI 本地部署流程

若依框架二次开发——RuoYi-AI 本地部署流程

bjzhang75的博客 1784

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

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

Demon's blog 309

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

Pepper的专栏 238

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

uniapp 本地离线打ios包

qq_40056142的博客 606

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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、付费专栏及课程。

余额充值