日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS 程序插件及功能动态更新思路┊

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS 程序插件及功能动态更新思路┊ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cocoachina.com/bbs/read.php?tid=129723&keyword=%B2%E5%BC%FE

帶圖片版 CSDN路徑--?http://blog.csdn.net/wssand44/article/details/8288178

CSDN下載路徑 --?http://download.csdn.net/detail/wssand44/4878972

工具框架鏈接地址:Wax -?https://github.com/probablycorey/wax??Netty -?https://netty.io/??用做Http服務器,返回頁面

所用框架及語言 IOS客戶端-Wax(開發憤怒的小鳥的連接Lua 和 Objc的框架),Lua,Objc, 服務端-Java(用于返回插件頁面)
????????由于Lua腳本語言,不需要編譯即可運行,這點是我的這個思路可以執行的大前提,再加上蘋果允許像Lua這樣的腳本的存在,這一思路才能得以實現。個人感覺這一思路有點類似于ipad上的一款編程應用 Codea,Codea允許我們再ipad利用Lua編程,寫游戲。

正文:
1.在IOS程序里面調用wax_start("init.lua",nil);這個init.lua即是我們插件的最起始的類似于程序main函數的類,lua腳本的起點。
2.在程序中預留功能按鈕 請求服務器獲取插件列表,在選擇列表后可以將此項對應的Lua腳本(TestController.lua)下載到客戶端,這樣我們客戶端就多了一個相當于Objc類的文件了,不同于objc的是這個類不需要編譯,現在即可運行了。
????????3.我們在客戶端還有一點要做的是要保存我們的插件列表及所在路徑,這樣程序才知道去哪里找到相應的Lua腳本來執行。
思路很簡單,不知道自己說清楚了沒有,下面我把自己寫的例子貼上來,與大家交流一下



因為蘋果沙箱機制,我們程序無法再安裝后訪問資源包目錄,所以從官網下載的framework無法在應用到實際應用中,我們需要修改wax.m中的如下方法,修改后如下
void wax_setup() {
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);?

????NSFileManager *fileManager = [NSFileManager defaultManager];
//????[fileManager changeCurrentDirectoryPath:[[NSBundle mainBundle] bundlePath]];
????
????[fileManager changeCurrentDirectoryPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
????
????lua_State *L = wax_currentLuaState();
lua_atpanic(L, &wax_panic);
????
????luaL_openlibs(L);?


luaopen_wax_class(L);
????luaopen_wax_instance(L);
????luaopen_wax_struct(L);

????addGlobals(L);

[wax_gc start];
}


然后重新編譯framework,再導入到我們的程序中。

轉載于:https://www.cnblogs.com/needly/p/3684888.html

總結

以上是生活随笔為你收集整理的IOS 程序插件及功能动态更新思路┊的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。