起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2129|回复: 10

[结贴] [已解决]请问wex5打包出来的ios源代码如何导入另一个ios工...

[复制链接]

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
发表于 2016-12-20 11:12:54 | 显示全部楼层 |阅读模式
本帖最后由 Shawn 于 2016-12-20 15:57 编辑

目前的情况是,我们公司之前完成了一个Wex5的直播类项目A,又做了一个iOS原生的资讯类的项目B。现在就是想把直播的项目A整个导入资讯类的项目B里作为一个直播的模块。
之前已经尝试过几种方法,主要是两种:第一种:做静态库,好像比较复杂,没有成功;第二种我参考了一个教程,主要有以下几个步骤:
(1)把关于Coodova的文件(包括CordovaLib.xcodeproj文件,www文件夹,config.xml文件)从WeX5打包好的项目A里抽出来,导入项目B里调用。
(2)在Target Dependencies添加了CordovaLib;
(3)在Build Phases->Link Binary With Librarys添加了libCordova.a、 MobileCoreServices.framework、AssetsLibrary.framework相关框架。
(4)然后我把原来wex5项目A里的文件:JustepURLProtocol.h/.m、NSData+AES128.h/.m、MainViewController.h/.m都导入到项目B里面了,
(5)把原来项目A的AppDelegate.h/.m里的代码都拷贝到了项目B的AppDelegate文件里运行。
(6)最后我在AppDelegate里创建了一个MainViewController控制器的对象,实验阶段我先把这个控制器设为self.window.rootViewController来弹出,结果是黑屏的,报错倒是没有。
目前感觉第二种方法还有点用,在控制台里可以看到cordova被调用了;
2016-12-20 10:22:25.766 bdu[8129:79859] Apache Cordova native platform version 3.9.2 is starting.

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
 楼主| 发表于 2016-12-20 11:13:12 | 显示全部楼层
本帖最后由 Shawn 于 2016-12-20 15:56 编辑

正常情况下,项目A的控制台信息为(此为正常运行下的情况,可以正常进入wex5项目):
objc[8883]: Class PLBuildVersion is implemented in both /Users/shawnshen/Documents/WexDeveloper/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x119aba998) and2016-12-20 10:58:52.268 zbnOBJ[8883:100074] Multi-tasking -> Device: YES, App: YES
2016-12-20 10:58:52.276 zbnOBJ[8883:100074] Unlimited access to network resources
2016-12-20 10:58:52.300 zbnOBJ[8883:100074]

Started backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read "iOS Data Storage Guidelines" at
To disable web storage backup to iCloud, set the BackupWebStorage preference to "local" in the Cordova config.xml file



从以上的代码来看,项目B里似乎只是引用到了cordova插件,但是并没有引用到wex5项目内的资源,导致弹出来的控制器是黑屏的;
请问目前这种情况我该怎么处理?或者说有更好的办法来把项目A集成到项目B里去?
万分感谢。
回复 支持 反对

使用道具 举报

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
 楼主| 发表于 2016-12-20 11:15:13 | 显示全部楼层
本帖最后由 Shawn 于 2016-12-20 11:17 编辑

求解
回复

使用道具 举报

发表于 2016-12-20 13:31:40 | 显示全部楼层
请问你做的项目A,直播有没有使用cordova插件呢??如果没有,那么项目B中直接使用一个webView  ,路径设置项目直播功能的首页地址即可!

如果使用了cordova插件!就需要在B项目中也把这个cordova插件能力加进去才行!建议上网搜下corodva的原理实现,主要是为了js调用原生!
还是一个webView 引入项目A的首页地址即可!


另外wex5应用也可以导入原生开发工具,进行原生打包的:http://docs.wex5.com/wex5-studio-question-list-2013

如果会原生开发,把他们当做两个原生的应用!你看原生如何做的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
 楼主| 发表于 2016-12-20 14:09:12 | 显示全部楼层
本帖最后由 Shawn 于 2016-12-20 14:13 编辑
liangyongfei 发表于 2016-12-20 13:31
请问你做的项目A,直播有没有使用cordova插件呢??如果没有,那么项目B中直接使用一个webView  ,路径设置 ...

谢谢回复。项目A中使用了cordova的插件,现在我能够在项目B中调用cordova插件,但是没办法定位到我本地存储的页面文件,也没办法访问我需要的的首页地址。目前我不能采用webView直接访问URL的方式,因为我感觉这个和直接在浏览器上运行一样,流畅度比起打包后的效果还是有差别的。为了流畅度我只能采用WeX5打包出来的源码。
我现在在做一个测试,把打包出来的WeX5源码工程的文件,一个个搬到我新建的一个空白的iOS原生项目里,但是我现在几乎照着WeX5的源码工程什么都设置了,可就是没办法访问指定的地址,页面一直显示“HTTP Status 404 - /v-Zj***q-zh_CN-/w*****d/index.w”和“The request resource is not available”。
请问是不是有几个关键的平时注意不到的地方来指定了要访问的地址?
回复 支持 反对

使用道具 举报

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
 楼主| 发表于 2016-12-20 14:33:10 | 显示全部楼层
本帖最后由 Shawn 于 2016-12-20 15:56 编辑
liangyongfei 发表于 2016-12-20 13:31
请问你做的项目A,直播有没有使用cordova插件呢??如果没有,那么项目B中直接使用一个webView  ,路径设置 ...

现在我的本地地址localURL似乎对了:

objc[15013]: Class PLBuildVersion is implemented in both /Users/s*****n/Documents/WexDeveloper/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x121acb998) and /Users/sh*****hen/Documents/WexDeveloper/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1218ed880). One of the two will be used. Which one is undefined.
backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read "iOS Data Storage Guidelines" at:

回复 支持 反对

使用道具 举报

发表于 2016-12-20 14:41:46 | 显示全部楼层
Shawn 发表于 2016-12-20 14:09
谢谢回复。项目A中使用了cordova的插件,现在我能够在项目B中调用cordova插件,但是没办法定位到我本地存 ...

你是请求的服务器地址吗??
请问你是模式几打包的??
如果是模式1,资源打到本地是优先访问本地的! 模式2要求必须连接网络!
A项目单独运行是没问题的是吧!

404表示访问了服务器地址,但是资源不存在!(请问服务器上和本地资源是同步的,一样的吗?)
你看下访问的完整url是什么??是A服务 还是 B 服务?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
 楼主| 发表于 2016-12-20 14:56:22 | 显示全部楼层
本帖最后由 Shawn 于 2016-12-20 14:58 编辑
liangyongfei 发表于 2016-12-20 14:41
你是请求的服务器地址吗??
请问你是模式几打包的??
如果是模式1,资源打到本地是优先访问本地的! 模 ...

项目A是模式1打包的,单独运行没问题。我现在就是在把这个模式1打包出来的源码搬到一个空白的项目上,但是 plist,config.xml 都按照项目A的源码包设置了,文件也都拷了,就是不行。
我还在考虑一个可能性,跟项目的名称有没有关系?域名    http://1*0.55.1*0.2*4/v-ZjmA3q-zh_CN-/we*****d/index.w   中的   “ v-ZjmA3q-zh_CN- ”  会不会是跟iOS工程的名字对应的?我换了名字是不是就不行了?因为我看项目A的源码包工程访问的也是这个地址,它就可以访问,但我的项目B里访问的也是这个地址,就访问不到。
回复 支持 反对

使用道具 举报

发表于 2016-12-20 15:41:04 | 显示全部楼层
Shawn 发表于 2016-12-20 14:56
项目A是模式1打包的,单独运行没问题。我现在就是在把这个模式1打包出来的源码搬到一个空白的项目上,但是 ...

v-ZjmA3q-zh_CN 这个字符串是资源版本号,如果不是手动设置的!每次都会重新编译生成的!
A 项目和 B项目中访问同一个url ,A能访问B 却访问不了吗?

你的直播也就一个页面吧!我觉得使用webView 就很好,很方便的!
其实模式1打包原理上也是webView中显示的web页面,只不过是第一次访问的本地缓存!

你在B项目中使用webView ,第一次会请求网络,请求过以后也会缓存,第二次也是加载的本地资源!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

5

主题

21

帖子

41

积分

新手上路

Rank: 1

积分
41
QQ
 楼主| 发表于 2016-12-20 15:49:35 | 显示全部楼层
liangyongfei 发表于 2016-12-20 15:41
v-ZjmA3q-zh_CN 这个字符串是资源版本号,如果不是手动设置的!每次都会重新编译生成的!
A 项目和 B项目 ...

问题已解决,谢啦

主要是我们的直播不只是一个页面,如果只是一个页面的话是没问题的,使用上不用有太大区别。多页面还是有影响的。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-19 21:16 , Processed in 0.058117 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表