1. OrmLite
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比湘鄉(xiāng)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式湘鄉(xiāng)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋湘鄉(xiāng)地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
OrmLite 不是 Android 平臺專用的ORM框架,它是Java ORM。支持JDBC連接,Spring以及Android平臺。語法中廣泛使用了注解(Annotation)。
2. SugarORM
SugarORM 是 Android 平臺專用ORM。提供簡單易學(xué)的APIs??梢院苋菀椎奶幚?對1和1對多的關(guān)系型數(shù)據(jù),并通過3個函數(shù)save(), delete() 和 find() (或者 findById()) 來簡化CRUD基本操作。
要啟用SugarORM,需要在你的應(yīng)用程序 AndroidManifest.xml 配置中添加如下meta-data標(biāo)簽:
meta-data android:name="DATABASE" android:value="my_database.db" /
meta-data android:name="VERSION" android:value="1" /
meta-data android:name="QUERY_LOG" android:value="true" /
meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain" /
然后就可以從SugarORM擴(kuò)展需要保存的數(shù)據(jù)類:
public class User extends SugarRecordUser {
String username;
String password;
int age;
@Ignore
String bio; //this will be ignored by SugarORM
public User() { }
public User(String username, String password,int age){
this.username = username;
this.password = password;
this.age = age;
}
}
要添加一個User,代碼如下:
User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database
3. GreenDAO
當(dāng)性能很重要時(數(shù)據(jù)訪問頻繁),GreenDao是一個很快的解決方案,它能夠支持?jǐn)?shù)千條記錄的CRUD每秒,和OrmLite相比,GreenDAO要快幾乎4.5倍。(準(zhǔn)確數(shù)據(jù)請自行benchmark)。
GreenDAO小于100KB,所以對于應(yīng)用程序APK的大小影響很小。
這里有一個教程,演示如何使用Android Studio,在Android應(yīng)用程序中使用GreenDAO框架。
4. Active Android
Active Record(活動目錄)是Yii、Rails等框架中對ORM實(shí)現(xiàn)的典型命名方式。Active Android 幫助你以面向?qū)ο蟮姆绞絹聿僮鱏QLite。
5. Realm
Realm 是一個將可以使用的Android ORM,基于C++編寫,直接運(yùn)行在你的設(shè)備硬件上(不需要被解釋),因此運(yùn)行很快。它同時是開源跨平臺的,iOS的代碼可以在GitHub找到,你還可以找到Objective C以及Swift編寫的Realm使用實(shí)例。
公司開發(fā)的SDK,是集成了各個平臺的商品,包括購買、分享、提現(xiàn)等功能,為了加快進(jìn)度,我是使用了一些第三方。但是有些需求,比如分享到微信朋友圈或者還有,必須用到微信的SDK。考慮到后期的維護(hù)成本和集成,筆者采用了cocoapods管理第三方庫。
筆者有片文章專門介紹SDK的開發(fā)步驟的,大家可以參考,我這里就直接進(jìn)入主題了。
首先,你創(chuàng)建一個靜態(tài)的framework工程MyTestSDK,把這個工程集成cocpapods,至于如何集成cocpapods,網(wǎng)上有教程,自己搜索。這個時候把你項(xiàng)目中所用的第三方庫添加到Podfile文件中,然后 pod install。這個時候你command + B 編譯運(yùn)行,如果你的第三方庫中還有Bundle資源,那么編譯后,第三方庫的bundle資源會被編譯,一起放到Products文件下的framework文件中,右鍵Show in Finder就會看到。如下圖所示的MBProgressHUD文件夾,里面都是MBProgressHUD第三方的資源文件。
然后把你的項(xiàng)目放入SDK工程中,編譯運(yùn)行一下,看看有沒有錯誤。之所以先把SDK工程選用cocoapods管理,就是怕你的項(xiàng)目放入SDK中運(yùn)行報(bào)錯。沒有任何問題,直接編譯即可。
由于SDK中的第三方是通過cocoapods管理的,所以接入者的項(xiàng)目也要用cocoapods管理。
1:把SDK工程中,Products文件夾下的framework文件copy到項(xiàng)目中,最好項(xiàng)目中建立一個文件夾,專門放SDK和bundle。我是放到了一個文件夾中,方便分類尋找。如下圖所示:
2:打開終端,cd到SDK所在的文件夾下,執(zhí)行如下命令,回車,創(chuàng)建spec文件。
其中,MyTestSDK是你的SDK名稱。
創(chuàng)建出來的spec文件,是個很長的文件,但是大部分都是注釋的,我這里只提取了有用的信息展示出來:
然后把spec中依賴的第三方庫,逐個加入到項(xiàng)目中的Podfie文件中。然后 終端打開,cd到自己的項(xiàng)目中,pod install即可。
本人親自測試過的,No Problem。當(dāng)初感覺SDK如果依賴了第三方庫,接入的項(xiàng)目中也有同樣的第三方庫,會不會沖突啊,感覺好難搞啊。事實(shí)證明,通過spec進(jìn)行依賴,可以很好的解決這個問題,也就沒有那么麻煩了。
首次開發(fā)SDK還是遇到了很多問題,運(yùn)行出現(xiàn)很多bug,但是最后還是一一解決了,就是沒有記錄下bug和解決發(fā)的方法。
1;path路徑不對,就會報(bào)錯 ,如下
是因?yàn)槲野崖窂綄懗闪耍?/p>
其實(shí)正確的寫法是:把“/”放在前面
2:SDK中有第三方,但是項(xiàng)目中的Podfile里面沒有這個第三方,報(bào)錯如下所示:
解決辦法是就是在項(xiàng)目中的 Podfile里面加入缺失的第三方庫,重新 pod install。
一般的數(shù)據(jù)量很小的項(xiàng)目,沒必要使用數(shù)據(jù)庫,如果只是保存寫用戶信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一個項(xiàng)目都需要保存一個使用狀態(tài),不能每次打開項(xiàng)目的時候都和第一次運(yùn)行一樣,完全新,要給人以使用過的感覺就要存儲一些歷史數(shù)據(jù)。如果怕影響用戶體驗(yàn)的話,可以多開線程在后臺去對數(shù)據(jù)操作(數(shù)據(jù)量大的情況下),記得對線程要回收。如果你對保存數(shù)據(jù)比較迷茫的話,你可以google一下ios的四種數(shù)據(jù)持久化,對于sqlite和coredata,我個人認(rèn)為只是兩種不同的存儲方法,一種是小型輕量級sqlite數(shù)據(jù)庫,所有移動設(shè)備經(jīng)常用到的,還有一種是蘋果針對ios操作系統(tǒng)開發(fā)的coredata數(shù)據(jù)存儲,具體孰勝孰略還有待你自己去了解,一般如果我的數(shù)據(jù)庫要非常多的表格互相關(guān)聯(lián)最后查詢一條結(jié)果那么我會采用sqlite,如果存儲一些有規(guī)律的數(shù)據(jù)那么我會采用coredata,沒有哪個更好的說法,只能說這兩種都各有千秋,而我聽前輩們說,coredata只是蘋果對sqlite的又一次封裝而已,方便操作但也局限操作
1.goole開源?
2.iOS基礎(chǔ)知識
;page=1
3.OC的缺陷和陷阱
4.文頂頂博客園
5.FaceBook
6.objc中國
7.唐巧的技術(shù)博客
8.念茜的博客
9.code4app
10.cocoaChina
11.IT 社區(qū)
12.C博客
13.CocoaPods的安裝及使用
14.標(biāo)準(zhǔn)時間與時間戳相互轉(zhuǎn)化
15.博客 loadView、viewDidLoad及viewDidUnload的關(guān)系
16.iOS即時通訊語音聊天本地音頻處理
17.承影博客
18.常用加密
19.正則表達(dá)式
20.iphone開發(fā)過程中調(diào)試多次release問題?
21.使用 Xcode 和 Instruments 調(diào)試解決 iOS 內(nèi)存泄露
22.iOS開發(fā)中常見的一些bug
23.玩轉(zhuǎn)swift
24.友盟分享
25.objc中國
26.ViewController的切換
27.iOS 平臺 Cocos2d-x 項(xiàng)目接入新浪微博 SDK 的坑
28.joosonmao的專欄(里面的文章都很棒)
29.移動IM(環(huán)信)
環(huán)信XMPP:
30.各種錯誤匯總博客園
31.菜鳥筆記
;page=1
32.開發(fā)者賬號注冊和支付
33.在Xcode中使用Git進(jìn)行源碼版本控制
34.PNChart(圖像繪畫)
35.微信公眾平臺
36.常用加密
37.cocoaPod相關(guān)網(wǎng)址:
38.2014年整理的IOS開發(fā)常用庫
39.挺好的一個網(wǎng)站
40、響應(yīng)者鏈
41、改變UITabBar的背景色
;utm_medium=referral
42、 IOS 集成到支付寶的步驟及問題
43、 XMPP 協(xié)議實(shí)現(xiàn)原理介紹
44、 iOS開發(fā)多線程篇—多線程簡單介紹
45、KVC 與 KVO理解
46、 iOS 設(shè)計(jì)模式之單例模式
47. 一些第三方庫的了解
動態(tài)鏈接庫是以 .dylib 和 .framework 為結(jié)構(gòu)的文件。
1.把framework封裝進(jìn)另一個framework中?
首先,蘋果大方的告訴我們他們是不允許這樣做的。。。
其次,實(shí)際上把靜態(tài)庫封進(jìn)另一個靜態(tài)庫確實(shí)是行不通的;
然而,把動態(tài)庫封進(jìn)靜態(tài)庫是可行的:
使用方式:
場景2:
當(dāng)你在靜態(tài)庫中使用了動態(tài)庫的方法,當(dāng)你使用此靜態(tài)庫時也要在project中引入動態(tài)庫并且做如下圖操作:
否則,會報(bào)錯,錯誤如下:
dyld: Library not loaded: @rpath/ZegoAVKit2.framework/ZegoAVKit2
Referenced from: /var/containers/Bundle/Application/0A23D0E0-EE5E-4E18-8020-D9F7D2F3B5CD/ahwx.app/ahwx
Reason: image not found
1.證書引起的錯誤
控制臺錯誤截圖
在動態(tài)庫內(nèi)容沒有問題的情況下,大多是由于沒有對動態(tài)庫簽名導(dǎo)致的。iOS 8以后,蘋果支持使用自定義的動態(tài)庫,但不能上架到AppStore。我們的是企業(yè)級項(xiàng)目,不上架沒關(guān)系。
先查看一下你的動態(tài)庫內(nèi)容
解決辦法:在生成動態(tài)庫時選擇一個Team進(jìn)行簽名即可。
2.Swift版本引起的錯誤(注意:下圖問題不一定是由于swift版本引起的,我遇到的問題就是swift版本引起了下面的問題)
解決方法:把下面的設(shè)置為YES
詳細(xì)說明我的問題:在之前,也就是Xcode7.3,動態(tài)庫是swift2.3寫的。通過loadAndReturnError加載是沒有問題的,因?yàn)閄code7.3對應(yīng)的就是swift2.3。swift3.0是Xcode8才推出來的,所以就沒問題。而現(xiàn)在,Xcode升級到的8.2,而swift也升到了3.0;但是,這個動態(tài)庫還是swift2.3,同時:工程設(shè)置里使用的是最新的swift版本,所以就會出現(xiàn)這個問題。