公众号小程序制作_微信小程序源码_小程序下载_转盘小程序_小程序代码大全
当前位置:建站首页 > 新闻资讯 > 常见问题 >

iOS线下装包5+SDK并撰写自定软件

发表日期:2021-04-04 13:57文章编辑:jianzhan浏览次数: 标签:    

platform:ios,  8.0 # 必须更换以下  IMSDemoApp  为开发设计者 App 的 target 名字 target  IMSDemoApp  do  pod  ount ,  3.4.0.30  pod  IMSApiClient ,  1.2.0  pod  IMSAuthentication ,  1.1.0  pod  IMSBreezeSDK ,  1.4.0  pod  IMSBoneKit ,  1.2.6 end

改动完podfile配备文档以后,在终端设备里边然后实行一句指令:

pod install

等候一一段时间,实行完以后,会提醒安裝取得成功的信息内容。


进到到你的新项目文件目录下,新项目里边会多了很多文档,转化成的关键文档Podfile.lock是用于纪录着上一次免费下载的架构版本号,包含后缀名为.xcworkspace的文档。


那麼就大获全胜,随后重新启动Xcode,再再次开启你的新项目,记住并不是点一下 xx.xcodeproj,只是点一下 xx.xcworkspace 这一文档。


1991_/article/details/


2、pod update安裝依靠后出的难题:
[!] The `HBuilder [Debug]` target overrides the `GCC_PREPROCESSOR_DEFINITIONS` build setting defined in `Pods/Target Support Files/Pods-HBuilder/Pods-HBuilder.debug.xcconfig . This can lead to problems with the CocoaPods installation
 - Use the `$(inherited)` flag, or
 - Remove the build settings from the target.
[!] The `HBuilder [Debug]` target overrides the `LIBRARY_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-HBuilder/Pods-HBuilder.debug.xcconfig . This can lead to problems with the CocoaPods installation
 - Use the `$(inherited)` flag, or
 - Remove the build settings from the target.
[!] The `HBuilder [Debug]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods-HBuilder/Pods-HBuilder.debug.xcconfig . This can lead to problems with the CocoaPods installation
 - Use the `$(inherited)` flag, or
 - Remove the build settings from the target.
[!] The `HBuilder [Release]` target overrides the `GCC_PREPROCESSOR_DEFINITIONS` build setting defined in `Pods/Target Support Files/Pods-HBuilder/Pods-HBuilder.release.xcconfig . This can lead to problems with the CocoaPods installation
 - Use the `$(inherited)` flag, or
 - Remove the build settings from the target.
[!] The `HBuilder [Release]` target overrides the `LIBRARY_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-HBuilder/Pods-HBuilder.release.xcconfig . This can lead to problems with the CocoaPods installation
 - Use the `$(inherited)` flag, or
 - Remove the build settings from the target.
[!] The `HBuilder [Release]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods-HBuilder/Pods-HBuilder.release.xcconfig . This can lead to problems with the CocoaPods installation
 - Use the `$(inherited)` flag, or
 - Remove the build settings from the target.


这类警示不是能忽略的,它产生的立即不良影响便是没法根据编译程序。

* 新项目 Build Settings - Other Linker Flags 里,提升 $(inherited),假如原先有 -ObjC ,不必删掉,保存,假如删掉会错误。
* 新项目 Build Settings - Library Search Paths 里,提升 $(inherited)

#include  PGMethod.h 
#import  Foundation/Foundation.h 
@interface PGPluginTest : PGPlugin
- (void)PluginTestFunction:(PGMethod*)command;
- (void)PluginTestFunctionArrayArgu:(PGMethod*)command;
@end


PluginTest.m文档內容:

#import  PluginTest.h 
#import  PDRCoreAppFrame.h 
#import  H5WEEngineExport.h 
#import  PDRToolSystemEx.h 
// 拓展软件中必须引进必须的系统软件库
#import  LocalAuthentication/LocalAuthentication.h 
// 这儿能够引进一些第三方的依靠头文档
//....
// 这儿能够界定一些自变量
//.....
@implementation PGPluginTest

 * WebApp起动时开启  * 必须在PandoraApi.bundle/feature.plist/申请注册软件里加上autostart数值true,global项的值设定为true  */ - (void) onAppStarted:(NSDictionary*)options{    NSLog(@ 5+ WebApp起动时开启  // 能够在这里个方式里向Core申请注册拓展软件的JS   // 监视底座恶性事件恶性事件 // 运用撤出时开启 - (void) onAppTerminate{  //  NSLog(@ APPDelegate applicationWillTerminate 恶性事件开启时开启 // 运用进到后台管理时开启 - (void) onAppEnterBackground{  //  NSLog(@ APPDelegate applicationDidEnterBackground 恶性事件开启时开启 // 运用进到大前天时开启 - (void) onAppEnterForeground{  //  NSLog(@ APPDelegate applicationWillEnterForeground 恶性事件开启时开启
#pragma mark 下列为软件方式,由JS开启, WebView集成化和WebApp集成化都可以以开启 - (void)PluginTestFunction:(PGMethod*)commands if (&mands ) {  // CallBackid 多线程方式的回调函数id,H5+ 会依据回调函数ID通告JS层运作結果取得成功或是不成功  NSString* cbId = [commands.arguments objectAtIndex:0];    // 客户的主要参数会在第二个主要参数传到  NSString* pArgument1 = [commands.arguments objectAtIndex:1];  NSString* pArgument2 = [commands.arguments objectAtIndex:2];  NSString* pArgument3 = [commands.arguments objectAtIndex:3];  NSString* pArgument4 = [commands.arguments objectAtIndex:4];    // 假如应用Array方法传送主要参数  NSArray* pResultString = [NSArray arrayWithObjects:pArgument1, pArgument2, pArgument3, pArgument4, nil];    // 运作Native编码結果和预估同样,启用回调函数通告JS层运作取得成功并回到結果  // PDRCommandStatusOK 表明开启JS层取得成功回调函数方式  // PDRCommandStatusError 表明开启JS层不正确回调函数方式    // 假如方式必须不断开启网页页面回调函数,能够根据改动 PDRPluginResult 目标的keepCallback 特性值来表明当今是不是可多次复回调函数, true 表明能够反复回调函数 false 表明不能反复回调函数 默认设置数值false  PDRPluginResult *result = [PDRPluginResult resultWithStatus:PDRCommandStatusOK messageAsArray: pResultString];  // 假如Native编码运作結果和预估不一样,必须根据回调函数通告JS层出現不正确,并回到不正确提醒  //PDRPluginResult *result = [PDRPluginResult resultWithStatus:PDRCommandStatusError messageAsString:@ 惨了! 错误了! 咋(wu)整(liao)  // 通告JS层Native层运作結果  [self toCallback:cbId withReslut:[result toJSONString]];  } - (void)PluginTestFunctionArrayArgu:(PGMethod*)commands  // CallBackid 多线程方式的回调函数id,H5+ 会依据回调函数ID通告JS层运作結果取得成功或是不成功  NSString* cbId = [commands.arguments objectAtIndex:0];    // 客户的主要参数会在第二个主要参数传到,能够依照Array方法传到,  NSArray* pArray = [commands.arguments objectAtIndex:1];    // 假如应用Array方法传送主要参数  NSString* pResultString = [NSString stringWithFormat:@ %@ %@ %@ %@ ,[pArray objectAtIndex:0], [pArray objectAtIndex:1], [pArray objectAtIndex:2], [pArray objectAtIndex:3]];    // 运作Native编码結果和预估同样,启用回调函数通告JS层运作取得成功并回到結果  PDRPluginResult *result = [PDRPluginResult resultWithStatus:PDRCommandStatusOK messageAsString:pResultString];    // 假如Native编码运作結果和预估不一样,必须根据回调函数通告JS层出現不正确,并回到不正确提醒  //PDRPluginResult *result = [PDRPluginResult resultWithStatus:PDRCommandStatusError messageAsString:@ 惨了! 错误了! 咋(wu)整(liao)    // 通告JS层Native层运作結果  [self toCallback:cbId withReslut:[result toJSONString]]; @end



六、原生态软件配备

开发设计者在完成JS层API时最先要界定一个软件类型名,并必须在IOS工程项目的 PandoraApi.bundle\feature.plist 文档中申明软件类型名和Native层拓展软件类的相匹配关联:

例如上边的这一图里,plugintest 是给JS应用的软件别称,PGPluginTest 是相匹配iOS原生态的类名字。


JS编码封裝:

document.addEventListener(  plusready , function() 
{ 
 // 申明的JS“拓展软件别称” 
 var _BARCODE =  plugintest , B = window.plus.bridge; 
 var plugintest = 
 { 
 // 申明多线程回到方式 
 PluginTestFunction : function (Argus1, Argus2, Argus3, Argus4,&essCallback, errorCallback ) 
 { 
 var&ess = typeof&essCallback !==  function  ? null : function(args) 
 { 
&essCallback(args); 
 }, 
 fail = typeof errorCallback !==  function  ? null : function(code) 
 { 
 errorCallback(code); 
 }; 
 callbackID = B.ess, fail); 
 // 通告Native层plugintest拓展软件运作”PluginTestFunction”方式 
 return B.exec(_BARCODE,  PluginTestFunction , [callbackID, Argus1, Argus2, Argus3, Argus4]); 
 }, 
 PluginTestFunctionArrayArgu : function (Argus,&essCallback, errorCallback ) 
 { 
 var&ess = typeof&essCallback !==  function  ? null : function(args) 
 { 
&essCallback(args); 
 }, 
 fail = typeof errorCallback !==  function  ? null : function(code) 
 { 
 errorCallback(code); 
 }; 
 callbackID = B.ess, fail); 
 return B.exec(_BARCODE,  PluginTestFunctionArrayArgu , [callbackID, Argus]); 
 } 
 }; 
 window.plus.plugintest = plugintest; 
}, true );


html 编码应用实例:

 script type= text/javascript  
 function pluginShow() { 
 plus.plugintest.PluginTestFunction( Html5 , Plus , AsyncFunction , MultiArgument! , function( result ) {alert( result[0] +  _  + result[1] +  _  + result[2] +  _  + result[3] );},function(result){alert(result)}); 
 } 
 function pluginShowArrayArgu() { 
 plus.plugintest.PluginTestFunctionArrayArgu( [ Html5 , Plus , AsyncFunction , ArrayArgument! ], function( result ) {alert( result );},function(result){alert(result)}); 
 } 
 /script  
 div  >


文本文档参照:article/67


七、精减工程项目

HBuilder-Hello 工程项目里包括了许多的sdk,假如完好无损的装包成ipa,大家会发觉这一文档有几近 50M 上下尺寸,很显而易见,里边有一些大家用不上的依靠,能够删掉以降低装包容积 。


在“Feature-iOS.xls”文档中搜索不应用控制模块相匹配的 库,包含 xx.a,xx.framework, xx,bundle,从目录中删掉。

如不应用“照相机控制模块”,则可选择中“liblibCamera.a”、按退格键删掉,按option键能够选取。

部位为  targets - Build Phases - Link Binary With Libraries 和 Copy Bundle Resources 里边:

删掉了一些不用的库以后,大家再装包会发觉容积缩小了。


八、xcode装包

XCODE开发设计软件的全过程中,提议大伙儿手动式管理方法资格证书。在iPhone开发设计者管理中心网站里:

【appid】:

只设定一个,不区别开发设计和公布。


【资格证书】:

各自转化成两个资格证书,一个是开发设计资格证书,另外一个是公布资格证书。

资格证书不用每一次都转化成,转化成一次,之后别的的app开发设计时能够重复使用的。


【叙述文档】分3个:

开发设计叙述文档 - 应用开发设计资格证书,用以內部开发设计工作人员检测app应用,仅容许加上了udid的机器设备;

ADHOC叙述文档(可选择) - 应用公布资格证书,用以派发给外界检测工作人员例如顾客,仅容许加上了udid的机器设备;

公布叙述文档 - 应用公布资格证书,发布 app store 应用。

叙述文档,每一个app也不同,必须独立转化成。


xcode签字实例:

Signing   Capabilities 里设定(不必启用 Automatically manage signing ):
Signing(Debug) 导进开发设计叙述文档;
Signing(Release) 导进公布叙述文档。

同时也有一个地区要设定,要不然xcode全自动配对的很有将会便是错的,

Build Settings里设定:
Code Signing Identity 里各自设定 Debug 和 Release 应用的开发设计者资格证书。


九、难题归纳

归纳一些不正确。

pod不正确
$ pod init
-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory

处理:

当Mac升級版本号的情况下 会出現之上难题


(1)最先实行以下指令查询全部 gem 源,查验是不是是全新的:

gem sources -l

留意,假如你没是应用的ruby-china的镜像系统,例如像我的是 ,也不必须升级,立即跳至第5步,升級 CocoaPods 就可以。


(2)因为 RubyGems 镜像系统服务网站域名变动(后缀名由以前的 ),大家先实行以下指令将当今的 gem 源删掉:

gem sources --remove 


(3)随后在实行以下指令加上新的 gem 源:

gem sources -a pre>


(4)然后实行以下指令升级 gem

sudo gem update --system


(5)然后实行以下指令升級 CocoaPods【关键】

sudo gem install -n /usr/local/bin cocoapods --pre


(6)然后实行以下指令升级当地库房

pod repo update


(7)最终再度实行 pod install 指令会发觉已不出错了。


参照:blog/


不正确 Undefined symbols for architecture arm64
Undefined symbols for architecture arm64:
  _OBJC_CLASS_$_SKStoreProductViewController , referenced from:
 objc-class-ref in liblibPDRCore.a(DCH5ScreenAdvertising.o)
  _SKStoreProductParameterITunesItemIdentifier , referenced from:
 -[DCH5ScreenAdvertising touchesEnded:withEvent:] in liblibPDRCore.a(DCH5ScreenAdvertising.o)
ld: symbol(s) not found for architecture arm64
clang: error: mand failed with exit code 1 (use -v to see invocation)

处理:

缺乏系统软件库文档,部位:新项目targets - Build Phases -  Link Binary With Libraries 里边必须提升两个系统软件库:

Photos.framework
StoreKit.framework


精减依靠库的全过程中假如提醒:

Undefined symbols for architecture arm64:
  _OBJC_METACLASS_$_GLKView , referenced from:
 _OBJC_METACLASS_$_MAMapRender in MAMapKit(MAMapKit-arm64-master.o)
  _OBJC_CLASS_$_GLKView , referenced from:
 _OBJC_CLASS_$_MAMapRender in MAMapKit(MAMapKit-arm64-master.o)
  _GLKMatrix4Identity , referenced from:
 -[MASpriteOverlayRenderer doRenderContent] in MAMapKit(MAMapKit-arm64-master.o)
 -[MAObjModelOverlayRenderer glRender] in MAMapKit(MAMapKit-arm64-master.o)


含意便是 MAMapKit 依靠了 GLKView ,找不着这一库,大家了解GLKView必须一个GLKit的库来适用;难题就简易了,立即把GLKit.framework加上进去便可以了!

碰到相近难题,都那样处理。


不正确 uncaught exception NSInvalidArgumentException __NSCFString JSONValue
objc[93108]: Class MPRequest is implemented in both /System/Library/Frameworks/MediaPlayer.framework/MediaPlayer (0x1fa002b00) and /private/var/containers/Bundle/Application/097442D8-ECF0-4D9C-9879-A77861C3E7D2/易智能化.app/易智能化 (0x100ec0d90). One of the two will be used. Which one is undefined.
2020-03-20 15:19:26.011207+0800 易智能化[9] -[__NSCFString JSONValue]: unrecognized selector sent to instance 0x2833bb6c0
2020-03-20 15:19:26.013538+0800 易智能化[9] *** Terminating app due to uncaught exception  NSInvalidArgumentException , reason:  -[__NSCFString JSONValue]: unrecognized selector sent to instance 0x2833bb6c0 
*** First throw call stack:
(0x1b37c2a48 0x1b34e9fa4 0x1b36c65a8 ... 0x1b35c4360)
libc++abi.dylib: terminating with uncaught exception of type NSException
uncaught exception NSInvalidArgumentException __NSCFString JSONValue处理pod依靠的全过程中

新项目 targets  - Build Settings - Other Linker Flags 里,提升 $(inherited),假如原先有 -ObjC ,不必删掉,保存。


调节对话框里边出現很多的:[Process] kill() returned unexpected error 1

系统软件 mac Catalina xcode版本号11.3 iOS 13.3运作的情况下会出現 [Process] kill() returned unexpected error 1

及其常常被Thread 10: breakpoint出现意外的断点 ,可是不危害程序的一切正常运作。


大概缘故是新版本的CatAlina针对WKWebview不友善,沒有对它开展提升实际请查询

可有可无处理计划方案:Product Scheme Edit Scheme 在 Environment Variables 中加上

OS_ACTIVITY_MODE = disable

这一仅仅屏蔽掉到系统日志其实不会完全处理这一难题。


它是webkit不正确,下一个iOS检测版应当修补它:

show_bug.cgi?id=202173

webkit-.


iOS13 情况栏文本的色调设定失效

难题:

例如必须把情况栏设定成乳白色情况,灰黑色文本:

新项目 - 特性  - info 里设定:

StatusBarBackground 设成 #FFFFFF (情况色设成乳白色)
Status bar style 设成 Dark Content (文本设成灰黑色)
View controller-based status bar appearance 设成 NO
Status bar is initially hidden 设成 NO (YES为起动时全屏幕,假如设成YES时,IOS13下面字色调一直是乳白色,没法改动)


iOS11之上系统软件当开启沉浸于式式情况栏后,webview默认设置会调节內容至安全性地区以内。假如不用全自动调节能够在meta(name= viewport )连接点的content特性值中加上viewport-fit=cover :

 meta name= viewport  content= width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, viewport-fit=cover  / 


完。

相关新闻

浅说网上线下推广融合的O2O商城系统企业网站建

互连网的髙速发展趋势推动了电子器件商务接待的迅速发展趋势,电子器件商务接待是传统式...

日期:2021-03-21 浏览次数:51

五个奇幻线上专用工具 用照片制作实际效果

今日网编送大伙儿五个非常棒的网站...

日期:2021-03-18 浏览次数:174

GIF动图线上缩小方法,动图缩小便是那么简易

在访问网页页面的情况下常常可以见到很多动态性的照片,可是又的GIF动文图件容积较为大,...

日期:2021-03-12 浏览次数:80

步骤图线上制作专用工具强烈推荐!迅捷绘图务

许多初学者刚开始学习培训制作步骤图时,发觉不知道道该怎样画起,找来找去适合的制作专...

日期:2021-03-12 浏览次数:109

初学者画步骤图用哪种手机软件好?用它线上制

步骤图是一个十分好用的专用工具,能够用于制订工作中方案,工作中分配及其主题活动方案...

日期:2021-03-12 浏览次数:88

教你正确认识线上视頻网站六大“招数”,这一

你了解撤销一个线上视頻VIPvip会员 “全自动扣钱”有是多少步吗 许多网民也不了解在哪儿撤销...

日期:2021-03-12 浏览次数:141