Theos 導入 第三方 套件 舉例OCGumbo

跪求大大指引!

需求: 小弟太廢,卡在基礎問題上,今天遇到一個問題,我想要從web上crawler資料,目前成功用NSURLsession拿到回傳值,但是是一堆html。所以我上網查找到一個google強大的obj-c可以使用的html解析工具。
有一位作者文章 有編譯好的檔案。網址:http://www.jianshu.com/p/029a5ef4e86a

但是我在theos的makefile不知道要怎麼導入他的.a檔案,也不清楚是要把他整個資料夾放在我的tweak目錄下,還是要放在~/opt/theos/lib下面。 書上翻幾遍也不知道怎麼做…

請問我該如何成功導入OCGumbo到我的專案上呢?

以下是我的makefile:
include $(THEOS)/makefiles/common.mk
ARCHS = armv7 arm64
TARGET = iphone:latest:8.1
THEOS_DEVICE_IP=144.0.0.3
THEOS_DEVICE_PORT=2000

test_CFLAGS = -I./headers

APPLICATION_NAME = test
test_FILES = main.m AppDelegate.m RootViewController.m InfoTableViewController.m
test_FILES += $(wildcard SQLiteManager/.m)
test_FILES += $(wildcard EquipmentInfo/
.m)
test_FRAMEWORKS = UIKit CoreGraphics
test_PRIVATE_FRAMEWORKS = MobileInstallation IOKit
test_LIBRARIES = applist
test_LDFLAGS = -lsqlite3 -lMobileGestalt
test_LDFLAGS += libGumbo.a
test_CODESIGN_FLAGS = -Sentitlements.xml

include $(THEOS_MAKE_PATH)/application.mk

after-stage::
$(ECHO_NOTHING)chmod +s $(THEOS_STAGING_DIR)/Applications/test.app/test$(ECHO_END)

after-install::
install.exec “su mobile -c uicache”
install.exec “killall -9 SpringBoard”

OCGumbo網址:https://github.com/tracy-e/OCGumbo/blob/master/OCGumbo/OCGumbo.h

环境: ios8 jb, theos

makefile貌似是这样
yourprojectname_LIBRARIES = xxxxxx.a

大大我下载下来的包是长这样的,我看说明是:
1.集成到项目中
导入OCGumbom到工程中, 这个是我编译好的, 上传到github上的, 你也可以自己编译静态库自己去集成.如图, 下载下来后拖拽到你工程的相应文件夹中.

但说明是针对xcode project。

那我们theos该怎麽导入呢?这个OCGumbo资料夹 要放到那一个目录位置?您写的.a语法,好像只针对libGumbo.a但我之前试过了 也失败了。请问还有别的方法吗?

  1. Framework 中会有个 二进制 文件,拷贝到 Theos 工程目录下。
  2. 修改 Makefile: xxx_LDFLAGS = xx/二进制文件。
  3. 把 Framework 复制到手机的 /System/Library/Frameworks/ 中。

静态库类似。

1 个赞

感谢大大仔细地解说,昨天试了一天还是失败,虽然观念稍微清楚了。但我现在比较卡关的是针对.a档,请问静态库类似的意思是指。
我把附图上gumbo裡面的libGumbo.a档 单独複製到手机的哪个路径?
LDFLAGS = ? 是要写出手机上位置的路径吗?

我透过大大的指引上网找到一个资源他建议可以这样写,不知道这样写是正确的?:
XXX_OBJ_FILES = somelibname.a
XXX_LDFLAGS = -lsomelibname

我会不确定的原因是因为还不清楚.a档 要放在手机的哪一个目录下QQ
再麻烦赐教了~

程序在编译链接的时候,程序里所使用的静态库代码会被链接到可执行文件中,所以.a文件应该不需要再放到手机上。

参考目录:

Makefile:

1 个赞

崩哭,跪謝大大圖示完美解說,俺終於有自信在嘗試搞定他。有看到大大使用AFNetworkingStatic.a這也是我的目標之一,因為他真的很好用啊!再次謝謝您~ 我等等來拼看看。

请问下,.a 文件不放到手机上的情况下,能否成功?
我尝试过,并不能成功,不知道是否是操作问题。

  1. 静态库就是指 .a 这种。
  2. LDFLAGS = 写的是电脑上的路径。
  3. -l 只是代表 lib 。
  4. 如果需要复制 .a 文件,可以复制到手机上的 System/Library/Frameworks 试试。
1 个赞

谢谢 J大 提点~ 我後來找到更簡單的套件先使用。等個時間,再回來挑戰!