app測試中,ios和android的區(qū)別

app測試中ios和Android的區(qū)別:

1、Android長按home鍵呼出應用列表和切換應用,然后右滑則終止應用;

2、多分辨率測試,Android端20多種,ios較少;

3、機操作系統(tǒng),Android較多,ios較少且不能降級,只能單向升級;新的ios系統(tǒng)中的資源庫不能完全兼容低版本中的ios系統(tǒng)中的應用,低版本ios系統(tǒng)中的應用調用了新的資源庫,會直接導致閃退(Crash);

4、操作習慣:Android,Back鍵是否被重寫,測試點擊Back鍵后的反饋是否正確;應用數(shù)據(jù)從內存移動到SD卡后能否正常運行等;

5、push測試:Android:點擊home鍵,程序后臺運行時,此時接收到push,點擊后喚醒應用,此時是否可以正確跳轉;ios,點擊home鍵關閉程序和屏幕鎖屏的情況(紅點的顯示);

6、安裝卸載測試:Android的下載和安裝的平臺和工具和渠道比較多,ios主要有app store,iTunes和testflight下載;

7、升級測試:可以被升級的必要條件:新舊版本具有相同的簽名;新舊版本具有相同的包名;有一個標示符區(qū)分新舊版本(如版本號),對于Android若有內置的應用需檢查升級之后內置文件是否匹配(如內置的輸入法)

另外:對于測試還需要注意一下幾點:

1、并發(fā)(中斷)測試:鬧鈴彈出框提示,另一個應用的啟動、視頻音頻的播放,來電、用戶正在輸入等,語音、錄音等的播放時強制其他正在播放的要暫停;

2、數(shù)據(jù)來源的測試:輸入,選擇、復制、語音輸入,安裝不同輸入法輸入等;

3、push(推送)測試:在開關機、待機狀態(tài)下執(zhí)行推送,消息先死及其推送跳轉的正確性;應用在開發(fā)、未打開狀態(tài)、應用啟動且在后臺運行的情況下是push顯示和跳轉否正確;推送消息閱讀前后數(shù)字的變化是否正確;多條推送的合集的顯示和跳轉是否正確;

4、分享跳轉:分享后的文案是否正確;分享后跳轉是否正確,顯示的消息來源是否正確;

5、觸屏測試:同時觸摸不同的位置或者同時進行不同操作,查看客戶端的處理情況,是否會crash等iOS和Android的區(qū)別,想了很久,也沒想出特別多,這兩個系統(tǒng)有些東西越來越通用(設計上來說),尤其是Android上,可以實現(xiàn)所有的效果,當然有些看上去iOS很像。長得和iOS很像的Android應用很多,好多大牌也這么做,比如說現(xiàn)在的QQAndroid5.1.1。這樣只需要一套設計,出一套資源就OK了,比較高效節(jié)約。兩個平臺的使用體驗比較統(tǒng)一,但我還是喜歡有各系統(tǒng)設計本來特色的設計,安卓感覺的應用,wp感覺的應用。

做一款純粹的Android應用,真是讓人興奮的一件事情。

區(qū)別,在這兩種系統(tǒng)的原生應用里就能發(fā)現(xiàn)。Android 一直在尋找合適的設計語言,最新的material design,和以前相比,又是一個大轉變。iOS相對比較穩(wěn)定。

這里的區(qū)別,聚焦在界面設計中,不涉及底層的內容(是你不懂寫不出來吧)區(qū)別,這些的區(qū)別也不絕對。

1 導航方式:

iOS的Tab放在頁面底部,不能通過滑動來切換,只能點擊。也有放在上面的,也不能滑動,但有些Tab本身可以滑動,比如天貓的。還有新聞類的應用。

Android一般放在頁面頂端,可以通過滑動頁面來切換Tab,當然Tab可以點擊切換,Tab多的話,Tab本身也可以滑動。比如豌豆莢,百度貼吧,QQ??傊?,Android啥都可以有。(其他導航方式,見上一篇)

2 單條item的操作

iOS單條item的操作有兩種,點擊和滑動,點擊一般進入一個新的頁面,滑動會出現(xiàn)對這條item的一些常用操作,如微信里滑動一條對話,會出現(xiàn)標記未讀和刪除。

Android中,單條item的操作也有兩種,點擊和長按,點擊一般進入一個新的頁面。長按進入一個編輯模式,可以在里面進行批量和其他一個操作,比如刪除,頂置等等。比如小米的短信頁面;長按也可以彈出情境操作欄dialog,進行操作,比如Android版的微信。

例外的是,Android里面也可以有單條item的滑動,如新版QQ,這種比較少見。安卓L的短信,可以滑動進行歸檔。大Android啥都可以有。

3 關于排版

iOS喜歡在居中排布

Android喜歡左對齊,感覺左對齊更安卓。

4 實體鍵

iOS只有一個實體鍵(音量,電源不算哈),home鍵,這個鍵有這么幾個功能:

1按一次,回到桌面。

2 雙擊,出現(xiàn)多任務界面

3iOS8里面,輕觸兩下Home鍵,調出單手模式

4 指紋解鎖

Android有四個實體鍵(現(xiàn)在很多被屏幕上的虛擬鍵代替,但功效是一樣的)4.4以下的分別是back鍵,home鍵,menu鍵,和搜索鍵。4.4及以上,是back鍵,home鍵,多任務鍵。安卓原生是這樣,經(jīng)過優(yōu)化的Android就不一定了,比如魅族的smart bar,根據(jù)當前頁面情景變化,不過蠻好用。

Android的back鍵,在大部分情況下,和頁面上的返回功效一樣。不過,Android的back鍵可以在應用件切換,還可以返回主屏幕。這個iOS里面的鍵不能在應用間直接切換。

5 動效

兩者的動效似乎差別不大,iOS有的,安卓都有。iOS實現(xiàn)的通常更加流暢,卡頓較少。

兩者都強調模擬現(xiàn)實世界的動畫效果,比如物體運動有一定的加速度,動畫的結束和開始速度小,中間速度大。

谷歌最新推出的material design,變化比較大,但這種設計風格還沒有大面積使用。這種設計風格,最突出的特點就是有一個懸浮按鈕。這個懸浮按鈕,代表了這個頁面的主要操作,位置可以在頁面上部,也可以在下部分。這次的動效也是亮點,動畫實時實地的反饋用戶的操作,動畫在用戶的點擊出開始觸發(fā)。又很多類似漣漪的效果。這種按鈕的動效變化,概念稿多,好像還沒有實際的案例。(馬上就有啦...正在做)

6 浮窗

安卓里可以看到各種浮窗,流量,清理內存等等。iOS暫時還不支持這樣的浮窗。越獄的貌似可以。

這兩個平臺,只有想不到,幾乎沒有不可以實現(xiàn)。安卓更加開放,可自定義的東西也更多,做花樣的話,安卓的限制更少

前言

總結了在做iOS與Android安全研究時,需要了解的區(qū)別。包括系統(tǒng)架構的區(qū)別,安裝包的區(qū)別,文件系統(tǒng)的區(qū)

別,二進制文件的區(qū)別,安全機制的區(qū)別與版權保護的區(qū)別

一、系統(tǒng)架構的區(qū)別(左邊iOS,右邊Android)

1.iOS架構

分為4層,分別為

(1)cocoa Touch層:包括Foundation Framework,UIkit Framework,Address Book UI Framework

(2)媒體層:包括圖像(Quartz,Core Animation,OpenGL ES),音頻(Core Audio,OpenAL)和視頻技術

(3)核心服務層:例如CoreFoundation.framework是基于C語言的接口集,提供應用的基本數(shù)據(jù)管理和服務功

能;CFNetwork.framework是一組高性能的C語言接口集,提供網(wǎng)絡協(xié)議的面向對象的抽象。開發(fā)者可以使用

CFNetwork框架操作協(xié)議棧,并且可以訪問底層的結構如BSD sockets等;Security.framework提供管理證書,

公鑰/私鑰對和信任策略等的接口來確保應用數(shù)據(jù)的安全性

(4)核心OS層: 基于Mac操作系統(tǒng)

2.Android架構

分為4層,分別為

(1)應用程序:使用java編寫

(2)應用程序框架:

活動管理器:用來管理應用程序生命周期并提供常用的導航回退功能

資源管理器:提供非代碼資源的訪問,如本地字符串、圖形和布局文件

內容提供器:用來存放和獲取數(shù)據(jù)并使用這些數(shù)據(jù)可以被所有應用程序訪問

XMPP服務器:基于XML的網(wǎng)絡實時通訊協(xié)議

(3)系統(tǒng)運行庫+Android運行時

系統(tǒng)運行庫:android包括一些c/c++庫,這些庫能被android系統(tǒng)中的不同的組件使用,例如libc是一個從BSD

繼承來的標準c系統(tǒng)函數(shù)庫;webkit為Web瀏覽器引擎,支持Android瀏覽器(蘋果Safari的引擎也是webkit)。

SQLite為功能強勁的輕量級關系數(shù)據(jù)庫引擎(iOS也是采用的該數(shù)據(jù)庫引擎)。

Android運行時:包括核心庫(基本類庫,例如data structure,network,file system等),很多實現(xiàn)代碼都來

自Apache Harmony項目,主要目的時保證虛擬機的類庫能夠與Java SE類庫最大程度的兼容)與Dalvik虛擬機(

用于運行dex:dalvik executable格式二進制可執(zhí)行文件,該虛擬機較之java虛擬機的最大區(qū)別是Dalvik基于

寄存器)

(4)linux內核:基于linux 2.6內核

總的來說,如果要深層次挖掘Android的漏洞就要明白linux內核安全,如果要挖身深層次挖掘iOS的漏洞就要了

解Mac內核安全(BSD內核安全)。

二、安裝包的區(qū)別(左邊iOS,右邊Android)

總的來說,安裝包由可執(zhí)行文件,資源文件,簽名文件,配置文件組成。

三、文件系統(tǒng)的區(qū)別(左邊iOS,右邊Android)

注意: android的sdcard是不受文件訪問控制約束的

四、二進制文件的區(qū)別

1. iOS二進制文件格式

mach-o , dylib

2.Android二進制文件的區(qū)別

dex, so(ELF shared object)

五、安全機制的區(qū)別

1. iOS安全機制

(1)安全沙箱

進程隔離,每個程序都有自己的虛擬地址空間。應用程序在安裝之后,系統(tǒng)就通過計算得到一個標識,然后基

于應用程序的根目錄和這個標識構件一個指向應用程序目錄的路徑,其他應用程序都不能進行訪問。iOS 的沙

箱是基于TrustBSD策略框架的內核擴展模塊,針對每個進程都可以制定特殊的沙箱配置文件,沙箱配置文件編

譯后以2進制的方式保存在KernelCache文件中(iOS下),需反匯編成可讀的文本格式來查看內核中的沙盒規(guī)則

(2)代碼簽名

apple需要所有開發(fā)人員對自己的iPhone應用程序使用數(shù)字簽名技術。這個簽名用來標識應用程序的開發(fā)者以及

保證應用程序在簽名之后不被更改和損壞。開發(fā)者證書由apple提供(這是與android最大的區(qū)別,android是自

簽名),有以下兩類證書:

Developer Certificate:用于本機測試

Distribution Certificate:Ad-hoc用于100臺設備以內的測試和共享;app store用于發(fā)布應用程序

所有的可執(zhí)行文件、庫文件都需要Apple簽名后才可以運行在iOS中,內核會在調用execve之前檢測Mach-o文件

中的LC_CODE_SIGNATURE段是否有效和可信任的,iOS啟動的時候同樣也會檢測KernelCache的簽名是否有效

代碼簽名的破壞可見《iOS平臺游戲安全之IPA破解原理及防御》

(3)ASLR(address space layout randomisation)/DEP

PIE: position independent executable

iOS 4.3后開始支持該功能,iOS上的預裝應用都開啟了該功能

ASLR的其他信息可見《ASLR》

DEP(Data execution Prevention),內核不允許將頁面保護標志設置為RWS,并在ARMv6引入XN(execute

never)標志位,從而在硬件上支持執(zhí)行保護。

(4)文件系統(tǒng)加密

Data protection APIs

NSFileProtectionNone

NSFileProtectionComplete

NSFileProtectionCompleteUnlessOpen

NSFileProtectionCompleteUntilUserAuthentication

KSecAttrAccessibleAlways

KSecAttrAccessibleWhenUnlocked

KSecAttrAccessibleAfterFirstUnlock

KSecAttrAccessibleAlwaysThisdeviceOnly

KSecAttrAccessibleWhenUnlockedThisDeviceOnly

KSecAttrAccessibleAfterFirstUnlockThisDeviceOnly

2.Android安全機制

(1)安全沙箱

每一個Android應用程序(apk文件)會在安裝時分配一個獨有的linux用戶ID(即一個用戶id識別一個應用程序

),這就為它建立了一個沙箱,使其不能與其他應用程序進行接觸。這個用戶ID在安裝時分配,并在該設備上

一直保持同一個數(shù)值。所有存儲在應用程序中的數(shù)據(jù)都會賦予該應用程序的用戶ID,使其他應用程序無法訪問

這些數(shù)據(jù)(如需要訪問,見(4)文件訪問控制)。

(2)代碼簽名

采用自簽名機制,不需要權威機構簽名和審核,完全由用戶自行判斷是否信任該程序(與iOS區(qū)別很大)。簽名

是為了:

識別代碼的作者

檢測應用程序是否發(fā)生了變化

在應用程序之間建立信任:使用相同數(shù)字簽名簽署的兩個應用程序可以相互授予權限來反問基于簽名的API,如

果他們共享用戶ID,那么也可以運行在同一進程中,從而允許訪問對方的代碼和數(shù)據(jù)(見(4)文件訪問控制)

代碼簽名的詳細機制可見《Android簽名與簽名校驗》

(3)manifest權限管理

Android要求用戶在使用API時進行申明,稱為permission,對一些敏感API的使用在安裝時就可以給用戶風險提

示,由用戶確定是否安裝,例如READ_CONTACTS為讀取通訊錄數(shù)據(jù)權限。權限在AndroidManifest.xml文件里進

行設置,通過元素添加子元素,如下圖所示

permission分為4個保護等級:normal,dangerous,signature,signatureorsystem。不同的保護級別代表程

序要使用此權限時的認證方式。

normal:只要申請就可以使用

dangerous:在安裝時需要用戶確認才可以使用,最經(jīng)常使用的權限

signature:告訴android系統(tǒng)這個權限只能授予擁有同樣數(shù)字簽名并且定義了該權限的應用程序

signatureorsystem:需要開發(fā)者的應用和系統(tǒng)使用同一個數(shù)字證書,即需要系統(tǒng)或者平臺簽名,真實手機中的

系統(tǒng)簽名只有廠商知道

應用程序也可以定制權限以保護自己的資源,當前ita應用程序想要訪問一個應用程序的受保護資源時,就必須

通過它們自己的manifest文件請求適當?shù)臋嘞?/p>

(4)文件訪問控制

因為安全沙箱的存在導致不同應用程序之間的數(shù)據(jù)(文件)是隔離的。在通過

getSharedPreferences(filename,operatingMode)

openFileOutput(filename,operatingMode)

openOrCreateDatabase(filename,operatingMode, SQLiteDatabase.CursorFactory)

等方法來創(chuàng)建一個新文件時,可以通過指定文件的存儲方式operationMode來進行文件的訪問控制,android文

件存儲有以下4種方式:

Context.MODE_PRIVATE:默認操作模式,代表該文件是私有數(shù)據(jù),只能被應用本身訪問,在該模式下,寫入的

內容會覆蓋原文件的內容

Context.MODE_APPEND:代表該文件是私有數(shù)據(jù),只能被應用本身訪問,在該模式下,會檢查文件是否存在,存

在就往文件追加內容,否則就創(chuàng)建新文件

Context.MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取

Context.MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。

除了使用Context.MODE_WORLD_READABLE/Context.MODE_WORLD_WRITEABLE標識位來使兩個程序相互訪問對方的

資源。還可以通過設置AndroidManifest.xml文件的manifest標簽中的sharedUserId屬性,來使得不同的應用程

序共用同一個用戶ID,并且這些應用程序還使用同一個簽名簽署,在滿足以上兩個條件(共同的sharedUserID

,共同的簽名)的情況下就可以實現(xiàn)不同應用程序相互資源的訪問了,如下圖所示

(5)ASLRandroid 4.1后才開始支持完整版功能

六、版權保護的區(qū)別

1. iOS

App store,采用FairPlay DRM保護商店下載應用

2. Android

(1)google play store,采用Android License Verification Library保護商店下載應用

(2)Amazon Appstore DRM

(3)其他

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容