『壹』 android 手機自動化測試工具有哪些
1、Monkey是Android SDK自帶的測試工具,在測試過程中會向系統發送偽隨機的用戶事件流,如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試,也有日誌輸出。實際上該工具只能做程序做一些壓力測試,由於測試事件和數據都是隨機的,不能自定義,所以有很大的局限性。
2、MonkeyRunner也是Android SDK提供的測試工具。嚴格意義上來說MonkeyRunner其實是一個Api工具包,比Monkey強大,可以編寫測試腳本來自定義數據、事件。缺點是腳本用Python來寫,對測試人員來說要求較高,有比較大的學習成本。
3、Instrumentation是早期Google提供的Android自動化測試工具類,雖然在那時候JUnit也可以對Android進行測試,但是Instrumentation允許你對應用程序做更為復雜的測試,甚至是框架層面的。通過Instrumentation你可以模擬按鍵按下、抬起、屏幕點擊、滾動等事件。Instrumentation是通過將主程序和測試程序運行在同一個進程來實現這些功能,你可以把Instrumentation看成一個類似Activity或者Service並且不帶界面的組件,在程序運行期間監控你的主程序。缺點是對測試人員來說編寫代碼能力要求較高,需要對Android相關知識有一定了解,還需要配置AndroidManifest.xml文件,不能跨多個App。
4、UiAutomator也是Android提
『貳』 android開發框架有哪些
主要總結了7個好用的android 開發框架推薦給你:
一、 Afinal
Afinal是一個Android的ioc,orm框架,內置了四大模塊功能:,FinalBitmap,FinalDb,FinalHttp。通過,我們可以通過註解的方式進行綁定ui和事件。通過finalBitmap,我們可以方便的載入bitmap圖片,而無需考慮oom等問題。通過finalDB模塊,我們一行代碼就可以對android的sqlite資料庫進行增刪改查。通過FinalHttp模塊,我們可以以ajax形式請求http數據。
功能:
一個android的ioc,orm框架,內置了四大模塊功能:,FinalBitmap,FinalDb,FinalHttp。通過,我們可以通過註解的方式進行綁定ui和事件。通過finalBitmap,我們可以方便的載入bitmap圖片,而無需考慮oom等問題。通過finalDB模塊,我們一行代碼就可以對android的sqlite資料庫進行增刪改查。通過FinalHttp模塊,我們可遲戚以以ajax形式請求http數據。
優點:功能比較全面,文檔完善,代碼效率比較高。
缺點:沒有項目demo,框架的時間比較久,代碼冗餘比較多(這也是無可避免的),文檔比較老跟不上代碼更新進度。
二、 xUtils
xUtils:可以說是Afinal的升級版。
xUtils 包含了簡旦陪很多實用的android工具。
xUtils 支持大文件上傳,更全面的http請求協議支持(10種謂詞),擁有更加靈活的ORM,更多的事件註解支持且不受混淆影響...
xUitls 最低兼容android 2.2 (api level 8)
三、
是一個免費的開源的、簡易的、遵循Apache2開源協議發布的Android開發框架,其開發宗旨是簡單、快速的進行Android應用程序的開發,包含Android
mvc、簡易sqlite orm、ioc模塊、封裝Android
httpclitent的http模塊,具有快速構建文件緩存功能,無需考慮緩存文件的格式,都可以非常輕松的實現緩存,它還基於文件緩存模塊實現了圖片緩存功能,在android中載入的圖片的時候,對oom的問題,和對載入圖片錯位的問題都輕易解決。他還包括了一個手機開發中經常應用的實用工具類,如日誌管理,配置文件管理,android下載器模塊,網路切換檢測等等工具
四、 LoonAndroid
如果你想看ui方面的東西,這里沒有,想要看牛逼的效果這里也沒有。這只是純實現功能的框架,它的目標是節省代碼量,降低耦合,讓代碼層次看起來更清晰。整個框架一部分是網上的,一部分是我改的,為了適應我的編碼習慣,還有一部分像orm完全是網上的組件。在此感謝那些朋友們。
整個框架式的初衷是為了偷懶,之前都是一個功能一個jar,做項目的時候拉進去,這樣對於我來說依然還是比較麻煩。最後就導致我把所有的jar做成了一個工具集合包。
有很多框架都含有這個工具集合里的功能,這些不一定都好用,因為這是根據我個人使用喜歡來實現的,如果你們有自己的想法,可以自己把架包解壓了以後,源碼拉出來改動下。
目前很多框架都用到了註解,除了沒有入侵我們應用的代碼以外,其他的基本上都有,要麼是必須繼承框架裡面的activity,要麼是必須在activity的oncreat裡面調用某個方法。
整個框架式不同於,Roboguice等ioc框架,這是一個類似spring的實現方式。在整應用的生命周期中找到切入點,然後對activity的生命周期進行攔截,然後插入自己的功能。
五、
又叫KJLibrary,是一個android的orm 和 ioc
框架。同時封裝了android中的Bitmap與Http操作的框架,使其更加簡單易用;
的設計思想是通過封裝Android原生SDK中復雜的復雜操作而達到簡化Android應用級開發,最終實現快速而又安全的開發APP。我們提倡用最少的代碼,完成最多的操作,用最高的效率,完成最復雜的功能。
功能:
一個android的orm 和 ioc 框架。同時封裝了android中的Bitmap與Http操作的框架,使其更加簡單易用;
開發框架的設計思想是通過封攔蠢裝Android原生SDK中復雜的復雜操作而達到簡化Android應用級開發,最終實現快速而又安全的開發APP。總共分為五大模塊:UILibrary,HttpLibrary,DBLibrary。
六、 dhroid
dhroid 是基於android 平台,
極速開發框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展.使你更快,更好的開發商業級別應用
功能:
1.Ioc容器: (用過spring的都知道)視圖注入,對象注入,介面注入,解決類依賴關系
2.Eventbus: android平台事件匯流排框架,獨創延時事件,事件管理輕松
3.Dhnet: 網路http請求的解決方案,使用簡單,減少代碼,自帶多種網路訪問緩存策略
4.adapter模塊: 數據綁定輕松,不用寫多餘的adapter,天生網路支持(一行代碼搞定載入,刷新問題)
5.DhDb: android中sqlite的最輕量orm框架(增刪改查輕松搞定)
6.Perference: android自帶Perference 升級版,讓你的Perference更強大,更方便
工具集合 JSONUtil(安全處理json),ViewUtil(數據綁定更快) (非同步任務工具)...
七、
SmartAndroid是一套給
Android開發者使用的應用程序開發框架和工具包。它提供一套豐富的標准庫以及簡單的介面和邏輯結構,其目的是使開發人員更快速地進行項目開發。使用
SmartAndroid可以減少代碼的編寫量,並將你的精力投入到項目的創造性開發上。
功能:
SmartAndroid 擁有全范圍的類庫,可以完成大多數通常需要的APP開發任務,包括:非同步網路操作相關所有功能、強大的圖片處理操作、輕量級ORM資料庫Sqlite庫、zip操作、動畫特效、Html等解析採集、事件匯流排EventBus/Otto、Gson(Json)、AQuery、主流所有UI控制項(例如:ActionbarSherlock,SlidingMenu,BottomView,Actionbar,DragListView等10多種UI庫)等。
『叄』 android開發一般都使用什麼框架
Android開發框架介紹
編輯文檔
學分 +2
開發框架方麵包含基本的應用功能開發、數據存儲、網路訪問這三大塊:
一、應用方面
一般而言一個標準的Android程序由如下4部分組成即Activity、Broadcast Intent Receiver、Service、Content Provider: 1. Activity是最頻繁、最基本的模塊,在Android中,一個Activity就是手機上一屏,相當於一個網頁一樣,所不同的是,每個Activity運行結束了,有個返回值,類似一個函數一樣。Android系統會自動記錄從首頁到其他頁面的所有跳轉記錄並且自動將以前的Activity壓入系統堆棧,用戶可以通過編程的方式刪除歷史堆棧中的Activity Instance。
Activity類中主要是跟界面資源文件關聯起來(res/layout目錄下的xml資源,也可以不含任何界面資源),內部包含控制項的顯示設計、界面交互設計、事件的響應設計以及數據處理設計、導航設計等application設計的方方面面。 2. Broadcast Intent Receiver
Intent提供了各種不同Activity進行跳轉的機制,譬如如果從A activity跳轉到B activity,使用Intent來實現如下: Intent in = new Intent(A.this, B.class); startActivity(in);
BroadcastReceiver提供了各種不同的Android應用程序進行進行進程間通訊的機制,譬如當電話呼叫來臨時,可以通過BroadcastReceiver發布廣播消息。對於用戶而言,BroadcastReceiver是不透明的,用戶無法看到這個事件,BroadcastReceiver通過NotificationManager來通知用戶這些事件發生了,它既可以在資源AndroidManifest.xml中注冊,也可以在代碼中通過Context.registerReceiver()進行注冊,只要是注冊了,當事件來臨的時候,即時程序沒有啟動,系統也在需要的時候會自動啟動此應用程序;另外各應用程序很方便地通過Context.sendBroadcast()將自己的事情廣播給其他應用程序;
3. Service,跟Windows當中的Service完全是一個概念,用戶可以通過startService(Intent service)啟動一個Service,也可通過Context.bindService來綁定一個Service.
4. Content Provider,由於Android應用程序內部的數據都是私有的,Content Provider提供了應用程序之間數據交換的機制,一個程序可以通過實現一個ContentProvider的抽象介面將自己的數據暴露出去,並且隱蔽了具體的數據存儲實現,標準的ContentProvider提供了基本的CRUD(Create,Read,Update,Delete)的介面,並且實現了許可權機制,保護了數據交互的安全性; 一個標準的Android應用程序的工程文件包含如下幾大部分: -> java源代碼部分(包含Activity),都在src目錄當中;
-> R.java文件,這個文件是Eclipse自動生成與維護的,開發者不需要修改,提供了Android對的資源全局索引; -> Android Library,這個是應用運行的Android庫;
-> assets目錄,這個目錄裡面主要用與放置多媒體等一些文件;
-> res目錄,放置的是資源文件,跟VC中的資源目錄基本類似,其中的drawable包含的是圖片文件,layout裡麵包含的是布局文件,values目錄裡面主要包含的是字元串(strings.xml)、顏色(colors.xml)以及數組(arrays.xml)資源;
-> AndroidManifest.xml,這個文件異常重要,是整個應用的配置文件,在這個文件中,需要聲明所有用到的Activity、Service、Receiver等。
『肆』 有哪些 Android 的開源界面庫
比較火爆的Android開源庫有以下:
1、volley
主要有以下模塊:
(1) JSON,圖像等的非同步下載;
(2) 網路請求的排序(scheling)
(3) 網路請求的優先順序處理
(4) 緩存
(5) 多級別取消請求
(6) 和Activity和生命周期的聯動(Activity結束時同時取消所有網路請求)2、android-async-http
主要有以下模塊:
(1) 在匿名回調中處理請求結果
(2) 在UI線程外進行
(3) 文件斷點上傳
(4) 智能重試
(5) 默認gzip壓縮
(6) 支持解析成Json格式
(7) 可將Cookies持久化到SharedPreferences 3、Afinal框架
主要有四大模塊:
(1) 資料庫模塊:android中的
,使用了線程池對sqlite進行操作。
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
(3) 網路模塊:通過httpclient進行封裝http數據請求,支持ajax方式載入,支持下載、上傳文件功能。
(4) 圖片緩存模塊:通過FinalBitmap,imageview載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。4、xUtils框架
主要有四大模塊:
(1) 資料庫模塊:android中的
,一行代碼就可以進行增刪改查;
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI,資源和事件綁定;
(3) 網路模塊:支持同步,非同步方式的請求;
(4) 圖片緩存模塊:載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;5、ThinkAndroid主要有以下模塊:(1) MVC模塊:實現視圖與模型的分離。
(2) ioc模塊:android中的ioc模塊,完全註解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
(3) 資料庫模塊:android中的
,使用了線程池對sqlite進行操作。
(4) http模塊:通過httpclient進行封裝http數據請求,支持非同步及同步方式載入。
(5) 緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置
(6) 圖片緩存模塊:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
(7) 配置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
(8) 日誌列印模塊:可以較快的輕易的是實現日誌列印,支持日誌列印的擴展,目前支持對sdcard寫入本地列印、以及控制台列印
(9) 下載器模塊:可以簡單的實現
、後台下載、
、對下載進行控制、如開始、暫停、刪除等等。
(10) 網路狀態檢測模塊:當網路狀態改變時,對其進行檢6、LoonAndroid 主要有以下模塊:
(1) 自動注入框架(只需要繼承框架內的application既可)
(2) 圖片載入框架(多重緩存,自動回收,最大限度保證內存的安全性)
(3) 網路請求模塊(繼承了基本上現在所有的
)
(4) eventbus(集成一個開源的框架)
(5) 驗證框架(集成開源框架)
(6) json解析(支持解析成集合或者對象)
(7) 資料庫(不知道是哪位寫的 忘記了)
(8) 多線程斷點下載(自動判斷是否支持多線程,判斷是否是重定向)
(9) 自動更新模塊
(10) 一系列工具類
『伍』 Android活動命名是怎樣的規則
一.標識符命名方法
1 .小駝峰命名法,除首單詞外,其餘所有單詞的第一個字母大寫。如:allPrice,getAllNames
2.大駝峰命名法,所有單詞的第一個字母大寫。如:GuideActivity,StudentInfoBean
3.下劃線命名法:單詞與單詞間用下劃線做間隔。如:activity_main,select_backGround_color
二.命名規范
(一)包(packages)的命名規范:
採用反域名命名規則,全部使用小寫字母。一級包名為com,二級包名lwz(為個人或公司名稱,可以簡寫),三級包名guidecity(根據應用進行命名),四級包名ui或utils等(模塊名或層級名),根據實際情況也是可以用五級包名,六級包名。
這里的四級包名是要重點理解和分類的,例如:com.lwz.應用.utils ,此包中包含:公共工具方法類
1.utils
此包中包含:公共工具方法類,比如:SPHelperUtil、TimeUitl、FileUtil等
2.adapter
此包中包含:一些適配器的類,比如:ArticleAdapter、FansAdapter,HistorAdaper等
3.base
此包中包含:一些共同類的基類,比如:BaseActivity(所有的Activity類都繼承這個類)、BaseFragment(所有的Fragment都繼承這個類),ListItemAdapter(封裝了Base Adapter的基類)等
4.bean
此包中包含:一些屬性對象類,比如:StudentBean、LonginBean、ArticleBean等
5.config
此包中包含:最頂級的配置類,比如:MyApp(繼承了Application)
6.httpservice
此包中包含:Http數據的請求介面類,好像Retrofit網路框架請求網路數據才要使用。如:ILogin介面,IAddTopic介面,IUpdate等
7.interface
此包中包含:某個頁面或對象的所用操作介面類,這個介面主要是定義這個對象的所有方法。如:IUser介面,IArticle介面,ITopic介面等
8.model
這是MVC或MVP框架設計中的M。此包中包含:某個頁面或對象的所用操作類,這個類繼承了上面定義的interface介面,重寫並實現厘米那的方法。如:UserModel,ArticleMode類,TopicMode類等
9.ui
這個ui表示的頁面的意思,也是MVC或MVP中的V,很多人把這個包名寫成activity,其實是不準確的,因為ui包含了activity和fragment,所以ui是四級包名,而activity和fragment是ui包下的五級包名。
activity此包中包含:Activity對象類。如:MainActivity類,HomeActivity類,FansListActivity類等。如果是使用了MVP框架模式,activity包名下還可以有六級包名,比如:loginMVP(包含ILoginView介面類,LoginPresenter類)、seleteTopicMVP
fragment此包中包含:Fragment對象類。但是Fragment一般都是多個存在的,所以fragment包下一般還有六級包名,表示裡面是哪個頁面的Fragment對象。
10.weight
此包中包含:自定義View或自定義對話框等視圖類。如:CursroDialog類,SpringScrollView類,ScrollListView類等
11.db
此包中包含:資料庫操作類
12.service
此包中包含:Service服務類
13.broadcast
此包中包含:Broadcast廣播接收者類
14.provider
此包中包含:Provider內容提供者類(用得很少)
包名規劃我感覺對程序後期閱讀或修改有很大的幫助,特別是很大的程序,文件太多,不規劃的話自己都不知道這個類是干什麼的!
當然如果程序中沒有這一類的文件,這個包名是可以不寫,但是一些基本的包名,基本每個程序都是需要的比如:ui、utils、adapter、weight、bean等
(二)類(classes)的命名規范:
一般用名詞,採用大駝峰命名法,盡量避免縮寫,除非該縮寫是眾所周知的,比如HTML,URL,如果類名稱中包含單詞縮寫,則單詞縮寫的每個字母均應大寫。
以下是部分示例說明:
1.activity 類,如歡迎頁面類WelcomeActivity.
2.adapter類,如商品詳情適配器ProctDetailAdapter
3.util公共方法類,如:線程池管理類:ThreadPoolManager,日誌工具類:LogUtil
4.db資料庫類,以DBHelper後綴標識。如城市資料庫:CityDBHelper
5.Service類,以Service為後綴標識
6.BroadcastReceive,以Broadcast為後綴標識
7.ContentProvider,以Provider為後綴標識
(三)介面(interface):
命名規則與類一樣採用大駝峰命名法,多以able或ible結尾或以I開頭,如Runnable、Accessible、IUser。
(四)方法(methods)的命名規則:
一般使用動詞或動名詞,採用小駝峰命名法 例如:onCreate(),run()
>1.initXXX()初始化相關方法,使用init為前綴標識
2.isXXX()、checkXXX() 方法返回值為boolean型的請使用is或check為前綴標識
3.getXXX()返回某個值的方法,使用get為前綴標識
4.processXXX() 對數據進行處理的方法,盡量使用process為前綴標識
5.displayXXX() 彈出提示框和提示信息,使用display為前綴標識
6.saveXXX() 與保存數據相關的,使用sav為e前綴標識
7.resetXXX() 對數據重組的,使用reset前綴標識
8.clearXXX()removeXXX() 清除數據相關的,使用clear或remove為前綴標識
9.drawXXX() 繪制數據或效果相關的,使用draw前綴標識
(五)變數(variables)採用小駝峰命名法。類中控制項名稱一般與xml布局id保持一致
(六)常量(constants)全部大寫,採用下劃線命名法.例如:MIN_WIDTH
(七)XML文件(布局文件):全部小寫,採用下劃線命名法,
例如:main_activity.xml, item_activity.xml、homeposter_item_poster.xml
(八)資源文件(圖片): 全部小寫,採用下劃線命名法,加前綴區分
命名
說明
btn_login_normal 按鈕圖片使用btn_功能_說明
bg_head 背景圖片使用bg_功能_說明
def_search_cell 默認圖片使用def_功能_說明
icon_more_help 圖標圖片使用icon_功能_說明
seg_list_line 具有分隔特徵的圖片使用seg_功能_說明
sel_ok 選擇圖標使用sel_功能_說明
(九)動畫文件(anim包):全部小寫,採用下劃線命名法,加前綴區分。
動畫命名例子:
規范寫法
備注
click_head_left 點擊背景切換動畫使用click前綴標識
bg_shape_rectangle 背景自定義圖形使用bg前綴標識
show_shopcar_add 小動畫效果使用show前綴標識
(十)資源ID(resources id):大小寫規范與方法名一致,採用小駝峰命名法。
命名規范為「資源控制項的縮寫名」+「變數名」。例如TextView的id=「tv_userName」。注意:頁面控制項名稱應該和控制項id名一般是一致,例如:TextView tv_userName=(TextView)findViewById(R.id.tv_userName);
三.圖解包名規范示例
本文主要是想對程序包名的命名規劃,這里展示我之前開發的程序的包名圖片,供大家參考:
(一)總顯示
上面example這個包名一般是不用的!
(二)ui包下
fragment展示
activity 展示:
(三)utils和weight包下
(四)res文件夾下的部分文件展示:
drawable包下:
layout包下:
上面就是一個完成程序的主要文件展示,這個程序大概有三百多個文件(包括java文件和資源文件),這里就不一一展示了!
大家可以想像一下,如果這個程序包名和文件名都沒有很好規劃,那麼你要找你想要的幾個文件是一個多麼麻煩的事情!
一般地,我在創建每個java程序文件都會在上面做幾句話的註解,說明一下這個文件的作用,有些布局文件也是有簡單說明。這樣更加有利於後期的程序代碼迭代或版本更新!
命名規范是必須的嗎?有些是!有些不是。比如包名、類的定義,系統沒有硬性規定,但是資源文件res文件夾下的命名,系統要求資源文件名必須小寫,否則,你的程序一直運行不了,你都不知道為啥。
最後說一句:程序開發中命名規范是一個很好的開發習慣!
『陸』 關於安卓跟LINUX的關系~
Android 和 MOTO V8 的系統完全是兩個概念。
現在各個手機網站的編輯大腦都是嚴重萎縮的,根本就不能理解 Linux 是什麼。
Linux 僅僅是內核,根本就不是一個完整的操作系統。
一個完整的操作系統,包括內核,功能庫,用戶界面三個主要部分。一個應用程序,主要運行的並不是依靠內核來運行,它主要是藉助功能庫提供程序功能函數支持,用戶界面層提供顯示和交互的功能函數支持,內核只是一個硬體驅動交互,任務分配,內存管理,IO 處理的最底層的支持。
也就是說,一個程序能不能運行,主要是看函數庫和用戶界面的支持情況。
但很明顯的,Android 和 MOTO V8 完全是兩種實現方法,根本就不能拿來做比較。
Android 是基於叫做 Dalvik 的 java 虛擬機而運行的一個上層系統,所有的 Android 程序其實都是 java 程序,直接運行在這個 java 虛擬機裡面,Android 的程序根本就不是一個真實的二進製程序。
MOTO V8 我要沒記錯,是基於QT 嵌入式開發的一個系統,叫做 EZX Linux 。QT 提供了一個完整的函數庫和用戶界面支持庫。他的程序理論上都是手機上面可以運行的本地二進製程序(記得是 ARMv5 的)。但實際上,MOTO 不允許二進製程序的開發和安裝,只能用 java 程序,也就是 j2me 的程序。
雖然兩個都是虛擬機,但這兩個虛擬機本質完全不同。
Dalvik 的虛擬機是針對 Android 手機的基本要求,也就是要有一個觸摸屏,4個物理按鍵,內存和 CPU 性能都要求很高的硬體進行設計的。j2me 是針對的手機就沒有這個要求。不同的 j2me 手機和程序,都有不同的功能和性能。
可以說,Andorid 系統和 MOTO V8 的 EZX ,就算都用 Linux 內核,Linux 內核提供的硬體支持,功能支持等等的東西,在手機這種針對性極強的硬體上,也會出現不同的兼容問題。
他們兩個除了都是基於 Linux 內核這個稱呼以外,其餘的他們根本就完全不同。
Linux 從來就沒有說過「二進制兼容」,Linux 遵循 POSIX 標准,Linux 之間還有一個 LSB 兼容標准,但這個不是強制標准,而且在手機上根本就沒辦法執行的。