IOS cordova 打包插件问题

news/2024/7/20 20:54:16 标签: ios, objective-c, cordova

一、新建测试项目

新建Cordova项目并添加ios平台
新建测试项目

cordova create testCoco com.jyy.testCoco testCoco

cd testCoco

cordova platform add ios

二、自定义插件

1、生成插件

npm install -g plugman
plugman create --name [插件名字] --plugin_id [插件id] --plug_version [插件版本号]

直接cordova plugin add 会报错,需要package.json文件

cd [插件目录]
plugman createpackagejson [插件路径]

可能会报权限不足,加一个sudo就可以了,插件路径可以直接把插件文件夹拖进终端窗口,就可以自动填充插件路径

sudo plugman createpackagejson [插件路径]

然后一直回车,就可以创建完成,之后再继续下面的步骤

2、添加插件

添加插件报错

cordova plugin add /Users/ecidi/Desktop/jyyWorkSpace/jyyLearnPack/SuperMap

解决办法:
由于官方https://github.com/CocoaPods/Specs.git下载太慢,使用清华镜像,https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git
https://mirrors.tuna.tsinghua.edu.cn/help/CocoaPods/参考镜像源给出的方案,执行以下命令

镜像源使用帮助报以下错误git clone失败
参考网上解决方案,设置git config --global http.postBuffer 1048576000,之后再进行git clone,报下面的错误
git clone 报错2
改用手机热点就可以下载成功,有条件可以开启网络代理工具
总结: 镜像、热点 或者 网络代理工具

三、测试插件

打开项目,编译失败

① 找不到第三方库头文件

解决:
在插件plugin.xml中增加 framework 标签将库引入,如果是pod引入的,需要新增一条pod内容,然后重新生成插件

<framework src="src/ios/frameworks/SuperMap.framework" custom="true"/>
<podspec>
    <config>
        <source url="https://github.com/brightcove/BrightcoveSpecs.git" />
        <source url="https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git" />
     </config>
     <pods>
         <pod name="RATreeView" spec="~> 2.1.2" />
         <pod name="Masonry" />
     </pods>
 </podspec>

② 找不到pod库, Library not found for -l*

解决:

临时方案: 这个问题要么是多了要么是少了,查看 Library Search Paths ,多删少补

根本解决: 我发现重新建项目引入插件,之后不打开xcodeproj文件,而是直接打开xcworkspace文件再进行编译就不会报这个错,如果不想重新建项目,可以试试把 Developer/Xcode/DerivedData 文件夹下关于这个项目的内容删除掉,用xcode重新打开

③ for in循环报错,如下图

for in循环报错信息
解决:

临时方案: 将 for( : ) 改为 for( in )

根本解决: 因为是语言问题,我灵机一动在xcode -> build Settings 里搜索了下 language,然后修改 Compile Sources As 为 Objective-C++ ,就不会再编译报错了。

④ libc abi.dylib: __cxa_guard_acquire detected deadlock

解决:

临时方案: 我这里使用了超图框架,重新导入SuperMap.bundle即可

根本解决: 之前在plugin.xml中使用的是framework标签,每次都需要重新导入SuperMap.bundle,经过一番百度之后,改用了resource-file标签,解决问题

<framework src="src/ios/frameworks/SuperMap.bundle" />
<resource-file src="src/ios/frameworks/SuperMap.bundle" />

⑤ Control may reach end of non-void function

解决:

临时方案: 这里报错的是RATreeView 一个 switch case循环,增加default返回即可

根本解决:

1、这里我看了下Github上的issues,的确是有人提这个问题的,解决方案是本地修改一下或者引用别人github上修改好的代码
2、我这里只是在plugin.xml 中 pods标签加了inhibit-all-warnings="true",就神奇的不报错了,inhibit-all-warnings禁止显示警告,这个要慎用,这里用的第三方库,所以影响不是很大,但不嫌麻烦的话最好还是使用方案1
<podspec>
	<config>
		<!--  这里就不写了 -->
	</config>
	<pods inhibit-all-warnings="true">     <!-- 增加此配置 -->
		<pod name="RATreeView" spec="~> 2.1.2" />
	</pods>
</podspec>

⑥ undefined symbol: _utf8_nextCharSafeBody

解决:

临时方案: 在 Build Phases -> Link Binary With Libraries 中添加libicucore.tdb

根本解决: 在plugin.xml中引入此依赖

<framework src="libicucore.tbd">

⑦ .a 库报未找到

解决:

临时方案: 在 Build Settings-> Search Paths -> Library Search Paths 中添加 $(SRCROOT) recursive

根本解决: 查了下网上大家都是怎么引入.a库的,然后试了下修改plugin.xml 的内容,就解决了,随后查看了下Library Search Paths中,的确是比之前多了 .a库所在的文件夹
原先:

<framework src="src/ios/frameworks/libAsHttpRequest.a" custom="true">

修改为:

<source-file src="src/ios/frameworks/libAsHttpRequest.a" framework="true">

http://www.niftyadmin.cn/n/741572.html

相关文章

mysql 5.7 自动重连_Windows下mysql5.7.18安装配置教程

本文为大家分享了Windows下mysql5.7.18安装配置教程&#xff0c;供大家参考&#xff0c;具体内容如下准备&#xff1a;操作系统&#xff1a;win7我下的是最新版的MySQL&#xff0c;解压后&#xff0c;目录如下&#xff1a;可以看到上图&#xff0c;mysql5.7.18它没有data目录&a…

【无标题】2022汽车修理工(中级)考试模拟100题及答案

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022汽车修理工&#xff08;中级&#xff09;考试题为汽车修理工&#xff08;中级&#xff09;国家题库新版教材大纲题库&#xff01;2022汽车修理工&#xff08;中级&#xff09;考试模拟100题及答案依据汽车修理工&…

IOS 开发遇到的部分问题

一、环境 xcode 11.5 cordova10.0.0 ios13.5 二、问题 1、CDVFileTransfer.m 编译报错 报错信息&#xff1a; No known instance method for selector ‘userAgent’ 解决方案&#xff1a; 插件开发人员已经把修改后的代码上传到master分支&#xff0c;不过还未上传到npm…

mysql query不支持_php – 为什么我不能禁用PDO :: MYSQL_ATTR_DIRECT_QUERY?

我偶然发现了(imho相当糟糕的文档)事实,默认情况下PHP PDO为其MySQL驱动程序启用了标志MYSQL_ATTR_DIRECT_QUERY.这意味着它不是实际使用预准备语句,而是模拟预准备语句的行为.这意味着它使用转义值替换占位符客户端,并按原样将完整查询发送到数据库.曾经有一个很好的理由这样做…

2022机械员-岗位技能(机械员)考试题库及模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022年机械员-岗位技能(机械员)考题是机械员-岗位技能(机械员)复习题历年真题&#xff01;2022机械员-岗位技能(机械员)考试题库及模拟考试依据机械员-岗位技能(机械员)考试大纲。机械员-岗位技能(机械员)复审模拟考试…

Android LaunchMode启动模式

参考https://www.cnblogs.com/naray/p/6992515.html https://blog.csdn.net/sinat_14849739/article/details/78072401 一、Standard&#xff1a;标准模式 也是系统默认的启动模式。 每次启动都会创建一个新的Activity实例&#xff0c;不管这个实例在栈中是否已经存在。 Acti…

2022年司钻(钻井)考试试题及模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022年司钻&#xff08;钻井&#xff09;考试题模拟考试题库为司钻&#xff08;钻井&#xff09;上岗证题库全真模拟题&#xff01;2022年司钻&#xff08;钻井&#xff09;考试试题及模拟考试根据司钻&#xff08;钻…

反IDA动态调试

一、IDA动态调试 交互式反汇编器专业版&#xff08;Interactive Disassembler Professional&#xff09;&#xff0c;人们常称其为IDA Pro&#xff0c;或简称为IDA。 IDA Pro是一款交互式的&#xff0c;可编程的&#xff0c;可扩展的&#xff0c;多处理器的&#xff0c;交叉Wi…