導航:首頁 > 操作系統 > android移植

android移植

發布時間:2022-01-12 09:34:27

1. 我向學習安卓系統移植。

如何製作ROM
有點玩機興趣的android愛好者,應該對custom ROM這種東西都不陌生。我介紹root許可權獲取的時候,就直接用的MoDaCo Custom ROM作為例子。適用於Hero比較好的ROM還有不少,比如Drizzy』s Custom Hero ROM等等,都可以在XDA上找到。肯定有不少朋友感到很好奇,這些ROM都是怎麼做的。考慮到中文社區相關資料比較少,在這里拋磚引玉,大概原理介紹一下。

對於第三方ROM來講,通常都包括兩部分,一個recovery image,一個update.zip。而大多數的第三方ROM的特色,就是加入了很多東西,比如superuser程序來獲得root許可權,busybox來擴充命令行下的功能,各種各樣的配置文件或者小工具,比如默認打開中文locale,等等。這些看似神奇的改動,都是在 update.zip裡面搞的,custom recovery image的主要作用就是引導用戶的操作,比如讓你先備份,再應用update.zip,再重啟之類的操作。由於custom recovery image和update.zip的耦合性很小,所以不少custom ROM直接都用同一個custom recovery image,這個好像是出自MoDaCo作者之手。再然後,我之前的文章已經有對 recovery image的簡單講解,所以這里,我主要介紹一下update.zip的製作。

如果我們直接把MoDaCo ROM中的update.zip解包,我們會發現有一個boot.img,一個data文件夾,一個system文件夾,一個META-INF文件夾。這個data文件夾放的是init.rc,而本來在系統中,init.rc就是在data目錄下的。當然,兩者的作用不一樣,這里的init.rc主要作用是開機執行你希望執行的命令,比如MoDaCo的init.rc就是install busybox。
而值得詳細說明的,就是system文件夾。MoDaCo ROM版本的system下有一系列作者希望放到系統中的工具,對於apk文件,就放到app下,工具就放到bin和xbin下,依此類推。換句話說,system或者data這個目錄層次結構是取決於你自己的,你希望放的東西屬於什麼,應該運行在online系統的什麼目錄下,update.zip裡面就應該是有相應的目錄路徑,然後東西就放在裡面。

具體點,我們現在要依樣畫葫蘆,搞一個新的update.zip,那麼第一步就是首先建立一個文件夾
mkdir new-update
好,假設我新update.zip的作用就是預裝我自己的一個程序,my.apk,那麼,我建立對應的子目錄
mkdir -p new-update/system/app
cp my.apk
這樣,system目錄就完成了。但是這時,update.zip的目錄層次還沒完,我們看MoDaCo ROM中的update.zip中有文件夾叫META-INF,這個文件夾很關鍵,除了根目錄下的三個文件外,裡面層層目錄,就包括了一個文件,叫 update-script,內容如下
show_progress 0.1 0
_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 0755 0644 SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
_dir PACKAGE:data DATA
show_progress 0.2 0
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
show_progress 0.2 100

這裡面的內容,大部分是針對你要做的修改設置的。比如
_dir PACKAGE:system SYSTEM:
就是把system中新增的工具拷貝到手機上,然後
set_perm_recursive 0 0 0755 0644 SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
就是設置MoDaCo ROM中新增程序的許可權,然後
_dir PACKAGE:data DATA:
把data下的內容(就是那個init.rc)復制到手機上,然後
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
刷boot分區。
那我們這里沒有這么多新增的東西,應該怎麼寫呢?
_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 04755 SYSTEM:app/my.apk
就可以了。你當然還可以做一些別的事情,比如加一個FORMAT DATA之類的^_^開個玩笑,千萬別這個干,不然你的數據就全沒了。
好,那麼也就是說,我們要在自己的new-update目錄下也建一個/META-INF/com/google/目錄,然後把新的update-script扔進去。
完了么?差一點。其實如果你沒有別的需求了,那麼就完了,可以把下面這一小塊跳過。下面這一小塊,是關於boot.img的。在如何修改Android系統的Ramdisk以及boot鏡像文章中,我們談到,如果刷boot鏡像有問題,就要用別的方法讓系統boot我們自己的boot image了,這個別的方法,自然就是用update.zip了。MoDaCo ROM版本的update.zip也包括了一個boot.img,但是如果我們有出於各種需求自己修改的boot.img,自然就可以替換掉原來的了。當然注意,如果加了boot.img,那麼update-script裡面就不能漏掉
write_raw_image PACKAGE:boot.img BOOT:
這句。
好,到現在,我們的new-update目錄下有
/system/app/my.apk
/META-INF/com/google/update-script
/META-INF/MANIFEST.MF
/META-INF/CERT.SF
/META-INF/CERT.RSA
boot.img
恩,那麼就進入打包階段。你可能會問,這有什麼難的,直接zip一下不就得了。如果要是這么簡單就好了,你打包後,必須把你的內容都sign一下,得到相應的cert,才能在fastboot模式中被承認並成功刷機。
在sign你的文件之前,先做這么幾件事
打包。進入update文件夾,zip update.zip xxx xxxx xxxx xxxx xxxx。什麼意思呢,就是只把你需要的文件打包,不要用./*作為參數。而且相對路徑最好是在update下面,不要在外面用zip update.zip ./update/*這種命令打包
去sun網站下載最新的
下載這個文件testsign一定要用JRE1.6.0.16或者更高,我知道這個有點惡心,但是提供下載的testsigh.jar就是按照這個版本或者更高編譯的,你用老版本就運行不了。
好,下下來以後,執行這個命令
~/jre1.6.0_16/bin/java -classpath testsign_path/testsign.jar testsign update.zip update-signed.zip
稍微講解一下,java程序是最新jre下的,testsign_path是你放testsign.jar的地方,建議放到sdk的tool目錄下。update是待sign文件,update-signed是指定的生成文件名。
sign執行完後,用unzip -l看,會發現
/META-INF/MANIFEST.MF
/META-INF/CERT.SF
/META-INF/CERT.RSA

2. iwlist怎麼移植到android

最近在調試WIFI softap功能,發現netd源碼中包含"iwpriv"相關的注釋,這個工具應該會對WIFI調試非常有用,於是准備將其移植到Android上。

首先到這里下載源碼,然後解壓,按照網上搜出來的方法,把目錄里頭Makefile的CC,AR等改成交叉編譯所用的,但是發現make all的時候報缺少頭文件錯誤。用-I將頭文件引入之後在ld階段又報缺少crt0.o。折騰了半天之後依然無果,於是決定直接在目錄下加個Android.mk用Android的make來編譯。

一次嘗試之後竟然成功了,淚流滿面,以下是具體步驟:

1,在目錄下cp -f wirless.29.h wirelss.h (自帶的Makefile就是這么乾的,根據版本選擇頭文件,我下載的是.29版本)

2,在目錄下加入Android.mk,內容如下:

3. 如何將一台安卓手機上的軟體移植到另一台手機

現在的國產品牌安卓手機一般會在系統內內置數據遷移功能,只需要將新舊手機同時開啟設置好即可傳輸;如果沒有該功能可以嘗試使用第三方例如【QQ同步助手】,在登陸同一個賬號之後上傳到雲端即可同步遷移數據。以下是具體步驟:

1、有一些安卓手機系統內置了數據遷移功能,只需要打開手機【設置】中更多設置即可看到【一鍵換機】或者名為【數據遷移】的功能,只需在新舊手機上分別設置好,兩者就可以通過無線傳輸的方式實現數據的遷移,一般包括通訊錄、圖片、應用等數據都可以遷移到新手機上;

2、如果您的系統中沒有包括這個功能,那麼您就需要藉助一下第三方的軟體,比如說【QQ同步助手】,在新舊手機都下載好同步助手,然後使用微信或QQ號登陸,選擇右上角菜單中【更多備份】,即可看到簡訊、通信錄和軟體等備份的選項,按需點擊之後,就可以將舊手機的數據同步到伺服器,只需在新手機上登陸相同賬號即可重新同步以上的資料信息。

4. 如何移植ANDROID系統

貌似你的手機配置條件不夠哦~~
就算給你移植成功了200MHz的CPU也夠吃力的~
現在android手機主頻都500MHz以上的~
想移植的話好多東西要學~例如SPL啊、驅動啊--這些都是要有比較強的專業知識的~
我建議你到魅族M8的論壇去看看
魅族M8就是一款從WinCE系統到android系統移植的機器~
到論壇問問裡面的高手應該會有幫助~

5. Android源碼是怎麼移植的

2.4搭建Android SDK開發環境 上一節我們講解了如何下載、編譯Android系統及Linux內核,接下來,講解如何搭建Android SDK開發環境,包括Eclipse下載安裝、ADT插件安裝、Framework源碼級調試、定製Android系統等相關知識。 2.4.1 下載、安裝Eclipse 說明:當前新的SDK開發環境Google採用了ADT Bundle,如果為了方便安裝和下載,可以選擇下載最新的ADT Bundle。 ADT Bundle 選擇Linux平台即可。 首先、從Eclipse官方網站上下載EclipseIDE Classic,注意選擇合適平台(在32位Ubuntu中,選擇Linux 32 Bit版本): 下載完成後,解壓縮,運行Eclipse:

6. 怎麼移植android 7.0

安卓7.0終於來啦!相信不少人都很激動,那麼,安卓7.0系統怎麼樣?安卓7.0系統好不好?安卓7.0系統有什麼新功能?今天,小編就為大家帶來Android7.0新功能介紹。
安卓7.0

當Android 7.0還叫Android N時,小編就為大家介紹過它的新功能:包括多窗口、通知中心以及系統界面和交互邏輯的更新。歷經了多個版本的快速試錯和迭代,Android 7.0 正式版已經正式和大家見面。

如何快速升級?

目前,Google Nexus親兒子系列中部分機型可以吃上新鮮的牛軋糖。

Google 系完整支持升級名單如下:

Nexus 6、Nexus 9、Nexus 5X、Nexus 6P 和 Nexus Player

Pixel C

General Mobile 4G ( Android One )

較為老舊的機型雖然無法獲得官方更新,但可以期待一下第三方ROM團隊的移植作品,有關於這方面的資訊,就要等待更多消息了。

Google 這次依然通過「分批升級」來推送正式版 Android 7.0 更新,這導致在中國的大部分親兒子(Nexus 手機)無法直接收到最新的系統更新推送。

不過你還有Google提供的 Beta版注冊頁面。只要在親兒子中登錄Google賬號,再到這個頁面登記Beta測試計劃,就能快速收到Android 7.0更新了,而且是即點即收到更新喔。

安卓7.0

經過小編測試,現在加入Android Beta計劃,直接就會收到Android 7.0正式版的推送,其中包括八月的安全性更新。

小編在這里提醒,系統更新時千萬不要切換網路。因為Android會繼續下載更新 ……(小編用移動網路下載了整個Beta,這是血與淚的教訓。)

此外,Sony Xperia Z3用戶也能通過上面的地址,找到索尼官方提供的新Android N Beta計劃參與頁面,但無法保證Sony Xperia Z3收到的Android 7.0是公開穩定版,也不一定能保證能參與Beta計劃。

Android 7.0有什麼新功能?

此次更新中最注目的是多窗口分屏功能和通知中心的改變。

1. 多窗口分屏功能

在Android 7.0中,系統原生支持多窗口功能:只要性能足夠、屏幕夠大,就有可能完美享受到多窗口功能了。

經過測試,絕大部分動態兼容多解析度的app都能完美支持多窗口分屏功能(包括微信),少數應用都會直接提示「該應用不支持分屏功能」而分屏失敗。Chrome、Inbox以及其他app都已經完全支持多窗口分屏。

安卓7.0

那麼如何打開多窗口分屏功能呢?有兩種辦法。

在應用中按住多任務按鈕(虛擬鍵排中的方形鍵),當前應用就會佔用上/左半屏幕。

按一下多任務按鈕(虛擬鍵排中的方形鍵),將需要分屏的第一個應用按住,拖動到屏幕上半部分。

開啟分屏模式時,你可以選擇在下半部分選擇最近應用顯示到第二屏幕,也可以按下主頁鍵,回到主頁選擇開啟一個新的應用。

關閉分屏模式也有2個辦法:直接按住多任務鍵,系統會直接保留上/左半屏幕的應用;或者直接將中間的分割線拉向邊緣。

7. 不同安卓手機之間的軟體移植

首先要兩個手機要想相適用,手機安卓版本是要相同的,這樣才可以用,望採納

8. Android平台Java程序可移植性問題

其實JAVA程序之所以通用是因為它為不同平台的機器都寫了一個虛擬機,JVM對應不同的平台。
JAVA的跨平台的原因是:每個虛擬機讀得懂編譯出來的位元組碼

9. 如何在iOS與Android間移植APP

除了像"I am rich"這種定點打擊蘋果燒包族的APP外,大多數應用都會盡量覆蓋包含盡可能多的用戶。這就需要考慮在iOS和Android兩種主流操作系統間移植的問題。如果為各個平台量身定做界面,就能讓用戶利用以往的使用習慣快速學習。但為多個平台設計各異的界面畢竟是需要工作量的。如何才能在跨平台移植的時候只做那些最有必要的工作呢?兵不打無准備之仗,先來看看iOS與Android間有什麼差別吧。

1、物理鍵之返回

Android手機的基本設計思路是是把最常用的功能硬體化,所以就有了home,menu,back三個功能鍵(其實界面設計很簡單啦,就是「用戶到某個地方做某事」,所以就有了導航用的back和展開命令用的menu)。

喬老爺夠狠,要求iOS設備只有一個物理鍵home(據說以後還會把這個鍵砍掉,用手勢當home)。所以在iOS上,返回是通過title bar左側的back按鈕來實現的。但這樣設計也有好處,因為這個back「軟」鍵上的文本是可以改的。在這個按鈕上填上上一次的題目,可以讓用戶明確地知道按下它會回到哪裡。

2、物理鍵之menu

在android上,與當前頁面相關的命令會收到由「menu」鍵喚出的菜單里。而在iOS上,這些命令會放在屏幕底部的toolbar上。這種展示方式相比android的優點是「能一目瞭然地看到能夠對當前頁面做的操作」。而在android上,必須按下menu鍵才能看到命令。你不希望用戶在使用你的APP時肩負著把這些命令背下來的艱巨任務吧?

3、Android的加分項:通知系統

在iOS上,向用戶推送信息的方式只有一種,就是alert box。這在iOS只支持單任務的時候還好說,提醒一來,哦…… 看完了就點確定。但到了多任務版本後就有點不合用了。雖然iOS的alertbox可以在用戶使用某APP的時候彈出其他APP的提示,但這樣未免太煩了。有時一些提醒並不需要強硬中斷用戶當前的操作,比如後台在下載的報紙下完了。Android有更精巧的Status Bar Notification和Toast Notification(詳情可參看鍾磊的手機系統消息通知設計的整理和分析和我寫的如何為手機界面設計提示消息)。當要推送非緊急的消息時,Android平台可以使用更柔和的狀態欄提示。

4、Android的加分項:長按操作

在Android上,當需要對一個對象採取一些操作時,可以長按,喚出相應的context menu(這是對一個項目的,如果是針對當前整個頁面的操作,Android有menu物理鍵,iOS有toolbar)。但是在iOS平台上就不太有地方去放置針對屏幕上某一個對象的大量操作(一兩個是可以的,放在項目旁邊就O了)。可能在喬老爺看來,當需要對一個對象進行「炒、炸、烹、煮、蒸、熏、爆」的時候,就說明你想要的太多了。

5、iOS的加分項:右上角的快捷操作按鈕

對於「右利手」用戶而言,單手持機時屏幕左下角到右上角的連線是右手拇指的甜區。所以依照iOS的Guideline,當前頁上最最最最最最最最最最最最最最常用的按鈕應該放在titlebar的右端。

其實你會發現,清楚了這些差異之後,如何在平台間移植APP就清晰明了啦。

Android -> iOS

1、在每一級的標題欄左上角加上返回上一層的按鈕。按鈕名一定要是上一級的名稱,不能用「返回」等無法透露回到哪裡的文字。

2、由於iOS上沒有menu鍵,所以需要將menu上的命令轉化成toolbar上的圖標。因此要額外繪制圖標或者使用內置圖標。

3、由於在iOS上沒有「長按出context menu」的規則,所以需要給項目添加一個detail頁面。不能在list頁面操縱項目,那就再drill down一層唄。

4、由於iOS的通知方式只有alert box,所以諸如「下載完成」等提醒只能篩出重要的部分,用alert box傳遞。對次要提醒的設計可以看我之前的文章。

iOS -> Android

1、左上角的返回按鈕拿掉。

2、工具欄上的命令可以放到menu里。

3、如果對某個對象的命令很多,可以為其設計長按的context menu

4、不是很緊急的提醒就不要用alert box了,可以換成status bar notification

5、標題欄右側的高頻按鈕可以保留,這個在android上也可以通用。

其實總的來說,也就兩點:

1、差異主要體現在導航方式和頁面命令上,所以對於頁面元素的布局基本沒影響。尤其是對於全屏游戲這種基本沒導航,控制項又都擺在屏幕上的更是影響不大。

2、iOS對硬體的依賴更低。如果實在是小公司,趕時間,沒精力跨平台移植的話,可以考慮只為iPhone設計,然後直接套到android上,湊活著也能用的。但android用戶在使用時也會覺得有一點點怪怪的。

10. 如何移植定製Android 4.4

我自己是個刷機狂人,恰巧也愛好開發APP,因此對ROM移植和定製做過一些研究和了解。其實rom定製不需要多少的編程技巧(當然有基礎會更好),如果你只為定製你想要的一些功能,只要進行整合再重新打包就可以了。你可能會看到在很多論壇的rom發布者並沒有多少的java,c,c++知識,但他們可以弄出一些非常棒的rom。相反的如果你用過MIUI,華為的rom,Flyme等等,這很難是一個人弄出來的,需要一個團隊包括產品經理、設計師、測試人員、編碼人員等等。

作者:Jacky Chen
鏈接:https://www.hu.com/question/22554893/answer/29355697
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

閱讀全文

與android移植相關的資料

熱點內容
app窺探隱私到哪裡投訴 瀏覽:713
decimal數據加密 瀏覽:646
游戲模型加密了如何破解 瀏覽:309
北京伺服器硬碟回收門店雲主機 瀏覽:837
神探狄仁傑5在哪個app可以觀看 瀏覽:697
雲南中級程序員實戰培訓 瀏覽:674
安卓軟體什麼平台比較好 瀏覽:153
linux五筆輸入法下載 瀏覽:923
程序員問題解決方案 瀏覽:78
數據和app哪個好 瀏覽:120
大眾app怎麼顯示車去哪裡 瀏覽:274
柱根部的加密區長度怎麼算 瀏覽:847
沈陽人力資源公司外包程序員 瀏覽:313
陌探app哪個好 瀏覽:289
法院案件查哪個app 瀏覽:479
計算器演算法問題 瀏覽:748
右肺被壓縮約80 瀏覽:641
vb編譯的語法錯誤是什麼 瀏覽:841
清華大學編譯原理2020 瀏覽:285
怎麼才能獲得雲伺服器 瀏覽:809