android應用開源
㈠ android (安卓)是完全開源的嗎
android (安卓)是完全開源的。
Android是一種基於linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由Google(谷歌)公司和開放手機聯盟領導及開發。
尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。
2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。
(1)android應用開源擴展閱讀:
一、發展歷程
2003年10月,Andy Rubin等人創建Android公司,並組建Android團隊。
2005年8月17日,Google低調收購了成立僅22個月的高科技企業Android及其團隊。安迪魯賓成為Google公司工程部副總裁,繼續負責Android項目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統,並且在這天谷歌宣布建立一個全球性的聯盟組織,該組織由34家手機製造商、軟體開發商、電信運營商以及晶元製造商共同組成。
並與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統,這一聯盟將支持谷歌發布的手機操作系統以及應用軟體,Google以Apache免費開源許可證的授權方式,發布了Android的源代碼。
2008年,在GoogleI/O大會上,谷歌提出了AndroidHAL架構圖,在同年8月18號,Android獲得了美國聯邦通信委員會(FCC)的批准,在2008年9月,谷歌正式發布了Android 1.0系統,這也是Android系統最早的版本。
二、系統內核
Android 是運行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。
Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 Userspace,使得Linux driver 與 Linux kernel徹底分開。
Bionic/Libc/Kernel/ 並非標準的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
㈡ 安卓開源是什麼意思
開源的意思是安卓系統的源代碼是面向用戶開放的,可以遵循開源協議(GNU)進行使用、編譯和再發布。在遵守GNU協議的前提下,任何人都可以免費使用,隨意控制軟體的運行方式。最著名的開源操作系統是linux。
開源系統相對於不開源的操作系統,如Windows和Mac,開源操作系統最大的特點就是開放源代碼和自由定製,但也會因為使用者的技術水平等關系出現很多不可預知的情況及維護問題,並且由於多數硬體和軟體廠商並不支持開源軟體.所以在驅動和軟體源方面有很大困難,這就要求個人用戶在選擇系統時需要注意根據自己的實際情況來選擇,這也是目前個人使用開源操作系統較為困難的最主要原因。
開源系統的分類:Unix-like類:Linux(這一族開發者眾多,發行版本以千計,覆蓋所有平台,並支持所有文件格式和所有網路協議)、FreeBSD、OpenBSD、NetBSD(覆蓋所有平台)、DrangonflyBSD、Darwin/OpenDarwin/PureDarwin、Minix、GNU Mach/GNU Hurd、L4/Fiasco/Pistachio、syllable、禪OS
Unix類:Opensolaris、AuroraUX、Plan9、Inferno – Plan 9。
dos類:Freedos
windows-like類:ReactOS
原創類:House、KolibriOS、MenuetOS、HelenOS、Openvms
還有其他的開源操作系統有:XFree86、ReactOS。
㈢ android開源嗎
Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。
Android是一種Linux內核的手機操作系統。Google希望,這會吸引來第三方軟體開發者,建立起一個大規模的開發者社區。
Linux內核的許可證,是自由軟體基金會的GPL許可證第二版。但是,"開放手機聯盟"的主要代碼,卻是Apache許可證(ASL)第二版。
ASL許可證被開源軟體廣泛使用,並且得到了"開放源碼促進會"(Open Source Initiative)的認可。它是一種不設限的許可證(permissive license),允許軟體的商業性開發和壟斷式發布。以ASL發布的代碼,可以被合並入閉源的專有軟體(proprietary proct),並且在各種各樣的限制性條件下發布。
與ASL不同,GPL則是一種Copyleft許可證。它對代碼的發布做出了限制,規定所有對源碼的修改和衍生,都必須公開,並且以相似的許可證發布。
許多軟體公司更願意採用不設限的許可證(比如ASL和BSD),因為這使得它們既可以使用開源軟體,又不用向開源社區公開對軟體所做的修改。所以,ASL和BSD鼓勵了開源軟體的商業性使用,使得軟體公司願意對開源軟體投資,因為這些公司可以從中獲利。這種在開源基礎上吸引商業投資的潛力,很可能是Google為自己的手機平台選擇ASL許可證的最大原因。將Android置於ASL之下,可以確保許多商業性公司會接受這個平台,並且在它上面使用自己的專有技術。
雖然ASL確實是保證Android獲得支持的最好方法,但是批評者認為,Google這樣做的代價,是喪失了創造一個更開放的手機軟體平台的機會。如果Android的許可證是GPLv2,那麼在它上面做開發的那些公司,將不得不公開對系統所做的改進,理論上就會導致代碼被更廣泛地分享,因而手機軟體的開發也會更快速地進步。
另一些人不同意這種看法。他們認為如果Android選擇left許可證,會使商業性公司不願意介入開發,從而使系統本身的發展困難重重。如果那些公司沒有辦法保護自己的專有技術不公開,那麼即使它們願意採用Android平台,也必須急劇地改變經營模式,而這是有風險的。
有一點是不能忽視的,那就是只有Android的userspace部分是ASL許可證。系統的內核依然是GPLv2許可證。而運行在系統上方的第三方軟體,可以用任何許可證發布,包括商業性許可證和left許可證。
還有一點也很重要,那就是雖然ASL與GPLv2不兼容,但是它與GPLv3完全兼容。這意味著,在ASL下發布的代碼,可以被用於GPLv3許可證的軟體。因此,程序員可以選擇將Android程序在GPLv3下發布,這樣就能保證他們作品的進一步開發,將始終是開源的。
㈣ android有哪些快速開發應用的開源框架
ThinkAndroid是一個免費的開源的、簡易的、遵循Apache2開源協議發布的Android開發框架,其開發宗旨是簡單、快速的進行Android應用程序的開發,包含Android mvc、簡易sqlite orm、ioc模塊、封裝Android httpclitent的http模塊,具有快速構建文件緩存功能,無需考慮緩存文件的格式,都可以非常輕松的實現緩存,它還基於文件緩存模塊實現了圖片緩存功能,在android中載入的圖片的時候,對oom的問題,和對載入圖片錯位的問題都輕易解決。他還包括了一個手機開發中經常應用的實用工具類,如日誌管理,配置文件管理,android下載器模塊,網路切換檢測等等工具。
目前ThinkAndroid主要有以下模塊:
MVC模塊:實現視圖與模型的分離。
ioc模塊:android中的ioc模塊,完全註解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
http模塊:通過httpclient進行封裝http數據請求,支持非同步及同步方式載入。
緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置
圖片緩存模塊:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
配置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
日誌列印模塊:可以較快的輕易的是實現日誌列印,支持日誌列印的擴展,目前支持對sdcard寫入本地列印、以及控制台列印
下載器模塊:可以簡單的實現多線程下載、後台下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等。
網路狀態檢測模塊:當網路狀態改變時,對網路狀態進行檢測。
㈤ Android平台有哪些開源的社交APP可供研究
開源社交軟體可以參考一下,thinksns ,thinksns採用PHP+MySQL技術平台,以社交功能為核心+多應用+多插件機制。通過應用、插件、風格包等機制擴展功能,支持多種常見瀏覽器及移動客戶端。擁有iPhone、Android客戶端以及適合手機瀏覽的3G版界面;其輕量化的應用模式,穩固的底層架構支持二次開發
㈥ 安卓系統是開源的,開源到底是什麼意思
開源,全稱為開放源代碼,就是用戶利用源代碼,在遵循開源協議(GNU)進行使用、編譯和再發布。雖然大家可以修改,但開源系統同樣也有版權,也受到法律保護。
最後就組織可信賴性而言,使用者會在意其使用的計算機軟體可從開發組織中獲得如何的支持和關心軟體的未來發展方向。
㈦ 安卓是開源的,美國政府有權禁止中興使用么
就像大家所知道的,Android系統是開源的,所有代碼都可以進行任意的修改,所以即使美國政府和谷歌禁止中興使用Android系統,中興無視禁令的話依舊可以繼續使用Android。因為根據gpl2.0開源協議,Android的底層核心代碼是強制公開的。開源軟體的本質就是誰都可以用,這是沒有任何限制的。
但是Android系統的商標和谷歌服務框架(GSM)是屬於谷歌的,谷歌擁有完全的控制權。這就意味著一旦谷歌停止授權給中興,那麼中興手機就不能宣傳自己使用了Android系統,哪怕手機內運行的就是Android的源代碼,也必須改一個名字,比如ZTE
OS之類的。
同樣的,中興的Android手機將不能再使用谷歌的服務框架,包括Play應用商店。這就意味著中興Android手機無法使用原生系統自帶的很多軟體,中興手機用戶想要下載APP也只能通過中興自己的應用商店,或者第三方應用市場。
同樣是Counterpoint的數據顯示,2017年Q2中興手機在美國市場的銷量排在第四,市佔率11.5%,僅次於三星、蘋果、LG。作為對比,華為手機僅僅排在第十。中興之所以能夠在美國市場站穩腳跟,主要還是依靠與運營商的合作。而就在今年初,美國政府強行終止了華為手機與運營商AT&T的合作協議。
這說明在此之前,中興與美國政府的關系還算不錯。如果谷歌禁止中興手機繼續使用Android品牌和服務框架,那麼中興手機在海外市場的競爭力將會大大減弱。因為谷歌Play應用商店在海外Android手機中的地位就相當於蘋果iOS的AppStore,缺少它就不能算是一台完整的智能手機了。
就算中興手機仍然可以在美國和歐洲市場售賣,競爭力也會大大降低。所以盡管美國政府和谷歌無法禁止中興繼續使用Android系統,但只要中興手機無法繼續使用谷歌服務框架,就相當於失去了一半以上的功能,這對於中興的打擊是巨大的。當然和無法使用高通晶元相比,不能使用Android系統只能算是一件小事,如果連關鍵的核心硬體都沒有了,就算谷歌頂住美國政府的壓力繼續給中興Android授權,中興也沒有辦法憑空造出手機來。
㈧ 有哪些優秀的 Android 應用開源項目、特效、設計資料推薦
安卓選擇器類庫 AndroidPicker:安卓選擇器類庫,包括日期及時間選擇器(可設置范圍)、單項選擇器(可用於性別、職業、學歷、星座等)、城市地址選擇器(分省級、地級及縣級)、數字選擇器(可用於年齡、身高、體重、溫度等)、雙項選擇器、顏色選擇器、文件及目錄選擇器等…
OSCChina-Android
開源中國Android客戶端。
㈨ android app開發中常用到哪些開源框架
在前面的課程中,隨著對Android體系的了解,已經可以進行正常的Android應用開發了。在Android開發中,同其他工程開發一樣,也經常使用一些提高效率的框架,本文我們做一個對比。這些框架,既包括:網路請求框架、也包括圖片載入庫框架、還包括資料庫操作等一些框架,總之,了解和熟悉這些框架,會對自己的開發效率有很大的提升和幫助。
網路請求框架
1、okHttp
在前文的學習中,我們已經了解過okHttp,是一個常用的網路載入庫。
2、Retrofit
介紹
Retrofit是一個很不錯的網路請求庫,該庫是square開源的另外一個庫,之前的okhttp也是該公司開源的。
Retrofit是基於OkHttp封裝的RESTful網路請求框架,使用註解的方式配置請求。優點是速度快,使用註解,callback函數返回結果自動包裝成java對象。官方自己的介紹說:
A type-safe REST client for Android and Java
該網路框架在github上的地址如下:https://square.github.io/retrofit/
要求
Retrofit支持的http方式方式包括 GET/POST/PUT/DELETE/HEAD/PATCH,Retrofit要求Java的版本是1.8+,Android應用的API版本應該在21+。
依賴
使用Retrofit庫,和其他庫一樣,首先需要設置依賴,依然是在build.gradle文件中設置依賴:
//添加retrofit庫依賴
implementation 『com.squareup.retrofit2:retrofit:2.1.0』
//添加gson轉換器
implementation 『com.squareup.retrofit2:converter-gson:2.1.0』
使用
通過一個例子,我們可以來演示該框架的使用步驟:
1、定義請求介面,即程序中都需要什麼請求操作
public interface HttpServices {
/**
獲取頭條新聞
@param type 新聞類型
@param key apiKey
@return
*/
@GET(「toutiao/index」)
Call getNewsList(@Query(「type」) String type, @Query(「key」) String key);
}
2、實例化Retrofit對象,使用的Builder的模式創建,如下代碼所示:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_API)
.addConverterFactory(GsonConverterFactory.create())
.build();
注意,這里設置結構體轉換器,是可以直接把網路請求回來的數據轉換為Java結構體,這里設置的Gson解析器,因此要引入相應的轉換器支持庫。
3、得到介面對象,自己創建的全局的介面對象,並調用相應的介面,得到一個類似於請求Call對象。如下所示:
HttpServices httpServices = retrofit.create(HttpServices.class);
Call newsListCall = httpServices.getNewsList(「top」, Constants.API_KEY);
4、加入到請求隊列中,並設置回調方法:
newsListCall.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
//網路請求成功的回調方法
List list = Arrays.asList(response.body().result.data);
Log.i(「TAG」, 「請求成功:」 + String.valueOf(list.size()));
NewListAdapter adapter = new NewListAdapter(RetrofitActivity.this);
adapter.setmData(list);
mRecyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call call, Throwable throwable) {
//網路請求失敗的回調方法
Log.i(「TAG」, 「請求失敗:」 + throwable.getMessage());
}
});
其他界面操作和之前的Android中的內容一致。
3、RxJava
簡單來說,用來處理事件和非同步任務,在很多語言上都有實現,RxJava是Rx在Java上的實現。
原理
RxJava最基本的原理是基於觀察者模式來實現的。通過Obserable和Observer的機制,實現所謂響應式的編程體驗。
特點
RxJava在編程中的實現就是一種鏈式調用,做了哪些操作,誰在前誰在後非常直觀,邏輯清晰,代碼維護起來非常輕松。
RxJava也是一個在github上的庫,githubhttp://www.xingkongmj.com/news/id/62.html地址如下:https://github.com/ReactiveX/RxJava
基於此,還有一個RxAndroid,github地址如下:https://github.com/ReactiveX/RxAndroid
RxJava和RxAndroid的關系
RxAndroid是RxJava的一個針對Android平台的擴展,主要用於 Android 開發。
基本概念
RxJava 有四個基本概念:
Observable:可觀察者,即被觀察者Observer:觀察者subscribe:訂閱事件
這四個概念之間的邏輯關系是:Observable和Observer通過subscribe方法實現訂閱關系,從而Observable可以在需要的時候發出事件來通知Observer。
事件
RxJava 的事件回調方法主要包含以下幾個:
onNext:普通的事件onCompletedhttp://dachang.net/432717.html:事件隊列完結。RxJava 不僅把每個事件單獨處理,還會把它們看做一個隊列。RxJava 規定,當不會再有新的 onNext 發出時,需要觸發 onCompleted 方法作為標志。:事件隊列異常。在事件處理過程中出異常時, 會被觸發,同時隊列自動終止,不再允許再有事件發出。在一個正確運行的事件序列中, onCompleted和 有且只有一個,並且是事件序列中的最後一個。需要注意的是,onCompleted() 和 () 二者也是互斥的,即在隊列中調用了其中一個,就不應該再調用另一個。
資料庫操作框架
在開發時,本地資料庫可以起到緩存數據和存儲業務數據的作用,隨著技術的成熟,不斷推出了有很多關於資料庫的操作框架。比較常見的資料庫操作框架有諸如:GreenDao,OrmLite 和 ActiveAndroid,DBFlow等。
GreenDAO
GreenDAO是一個開源的 Android ORM(「對象/關系映射」),通過 ORM(稱為「對象/關系映射」),在我們資料庫開發過程中節省了開發時間!
GreenDao的官方文檔地址如下:http://www.xingkongmj.com/news/id/63.html
GreenDao的作用
通過 GreenDao,我們可以更快速的操作資料庫,我們可以使用簡單的面相對象的API來存儲,更新,刪除和查詢 Java 對象。這款資料庫操作框架的特點是:
高性能,在官方的統計數據中,GreenDao在GreenDao,OrmLite 和 ActiveAndroid三個框架中,讀、寫、更新操作效率均表現第一。易於使用的強大 API,涵蓋關系和連接。內存消耗較小。安全:greenDAO 支持 SQLCipherhttp://www.xingkongmj.com/news/id/64.html,以確保用戶的數據安全;
核心概念
GreenDao 的核心類有三個:分別是:
DaoMaster:保存資料庫對象(SQLiteDatabase)並管理特定模式的 DAO 類(而不是對象)。它有靜態方法來創建表或刪除它們。它的內部類 OpenHelper 和DevOpenHelper 是 SQLiteOpenHelper 實現,它們在 SQLite 資料庫中創建模式。DaoSession:管理特定模式的所有可用 DAO 對象,您可以使用其中一個getter方法獲取該對象。DaoSession 還提供了一些通用的持久性方法,如實體的插入,載入,更新,刷新和刪除。XXXDao:數據訪問對象(DAO)持久存在並查詢實體。對於每個實體,greenDAO 生成DAO。它具有比 DaoSession 更多的持久性方法。Entities:可持久化對象。通常, 實體對象代表一個資料庫行使用標准 Java 屬性(如一個POJO 或 JavaBean )。
使用
按照官方的文檔和github上的說明可以實現green的使用。
首先進行的是依賴,對於greenDao,有兩個地方需要設置,分別是項目根目錄中的 build.gradle,還有mole中的build.gradle。
classpath 『org.greenrobot:green-gradle-plugin:3.3.0』 // add plugin
在項目根目錄中的build.gradle目錄中寫這句話的意思是添加greenDao的插件。
在項目mole中的build.gradle中也需要進行配置,有兩個地方需要設置,如下圖所示:
apply plugin: 『org.greenrobot.greenhttp://www.xingkongmj.com/news/id/66.html』 //開頭加入該代碼
dependences{
implementation 『org.greenrobot:green:3.2.0』
}
然後就可以使用了。
bean實體
可以在項目中創建自己業務需要的實體類,並通過註解來設置是實體類,欄位約束等內容。然後點擊Android Studio中的Make mole,即可自動生成XXXDao代碼,以此來方便開發者的操作。生成的XXXDao類,不可修改和編輯,是自動生成的。
ORMLite
ORMLite框架是另外一款Android開發中可以使用的資料庫操作框架。該框架的文檔地址如下:https://ormlite.com/sqlite_java_android_orm.shtml
該框架的文檔准備的不是特別友好,此處不再贅述。
總結,所有的框架原理幾乎都相差不大,只是操作有所差異。
視圖注入框架
在Android項目開發過程中,有太多的頁面需要布局完成,同時在代碼中需要些大量的findviewbyid的操作,來實現控制項的解析。於是就有人想能否輕松一些,解放雙手節省時間,干一些其他有意義的事情,於是ButterKnife就來了。
ButterKnife是一個專注於Android系統的View注入框架,可以減少大量的findViewById以及setOnClickListener代碼,可視化一鍵生成。
該項目在github上的地址如下:http://www.xingkongmj.com/news/id/65.html
這個框架的優勢也非常明顯:
強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率方便的處理Adapter里的ViewHolder綁定問題運行時不會影響APP效率,使用配置方便代碼清晰,可讀性強
使用
首先是設置依賴,在build.gradlehttp://dachang.net/432714.html中進行依賴設置:
implementation 『com.jakewharton:butterknife:10.2.1』
annotationProcessor 『com.jakewharton:butterknife-compiler:10.2.1』
需要注意,該框架要求Java環境1.8版本以上,SDK版本在26以上,因此在使用到的mole中的build.graldle文件中,還必須添加如下代碼配置:
apply plugin: 『com.jakewharton.butterknife』
android{
//…
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//…
}
另外,還必須在項目根目錄中的build.gradle文件中,添加該框架的插件,如下圖所示:
dependences{
classpath 『com.jakewharton:butterknife-gradle-plugin:10.2.1』
}
然後即可在代碼中進行使用了。
在使用該框架的頁面進行綁定諸如,如下所示代碼:
ButterKnife.bind( this) ;
主要的功能
@BindView():控制項id 註解,解放雙手,不用再每個控制項都寫一遍findviewById@BindViews():多個控制項id 的註解,括弧內使用花括弧包括多個id即可,中間用,分割開在Fragment中使用,綁定Fragment。@BindString():綁定字元串@BindArray:綁定數組@BindBitmap:綁定bitmap資源@OnClick、@OnLongClick:綁定點擊事件和長按事件…還有很多
插件安裝
如果是頁面很復雜,一個一個寫BindView也很費勁,在Android Studio中,可以安裝一個ButterKnife的插件,安裝該插件後,可以在Studio中直接將對應的布局中的所有控制項均給自動生成。
注意,在進行自動生成時,滑鼠要放在布局文件上。
注意事項
ButterKnife框架在使用時,要求的版本比較高,包括Java的版本也有限制。因此,如果計劃在項目中使用,要提前做好預備工作,以防止對已有項目和業務帶來不必要的麻煩,反而影響工作進度。
㈩ android 開發的應用是開源的嗎聽說android的系統是開源的,想問下,android上的那些軟體是不是開源的啊
android系統是開源的,但是android上的軟體不是開源的
但從android開發角度看,也有許多開源的開發框架,或者開發項目,這個lz要是學開發的話,後期可能會用的到。在者,從商業角度看,任何公司做的上市項目會把源代碼開源嗎,肯定不會吧,不僅不會,而且還都是商業機密。
望採納!