android定製
❶ 國產手機為什麼要用安卓定製系統,而不用原生安卓系統。
首先、定製系統界面更美觀
原生的安卓系統雖說越來越流暢,但是幾乎不會追求UI的美化,而中國用戶更關心UI的外觀。這也是國內幾款UI比較熱門的原因之一,他們幾乎放棄了原生安卓的界面外觀,專注於在桌面主題和圖標的細心雕琢,畫出更美、更符合潮流的界面,讓手機盡顯個性化,提高了手機的可玩性。而原生安卓甚至不支持更換主題。
其次、定製系統軟體服務更完善
由於谷歌當年任性宣布退出中國市場,導致中國大陸用戶並不能體驗完整的軟體谷歌服務,這也是國內UI能夠佔領市場,獲得用戶口碑的最為重要的原因。比如小米的MIUI深耕國內市場多年,並依賴於小米手機的火爆銷量,迅速成為佔領國內ROM市場的頭號選手。而原生Android缺乏載體支持和生態支持,再加上長期隔離在外,已讓原生Android失去先機。
再次、定製系統功能更符合國人用戶習慣
雖說原生安卓簡約流暢,內存佔有率低,但是這也帶來了很多問題,在某些功能上,原生安卓是不完善的,並不能符合中國消費者需求。在使用習慣上,原生安卓使用虛擬按鍵,返回鍵在最左邊。而國產UI中,如小米的返回鍵是在最右邊,魅族更是獨創mBack鍵輕觸返回專利,使用戶操作起來更加便捷易用。
最後、原生系統「水土不服」
因為原生系統畢竟是歪果仁開發的,不可能滿足全球不同文化人群的愛好需求,比如中國的用戶也不習慣歪果仁那些軟體和功能,而像攔截騷擾信息這些特色功能,原生系統也不會特意為中國用戶打造,因此難免會出現水土不服的現象。
總的來說,定製系統不管從系統界面美觀、軟體服務、國人用戶習慣方面都遠勝於原生系統,你覺得呢?
❷ 安卓系統有幾種定製的
安卓系統定製可以無限多,因為是開源系統,每個廠家都可以按照自己的需要自己添加刪除安卓系統的應用,當然是google的允許范圍之內的,除了你上面提到的還有網路雲手機系統,還有很多比如盛大樂眾,還有CM等等。簡單點說你刷機必須按照你機器的型號進行刷機,不能想刷哪一種就哪種,需要刷機包和底包驅動的支持。
目前支持機型較多的有:MIUI,樂眾等,其他的你可以去機鋒,卓大師等論壇找找。
希望回答可以幫助到你。
❸ android深度定製是什麼概念
深度定製的意思就是,加入了大量電信運營商的所謂特色服務,其實就是你一碰就要錢的,而同時去掉了原生安卓系統的一些很有特色的東東,比如谷歌地圖、谷歌縱橫、狗狗talk、狗狗閱讀等,甚至連gmail都給你弄沒了。一般深度定製機很難刷機,如果沒有官方升級包就很難升級,因為其進入刷機模式的方法可能與原生安卓系機子有很大不同,或者根本就不告訴你。
❹ 如何定製 android 主界面
果你要定製一個Android系統,你想用你自己的Launcher(Home)作主界面來替換Android自己的Home,而且不希望用戶安裝的Launcher來替換掉你的Launcher.
我們可以通過修改Framework來實現這樣的功能。
這里以Android2.1的源代碼為例來實際說明。
1)首先了解一下Android的啟動過程。
Android系統的啟動先從Zygote開始啟動,然後......(中間的過程就不說了).....一直到了SystemServer(framework)這個地方,看到這段代碼:
/**
* This method is called from Zygote to initialize the system. This will cause the native
* services (SurfaceFlinger, AudioFlinger, etc..) to be started. After that it will call back
* up into init2() to start the Android services.
*/
native public static void init1(String[] args);
public static void main(String[] args) {
if (SamplingProfilerIntegration.isEnabled()) {
SamplingProfilerIntegration.start();
timer = new Timer();
timer.schele(new TimerTask() {
@Override
public void run() {
SamplingProfilerIntegration.writeSnapshot("system_server");
}
}, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
}
// The system server has to run all of the time, so it needs to be
// as efficient as possible with its memory usage.
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
System.loadLibrary("android_servers");
init1(args);
}
public static final void init2() {
Log.i(TAG, "Entered the Android system server!");
Thread thr = new ServerThread();
thr.setName("android.server.ServerThread");
thr.start();
}
}
從SystemServer的main函數開始啟動各種服務。
首先啟動init1,然後啟動init2.
從上面的注釋可以看到:init1這個方法時被Zygote調用來初始化系統的,init1會啟動native的服務如SurfaceFlinger,AudioFlinger等等,這些工作做完以後會回調init2來啟動Android的service。
這里我們主要來關注init2的過程。
init2中啟動ServerThread線程,
ServerThread中啟動了一系列的服務,比如這些:
ActivityManagerService
EntropyService
PowerManagerService
TelephonyRegistry
PackageManagerService
AccountManagerService
BatteryService
HardwareService
Watchdog
SensorService
BluetoothService
StatusBarService
ClipboardService
InputMethodManagerService
NetStatService
ConnectivityService
AccessibilityManagerService
NotificationManagerService
MountService
DeviceStorageMonitorService
LocationManagerService
SearchManagerService
FallbackCheckinService
WallpaperManagerService
AudioService
BackupManagerService
AppWidgetService
這些大大小小的服務起來以後,開始
((ActivityManagerService)ActivityManagerNative.getDefault()).systemReady()
在systemReady後開始開始啟動Launcher。
在尋找Launcher的時候是根據HOME的filter(在Manifest中定義的<category android:name="android.intent.category.HOME" />)來過濾。
然後根據filter出來的HOME來啟動,如果只有一個HOME,則啟動這個HOME,如果用戶自己裝了HOME,那就會彈出來一個列表供用戶選擇。
我們現在希望從這里彈出我們自己定製的Launcher,同時也不希望彈出選擇HOME的界面,我們不希望用戶修改我們的home,比如我們的home上放了好多廣告,以及強制安裝的程序,不希望用戶把它幹掉。
我們可以通過這樣來實現:
2) 定義一個私有的filter選項,然後用這個選項來過濾HOME.
一般情況下我們使用Manifest中定義的<category android:name="android.intent.category.HOME"來過濾的,我們現在增加一個私有的HOME_FIRST過濾。
在Intent.java(frameworks/base/core/java/android/content/Intent.java)中添加兩行代碼
//lixinso:添加CATEGORY_HOME_FIRST
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String CATEGORY_HOME_FIRST = "android.intent.category.HOME_FIRST";
3)修改和CATEGORY_HOME相關的所有的地方,都改成HOME_FIRST,主要是framework中的這幾個地方:
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中
//intent.addCategory(Intent.CATEGORY_HOME);
改成intent.addCategory(Intent.CATEGORY_HOME_FIRST); //lixinso:
//if (r.intent.hasCategory(Intent.CATEGORY_HOME)) {
改成if (r.intent.hasCategory(Intent.CATEGORY_HOME_FIRST)) { //lixinso: Intent.CATEGORY_HOME -> Intent.CATEGORY_HOME_FIRST
frameworks/base/services/java/com/android/server/am/HistoryRecorder.java中
// _intent.hasCategory(Intent.CATEGORY_HOME) &&
改成 _intent.hasCategory(Intent.CATEGORY_HOME_FIRST) && //lixinso: Intent.CATEGORY_HOME->Intent.CATEGORY_HOME_FIRST
frameworks/policies/base/mid/com/android/internal/policy/impl/MidWindowManager.java中
//mHomeIntent.addCategory(Intent.CATEGORY_HOME);
改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST); //lixinso
frameworks/policies/base/mid/com/android/internal/policy/impl/RecentApplicationsDialog.java中
//new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
改成 new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0); //lixinso
frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java中
//mHomeIntent.addCategory(Intent.CATEGORY_HOME);
改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST); //lixinso
frameworks/policies/base/phone/com/android/internal/policy/impl/RecentApplicationsDialog.java中
//ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
改成 ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0); //lixinso
4) 寫一個自己的Launcher.
可以參考android sample中的Launcher,或者android源代碼中的 /packages/apps/Launcher 來寫。
在Launcher中標記其是不是Launcher的最關鍵的代碼時Manifest中的filter:android:name="android.intent.category.HOME"
現在我們定義了自己的filter,那麼,我們在我們自己寫的Launcher中將Manifest改為:
<application android:process="android.process.acore3" android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstAppActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME_FIRST" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY" />
</intent-filter>
</activity>
</application>
然後將編譯好的apk放到/out/target/proct/generic/system/app目錄下。
5)將Android自帶的Launcher刪除掉,包括源代碼(packages/apps/Launcher)和apk(/out/target/proct/generic/system/app/Launcher.apk)。
6)
做完這些工作,就可以重新編譯Android了,我們可以編譯修改過的幾個相關的包。
如果之前編譯過了Android源碼,可以用mmm命令來編譯部分的改動。
這里需要這樣編譯:
$ . build/envsetup.sh
$ mmm frameworks/base
$ mmm frameworks/base/services/java
$ mmm frameworks/policies/base/mid
$ mmm frameworks/policies/base/phone
7)
編譯完成後重新生成img文件。
$ make snod
8) 現在可以啟動Android模擬器來看效果了。
首先設置環境變數:
$ export ANDROID_PRODUCT_OUT= ./out/target/proct/generic
然後切換到
$ cd ./out/host/linux-x86/bin
運行
$ ./emulator
這樣我們啟動的模擬器裡面用的image就是我們剛才編譯好的自己定製的東西了。
從模擬器上可以看到啟動的Launcher是我們自己的Launcher,不會出現默認的Launcher了,也不會出現選擇界面。
9)我們再驗證一下,如果用戶裝上了一個其他的Launcher(Home)會怎麼樣。
從網上找一個一般的Launcher或者自己寫一個一般的Launcher裝上去,重新啟動,不會出現選擇界面。
按HOME鍵也不會出來兩個HOME來選擇。
❺ 為什麼安卓系統不統一而出各種定製安卓
你好,首先呢,
安卓系統
是谷歌的一個開源產品,各個手機廠商可以自主定製安卓系統的源碼,展現各家手機廠商的特色,比如小米的miui還有華為的emui,還有一個原因就是每家手機廠商因為手機的硬體構造不一樣,所以驅動程序會不盡相同,所以這個也是需要定製的。
❻ 深度定製安卓系統什麼意思
深度定製安卓系統是指以android源碼為基礎,以產品特性為目的而進行深度改造的系統。市面上最常見的深度定製系統是中國移動OPhone所採用的OMS系統。深度定製不只是對UI進行的重新設計,還會圍繞硬體的特性對系統API進行改動,造成使用標准API介面的應用程序在深度定製的系統上無法兼容。
安卓是一個開源的系統
,在一定的基礎上可以對原系統進行修改,這樣既保留了安卓原有的特性,又添加了一些新的功能和特點。在軟體兼容上,深度定製的安卓系統是可以兼容原生的軟體的,但是
因為深度定製的安卓系統添加了新的特點,所以,有一些軟體是專門針對深度定製的安卓系統而開發的,所以原生的系統可能是不兼容的。總體來說
,深度定製的安卓系統和原來的系統在操作上相似度還是很高的。現在用完全原生的安卓系統的手機是不多的,大部分都是經過修改美化的安卓。
深度定製的手機一般都是無法升級成原生Android系統的,只能使用廠商發布的定製系統升級包。有些高手玩家可能會移植一些基於某型號手機的原生Android系統,但是因為技術原因,這些系統的穩定性很差,為了兼容應用軟體而刷這些系統是得不償失的。
當前各大手機製造商為了標榜自己的本土化,針對性設計,都在Android系統上加入很多的自主東西,現在市場上的魅族M9、移動OMS、點心OS都是非原生Android
系統,還有樂Phone的樂OS也基本上看不到原生Android的影子,這些都是深度定製的安卓系統,只是在原生安卓上面做了一定的UI修改或者是加入了自己的一些應用軟體。nbsp;
❼ 原生安卓和定製安卓有什麼區別
國產定製安卓基本允許在免Root狀態下,就能控制應用自啟、許可權和相互喚醒等原本是取得Root許可權之後才能實現的功能,甚至這一功能還在三星等部分國際大廠的系統中實現;而原生Android系統則無法對這些直接進行設置,只能Root後通過第三方應用進行管理,且目前並不是太穩定。
由於國內的安卓應用濫用喚醒許可權和通知欄推送,因而經常會導致多條推送一起騷擾用戶,讓用戶防不勝防,而這一功能實際上是不少國內用戶所需要的。
原生Android的界面和字體都是完全統一的,系統內沒有自帶的主題引擎。注意,原生安卓不等於CM等支持主題引擎的第三方ROM。而定製安卓為了張揚用戶的個性,基本都會內置專用的主題或字體引擎方便用戶更換。
由於加入了各種各樣的定製功能,定製安卓的系統往往顯得比較臃腫,即使另外不運行app,運存佔用也是非常大的。而原生Android主打的則是極度精簡,佔用運存較小,即使是小運存手機,在管理好許可權的基礎上也不至於卡死。
國產定製安卓在交互理念上有些像iOS,就是把所有的功能都給用戶准備好了,這樣用戶只需要自己開關某些功能,即可充分實現自定義。
而原生Android則不同,其設置菜單僅有一些最基本的選項,以滿足用戶使用。如果你動手能力較強的話,原生Android反而能提供更大的發揮空間讓你充分的DIY。
原生安卓內置的應用商店是安卓系統的官方商店,前身叫安卓市場(Android Market),現在叫作谷歌Play商店。其擁有最正規、許可權最干凈且更新速度最快的一手國內外安卓app資源,但同樣因為不可描述原因無法直接訪問。
因此,國內各大廠商也在定製安卓中加入了自己的應用商店,很多都是掛靠在應用寶等第三方市場下,實現資源互通。
❽ 企業進行android app定製有什麼優勢
雖然說現在很多人認為ios app開發更有前途,因為ios app軟體的需求越來越高,而且開發ios app的價格更高,app公司所得利潤也更高。但是也有很多人不同意這種說法,他們及則認為,android app開發更有市場,現在國內主要的app軟體還是android app多,加上app定製行業的出現,提高了android app軟體的開發質量,所以,安卓app開發特別是安卓app定製開發還是非常有前景的。
定製Android app為什麼更合理
現在很多企業為了突出自己的企業特色和企業文化,對於定製android app這種app開發方式有更大的需求。的確,app定製雖然花的成本要多一點,帶來的效果確實極好的。
1、android app定製對企業來說更科學
定製app都是按照企業具體的發展情況來開發的,甚至可以綜合企業管理層的管理思路和管理模式來定製app的功能,是基於具體實情而開發的android軟體,實用性更強,更有利於的發展。另外,android app在定製開發過程中如果什麼問題,可以及時和客戶進行溝通,並採用最合理的辦法及時解決。
2、app定製是為企業量身定製
和app模板開發不同,android app定製是重新開發一款手機軟體,根據的是企業的發展實情和企業的需求定製的app,在app的風格、功能、ui設計等方面都是企業的特色,可謂是為企業量身定製的。定製的android app更有利於企業進行對外宣傳和推廣企業文化和產品。
3、定製android app的費用更加透明
App定製多少錢一直是很多企業關心和擔心的問題之一,畢竟企業開發一款手機app需要進行成本的預算。如果定製app花費太大,則不利於節省成本,太低又怕app質量不合格。而app定製則是按照android app功能、開發時間、開發人數等具體的細節來計算成本的,價格透明合理。
❾ android系統定製開發該怎麼上手
就索性進行了一番調研,於是有了本文(本次不討論越獄的iOS) 首先從情感上,你喜歡哪個就好,就像百事可樂和可口可樂,當然這個比喻不是很恰當,因為可樂喝起來幾乎一樣,但是Android和iOS還是有很大差別的。 iOS來源於Apple的OSX,是UNIX系統,OSX已經有差不多10年的歷史,從內核底層到軟體架構都是逐步發展過來的。iOS使用ObjectivC這個古老的語言來做開發。而Android是Google基於Linux搞來的,嚴格意義上講Android並不是一個Linux系統,它沒有Linux的xwin,沒有glibc,缺乏一整套標準的Linux程序。Android應用絕大部分都是使用JAVA開發,跑在Dalvik虛擬機上(一小部分使用NDK)。 Google在底層也修改了很多東西。Android算是一個全新的操作系統。 所以: Android使用JAVA,上手容易很多,如果有很好的JAVA Lib加持,開發效率會高些 iOS沒有虛擬機, 也沒有GC,性能要好一些,當然這個差別會隨著Google的改進越來越小 iOS的開發框架很成熟,而且和MAC上通用,同樣的知識體系,也可以開發MAC應用,Android相比是全新的框架, 還會繼續進化。 iOS和設備緊密集成。軟硬體一家公司通吃。但是Android無法做到, 通常的情況是:Google放出源代碼。 晶元廠商需要1-3個月來做自己的晶元方案, 手機廠商從晶元廠商處買到方案和代碼, 進行自己的集成,定製工作,有時候還需要針對運營商進行定製。 所以: iOS的設備集成度和驅動優化都是最好的。電源管理一塊就可見一斑,而Android廠商就魚龍混雜。可能排頭的廠商的旗艦機器會好些,但是由於Android工期一般都比iOS設備短(請看HTC和三星出機器的速度),所以整體上和iOS比是有差距的。 由於有多家廠商自己做定製,Android還存在設備的分裂問題(fragmentation), 作為過來人,我告訴你這個是很頭痛的事情, 且不論調試時間和人力, 光買一大堆設備的成本就不小。最關鍵的是它會傷美工/UE的心。 iOS是被Apple嚴格控制的系統。 在大部分情況下, 第三方應用是無法拿到所有API的。 這意味系統級別的很多功能只有Apple能做(比如打電話,攔截簡訊)。此外一些涉及用戶隱私的API還會導致系統彈出對話框詢問用戶。 同樣第三方runtime做應用開發也是基本不可行的(Flash當初也是被這個條款拒過)。 反過來Android完全不一樣,首先Android是開源的,在設計上Android就允許自由替換系統組件, Android也沒有強制限制API的情況,(hidden API也可以call,沒有人會找你麻煩)。 系統級別的許可權是下放到廠商手中,如果廠商願意給,那第三方開發者就可以做任何事情。 普通應用的許可權認證也是在安裝的時候就一次性授權完成。 之後不會騷擾用戶。所以: Android平台可以做的事情遠遠比iOS多, 你可以做電話管理,地址簿,簡訊管理,可以自己跑後台service。 替換掉系統的組件非常容易 Android平台也可以跑其他系統的Runtime, 比如Flash, 有了NDK, 你要自己接入一個虛擬機也是可能的。Google不會管你 任何人可以拿Android自己改個獨立的系統出來,也許這樣做的意義和前景有問題,但是同樣,沒有人限制你 iOS上唯一的下載應用途徑就是Appstore,開發者做應用上線還要通過Apple審核,就算通過了,如果掛羊頭賣狗肉亂來或者調用了不該用的API, Apple一樣隨時可以下架。管理非常嚴格。反過來Android上非常鬆懈: 廠商可以內置應用。經常會扔一些莫名其妙的軟體預裝在手機上, 筆者在廠商的時候深刻體會到亂選軟體是很好玩的事情。而且我們不會讓你刪除掉的。 Google的官方菜市場不做應用審核,開發者上傳軟體很隨意,這是個自由市場。 國內還存在大量第三方軟體菜市場。以及豌豆夾類似的PC端管理軟體。 如果用戶選擇允許未知來源,那麼通過web下載或者安裝卡上的軟體也是可以的。似乎國內用戶都是允許的。所以: iOS上的精品軟體多,競爭激烈但管理有序,開發者也容易掙錢。 Android上雖然也有精品軟體,但是垃圾軟體更多, 甚至有惡意軟體。 因為無門檻,基本上軟體都是免費,賣不起錢, 大部分都靠廣告。 Android還有一堆殺毒軟體,這是典型的沒有困難,製造困難也要上的精神。 Android上還有一堆安慰劑軟體,比如能幫你省電的或者是幫你殺後台進程的來提升性能的, 筆者作為做過底層開發的人,笑而不語。 如果你是普通用戶,請關貼, 本文不是用來給普通用戶選機的。 如果你是一個個人軟體開發者, iOS適合你, 市場規范, 做應用省心。 如果你是一個軟體和服務的創業公司, iOS也是適合你做demo的和第一個產品的, 產品靠譜了,用戶在用了,有人給錢了,再往Android走也是可行的。 除非你做的應用要涉及硬體或者需要非常高的系統許可權, 如果是那樣你也只有選擇Android。因為國內的廠商肯定要比蘋果要容易談下來。 如果你是一個要做硬體和系統定製的公司, 那麼基本上你只有Android可以選。Android的解決方案的成本也在不斷下降。 如果你是一個有中國特色的公司,想搞點移動業務玩玩, 還要瞞著用戶做很多事情。 那麼Android也是更好的, 就算你不作惡, 控制權在自己手中也會方便運作一點。所經如何選擇,不用我多講,這兩個都是當今移動互聯網開發的方向,但是一個開源學習起來更容易,做東西更快,有絕對的控制權。一個不開源,只能做上層應用,但也可活的很好,就是這樣。
❿ 如何深度定製安卓系統
從andoroid
l開始goolge將不開放對android系統的任何修改,並且所有android設備必須安裝20個goolge應用!