1. 程式人生 > >iOS 熱更新,實時程式碼更新,動態更新,動態庫framework

iOS 熱更新,實時程式碼更新,動態更新,動態庫framework

  允許轉載!

demo

下載

  只要稽核通過後,無須再次稽核,就可以動態更新,iOS有三種處理方案:

   一、開源框架 reactive native,但是程式語言是js

  二、lua 指令碼

  三、使用oc語言的動態庫framework。前兩者,我不打算細講,我主要介紹怎麼用oc進行熱更新

      1、建立framework工程


      2、程式碼處理:


寫一個controller的控制工具類:

[objc] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. //
  2. //  HotUpdateControl.m
  3. //  HotUpdateMudel
  4. //
  5. //  Created by wukong on 15/12/18.
  6. //  Copyright © 2015年 lhc. All rights reserved.
  7. //
  8. #import "HotUpdateControl.h"
  9. #import "AController.h"
  10. #import "BViewController.h"
  11. #import "CViewController.h"
  12. #import "DViewController.h"
  13. #import "EViewController.h"
  14. @implementation HotUpdateControl  
  15. -(NSArray *)getVcs {  
  16.     return @[  
  17.              [[AController alloc]init],  
  18.              [[BViewController alloc]init],  
  19.              [[CViewController alloc]init],  
  20.              [[DViewController alloc]init],  
  21.              [[EViewController alloc]init]];  
  22. }  
  23. @end
[objc]
 view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. //
  2. //  HotUpdateControl.m
  3. //  HotUpdateMudel
  4. //
  5. //  Created by wukong on 15/12/18.
  6. //  Copyright © 2015年 lhc. All rights reserved.
  7. //
  8. #import "HotUpdateControl.h"
  9. #import "AController.h"
  10. #import "BViewController.h"
  11. #import "CViewController.h"
  12. #import "DViewController.h"
  13. #import "EViewController.h"
  14. @implementation HotUpdateControl  
  15. -(NSArray *)getVcs {  
  16.     return @[  
  17.              [[AController alloc]init],  
  18.              [[BViewController alloc]init],  
  19.              [[CViewController alloc]init],  
  20.              [[DViewController alloc]init],  
  21.              [[EViewController alloc]init]];  
  22. }  
  23. @end

好了,開始打包framework,為了以免打包出來的framework,在真機上面執行不了,我們使用一個指令碼來進行打包,目的是多型號CPU核心的合成,就是打出一個通用的包。 [python] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. # Sets the target folders and the final framework product.
  2. # 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME
  3. # 例如: FMK_NAME = "MyFramework"
  4. FMK_NAME=${PROJECT_NAME}  
  5. # Install dir will be the final output to the framework.
  6. # The following line create it in the root folder of the current project.
  7. INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework  
  8. # Working dir will be deleted after the framework creation.
  9. WRK_DIR=build  
  10. DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework  
  11. SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework  
  12. # -configuration ${CONFIGURATION}
  13. # Clean and Building both architectures.
  14. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build  
  15. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build  
  16. # Cleaning the oldest.
  17. if [ -d "${INSTALL_DIR}" ]  
  18. then  
  19. rm -rf "${INSTALL_DIR}"
  20. fi  
  21. mkdir -p "${INSTALL_DIR}"
  22. cp -R "${DEVICE_DIR}/""${INSTALL_DIR}/"
  23. # Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
  24. lipo -create "${DEVICE_DIR}/${FMK_NAME}""${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
  25. rm -r "${WRK_DIR}"
  26. open "${INSTALL_DIR}"
[python] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. # Sets the target folders and the final framework product.
  2. # 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME
  3. # 例如: FMK_NAME = "MyFramework"
  4. FMK_NAME=${PROJECT_NAME}  
  5. # Install dir will be the final output to the framework.
  6. # The following line create it in the root folder of the current project.
  7. INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework  
  8. # Working dir will be deleted after the framework creation.
  9. WRK_DIR=build  
  10. DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework  
  11. SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework  
  12. # -configuration ${CONFIGURATION}
  13. # Clean and Building both architectures.
  14. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build  
  15. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build  
  16. # Cleaning the oldest.
  17. if [ -d 

    相關推薦

    Ios更新實時程式碼更新動態更新動態framework

    動態更新,iOS有三種處理方案 1,開源框架reactive native,但是程式語言是js iOS app可以在執行時從伺服器拉去最新的js檔案到本讀,然後執行,因為js是一門動態的指令碼語言 所以可以在執行時直接讀取js檔案執行,也因此能夠實現iOS的熱更新

    iOS 更新實時程式碼更新動態更新動態framework

      允許轉載! demo 下載   只要稽核通過後,無須再次稽核,就可以動態更新,iOS有三種處理方案:    一、開源框架 reactive native,但是程式語言是js   二、lua 指令碼   三、使用oc語言的動態庫framewo

    深入理解java列舉程式碼更簡潔、易懂提升工作效率!

    以往設定常量,通常將常量在介面中,在JDK1.5版本新增列舉型別後就逐漸取代了這種常量定義方式 列舉常量定義 列舉常用方法 values():該方法可以將列舉型別成員以陣列的形式返回。 valueOf():該方法可以實現將普通字串轉換為列舉例項。 compare

    矩形ROI截圖實時顯示滑鼠的座標值顯示原圖與截圖C++程式

     //main.cpp檔案 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <stdio.h> using name

    WebStorm2017中專案更新智慧程式碼提示不顯示的解決方法

    出現這個問題的時候,我百度了網上各種解決方法,都沒有用,後來就莫名其妙的好了。寫一個部落格記錄一下,以後再遇到同樣的問題的時候,給自己提供一個解決方法,雖然不能確保是不是有效,但多一種方法也沒有任何問題。對解決方法進行了一個總結,總結如下: 1.File-Power Save Mode,檢視該

    利用svn鉤子hooks/post-commit實現程式碼更新自動執行指令碼

    1. 在svn伺服器對應的專案中會存在以下幾個目錄和檔案 conf  db  format  hooks  locks  README.txt 其中目錄hooks是放置程式碼提交執行的檔案 進入 hooks目錄新建一個 post-comm

    2018 阿里雲優惠大全彙總_阿里雲優惠券實時更新

    企業上雲,首選阿里雲!企業及個人首選!全部優惠入口 阿里雲全部優惠都在這裡!實時更新!各入口點選下面 1、阿里雲通用代金券,點選領取1888元 2、阿里雲高效能伺服器2折入口: 3、阿里雲企業級效能雲伺服器限時優惠 4、阿里雲自營建站

    關於vscode更新後 格式化程式碼造成函式括號後的空格被刪除單引號變雙引號問題的解決方法

    前段時間做專案時遇到了語法格式的警告即 究其原因是因為專案建立時選擇了 ESLint 來規範程式碼,由於在VSCode1.7.2中替換了內建格式化外掛。所以在新的專案中格式化程式碼後引發程式碼規範驗證錯誤,經過幾番研究之後終於將其解決下面貼出解決方案: 修改Vscode的配置檔案,不知

    AndroidStudio GiT 處理衝突(兩端更新程式碼處理程式碼衝突)

    1.如果同時有不止1人修改了,專案中的同一個檔案,此時點選pull 會彈出一個訊息,提示說會 override覆蓋掉你的本地版本,此時,點選androidStudio上面的 updateProject按鈕 此時選擇: merge Using Stash 然後點選ok,會提示你有

    通過複製程式碼建立專案功能如何在後期建立並更新到gitee程式碼倉庫

    第一步:git修改遠端倉庫地址  方法有三種: 1.修改命令 git remote origin set-url [url] 2.先刪後加 git remote rm origin git remote add origin [url] 3.直接修改config檔案 第二步: 參考

    程式碼】小技巧動態更新中。。。。

    若要在迴圈內部修改正在遍歷的序列(例如複製某些元素),建議您首先製作副本。在序列上迴圈不會隱式地建立副本。切片表示法使這尤其方便: >>> words = ['cat', 'window', 'defenestrate'] >>> for w in w

    Qt學習:QtCharts繪製動態曲線實時更新資料與座標軸

    1.首先是掌握qtchart的基本使用,封裝一個屬於自己的繪圖類: Mychart.h #pragma once #ifndef CHART_H #define CHART_H #include <QtCharts/QChart> #inc

    ios 企業證書明明已更新我的手機可以下載其他使用者都下載不了填坑

    前言:企業 $299的賬號遇到的問題。事情的經過是這樣的~ 上週五的晚上,同事在微信群裡說我們的app下載不了了,他們都試過了都是一團黑乎乎的在那,一直不動呢。what~!!額~怎麼可能上個星期還可以下載的呀,而且證書早就更新過了,怎麼會呢!於是我自己手機掃描下

    爬取微信好友資訊進行視覺化分析(頭像人臉識別部分已更新!)(程式碼已上傳)

    【Code】下載 1、專案說明 本次專案主要實現了以下功能: 2、微信好友資訊的獲取與檔案儲存 3、微信好友性別分析 4、微信好友地區分佈視覺化 5、微信好友個性簽名詞雲圖及好友備註詞雲圖 6、微信好

    不出門就知天下事的網站實時更新

    1,OpenCV  中文網  http://www.opencv.org.cn/ 2,伯樂線上   blog.jobbole.com 3,IT公司面試手冊  http://www.mianwww.com 4,菜鳥網  http://www.runoob.com/ja

    RxJava實戰(後臺執行耗時操作實時通知 UI 更新

    開源專案 RxJava-Android-Samples,這裡一共介紹了十八種RxJava2的使用場景,這一系列文章主要參考該專案進行。 我們經常會在後臺執行緒中去做一些耗時的操作,比如去網路取資料,處理的方法有 HandlerThread、Threa

    測試程式碼解決java gui swing多執行緒介面假死、僵死問題實現介面動態重新整理動態同步更新資料

    (原創) 測試程式碼,解決java gui swing多執行緒介面假死、僵死問題,實現介面動態重新整理,動態更新,同步顯示資料 主類: package testguimulitiplethread; /** * * @author Administrator */ public class Mai

    jenkins安裝構建第一個工程(更新程式碼到工作空間)

    1.安裝jenkins 第一種方式:可以再windows系統通過安裝包的方式直接安裝 第二種方式:下載jenkins.war,在tomcat執行,linux系統和windows系統都

    IOS學習之常見問題】蘋果開發者協議更新【Edit Phone Number】跳不出同意按鈕(紅色的警告)

    █ 問題:  ● 蘋果開發者協議更新後,跳不出同意按鈕  ● 有提示需要編輯手機號碼(以前沒填寫),修改後還是一樣  ● 部分人換了好幾張手機卡測試(和運營商沒關係),結果還是一樣  ● 部分人反應,在4月21號操作,可以成功,之後操作的就沒成功 

    ionic實現App動態更新更新

    本來自己要寫一篇熱更新的文章,發現有其他好文章,就推薦給大家: 補充一: 在第6步之後,生成的.chcpenv檔案裡的 { "content_url": "http://xxxxx.com",       //用於獲取檔案 "config_url