當前位置:首頁 » 安卓系統 » mmmandroid

mmmandroid

發布時間: 2023-05-09 18:44:38

『壹』 如何單獨編譯Android源代碼中的模塊

一. 首先在Android源代碼目錄下的build目錄下,有個腳本文件envsetup.sh,執行這個腳本文件後,就可以獲得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意,這是一個source命令,執行之後,就會有一些額外的命令可以使用:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
這些命令的具體用法,可以在命令的後面加-help來查看,這里我們只關注mmm命令,也就是可以用它來編譯指定目錄的所有模塊,通常這個目錄只包含一鉛笑個模塊。
二. 使用mmm命令來編譯指定的模塊,例如Email應用程序:
USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/
編譯完成之後,就可以在out/target/proct/generic/system/app目錄下看到Email.apk文件了。Android系統自帶的App都放在這具目錄下。另外,Android系統的一些可執行文亮慶件,例如C編譯的可執行文件,敬激握放在out/target/proct/generic/system/bin目錄下,動態鏈接庫文件放在out/target/proct/generic/system/lib目錄下,out/target/proct/generic/system/lib/hw目錄存放的是硬體抽象層(HAL)介面文件,後面的文章裡面,我們會陸續提及到,敬請關注。
三. 編譯好模塊後,還要重新打包一下system.img文件,這樣我們把system.img運行在模擬器上時,就可以看到我們的程序了。
USER-NAME@MACHINE-NAME:~/Android$ make snod
四. 參照Ubuntu上下載、編譯和安裝Android最新源代碼一文介紹的方法運行模擬器:
USER-NAME@MACHINE-NAME:~/Android$ emulator
這樣一切就搞定了。

『貳』 android.mk使用方法和mm,mmm命令怎麼使用

應用程序源碼的根目錄下面,這只有在linux下用MMM交叉編譯鏈編譯的時候才用的到,eclipse下是不會生成的。

『叄』 同一個android apk 如何在同一個設備上同時安裝兩個,

回答:有兩種方法如下
方法一,Eclipse開發環境中整合:
1. 工程原來是兩個APK,InnerAPK和OuterAPK,裡面都只有一個Activity,分別為InnerActivity和OuterActivity。
2. 在InnerAPK工程上選擇右鍵,選擇Properties->Android,勾選Is Library,然後選擇Apply,點擊OK關閉對話框即可。
3. 第(2)其實將InnerAPK作為一個Library工程了,我們需要在OuteAPK中引用這個工程,同樣在OuterAPK上點擊右鍵,選擇Properties->Android,選擇Add,然後選擇InnerAPK。
4. 之後可以在你需要使用的地方直接import InnerAPK的包名即可,比如import com.example.innerAPK.InnerActivity。
5. 將在InnerActivity中的AndroidManifest.xml文件中的內容移動到OuterActivity的AndroidManifest.xml文件中,此例子只有InnerActivity而已:
方法二:在Android源代碼包上mmm命令編譯
1. 首先將InnerAPK和OuterAPK兩包代碼都復制到packages/apps目錄下
2. 在OuterAPK目錄下新建Android.mk文件,
3. 然後跟方法一的第(5)步一樣,將AndroidManifest.xml文件中的內容從一個Inner轉移到Outer當中。
4. 然後採用mmm命令編譯生成apk。

『肆』 如何定製android源碼的編譯選項 amp;後期安裝

Android編譯過程比較長,配置起來也很麻煩。現僅就工作遇到的問題做個總結。所用硬體平台為amlogic stvm3。---------------------------------------------------------------------------關於版本號:文件build/core/version_defaults.mk用來檢查一些跟版本相關的變數是否定義;如果未定義,則使用默認值。這些變數包括 PLATFORM_VERSION # 如 2.2.5 PLATFORM_SDK_VERSION # 8, 對應2.2.5 PLATFORM_VERSION_CODENAME # REL,即發行版 DEFAULT_APP_TARGET_SDK # 同SDK_VERSION或VERSION_CODENAME BUILD_ID # 默認為UNKNOWN BUILD_NUMBER # 默認eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 version_defaults.mk首先包含進build_id.mk。用戶應當配置build_id.mk,而不應該改動version_defaults.mk文件。然後檢查上述變數,如未定義則賦值默認值。---------------------------------------------------------------------------關於調試功能(adb)的開啟編譯android源碼之前總是要先運行build/envsetup.sh,以初始化一些常用命令(實際上是bash的函數,如add_lunch_combo)。其中也從以下文件中引入了一些編譯設置: device/${CHIPSET_VENDOR}/vendorsetup.sh這里使用的CHIPSET_VENDOR為amlogic。比如自己有文件device/amlogic/vendorsetup.sh,內容為"產品名-編譯類型(flavor)"列表(稱為combo),如下: add_lunch_combo m1ref-eng add_lunch_combo m1ref-user add_lunch_combo m2ref-eng add_lunch_combo m2ref-user add_lunch_combo stvm3-eng add_lunch_combo stvm3-user其中,m1ref和stvm3是產品名(作前綴),後面為編譯類型。除此前綴外可選的combo值有: eng, user, userdebug, tests。(參考文件build/core/main.mk中對於變數TARGET_BUILD_VARIANT的篩查條件)可以修改vendorsetup.sh文件,來改變為特定設備編譯的結果。以下是各個編譯類型的特點: eng: 工程模式,用於平台級的調試,是默認的編譯類型。 待安裝的模塊tag有: eng, debug, user, development. 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性: ro.secure=0, ro.deuggable=1, ro.kernel.android.checkjni=1 adbd默認開啟,adb以root身份運行。 user: 即最終用戶版; 待安裝的應用tag有: user 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性有ro.secure=1, ro.debuggable=0; 默認關閉adbd服務(但可通過應用settings來打開,且adb以shell身份運行); userdebug: 與user類似,除了: 支持有限的調試功能; 待安裝的應用tag有:debug;

『伍』 如何單獨編譯Android源代碼中的模塊

1.make 模塊名稱
需要查看Android.mk文件的LOCAL_PACKAGE_NAME變數。
2.mmm命令
用於在源碼根目錄編譯指定模塊,參數為模塊的相對路徑。只能在第一次編譯後使用。比如要編譯Phone部分源碼,需要在終端中執行以下命令:
$mmm packages/apps/phone
3.mm命令
用於在模塊根目錄編譯這個模塊。只能在第一次編譯後使用。例如要編譯Phone部分源碼,需要在終端中執行以下命令:
$cd packages/apps/phone
$mm
註:mmm和mm命令必須在執行「.build/envsetup.sh」之後才能使用,並且只編譯發生變化的文件。如果要編譯模塊的所有文件,需要-B選項,例如mm -B。

『陸』 android系統編譯為什麼先mmm編譯再make才生效

android系統編譯為什麼悄磨世先游蔽mmm編譯再make才生效,這是因為環境決定的,只有先mmm成功啟肢了才會編譯的

『柒』 如何編輯和調試android源碼

在源碼中,存在idegen模塊,該模塊專門用來為idea工具生成系統源碼的project.
在開始編譯該模塊之前,首先確保你已經編譯過Android源碼了,如果沒有,可以參考上篇文章進行編譯.
和編譯普通的模塊一樣,我們用mmm命令編譯idegen.在開始編譯之前,檢查out/host/linux-x86/framework/目錄下是否存在idegen.jar文件,存在則說明你已經編譯過該模塊,否者,則需要編譯.執行如下命令即可:
soruce build/envsetup.sh
mmm development/tools/idegen/
sudo ./development/tools/idegen/idegen.sh123123

其中mmm development/tools/idegen/執行完成後會生成idegen.jar,而sodo ./development/tools/idegen/idegen.sh則會在源碼目錄下生成IEDA工程配置文件:android.ipr,android.iml及android.iws.
簡單的說明一下這三個文件的作用:
android.ipr:通常是保存工程相關的設置,比如編譯器配置,入口,相關的libraries等
android.iml:則是主要是描述了moles,比如moles的路徑,依賴關系等.
android.iws:則主要是包含了一些個人工作區的設置.

『捌』 Android系統編譯指令make 、mmm、mm優缺點比較

Android 系統提供了三種指令用於編譯,他敬則兆們分別為make、mmm、mm,這三個指令編譯的優缺點如下:

例如:make MediaProvider z這種模式對應於單個模塊的編譯。它的優點是:會把該模塊依賴的其他模塊一起跟著編譯。例如:make libmedia 就會把libmedia依賴庫全部編譯好。當然缺點也會很明顯,那就是它會搜索整個源碼來定位MediaProvider 模塊所使用的Android.mk文件。並且還要判斷該模塊依賴的其他模塊是否有修改。所以編譯時間比較長。

注意:一般的編譯方式都會採用增量編譯,即只編譯發生變化的目標文件,亮租但有時則需要重新編譯所有目標文件,那麼就可以使用make 命令行的-B選項。例如:mm -B 模塊名,或者mm -B、mmm -B。在mm 和 mmm內部也是調用盯答make命令的,而make的-B選項將強制編譯所有的目標文件。

『玖』 android編譯命令的說明

android源碼目錄下的build/envsetup.sh文件,描述編譯的命令

- m:       Makes from the top of the tree.

- mm:      Builds all of the moles in the current directory.

- mmm:     Builds all of the moles in the supplied directories.

要想使用這些命令,首先需要設置android腳本編譯環境,在源碼根目錄執行 source build/envsetup.sh

m:編譯所有的模塊

mm:編譯當前目錄下的模塊,當前目錄下要有Android.mk文件

mmm:編譯指定路徑下的模塊,指定路徑下要有Android.mk文件

下面舉個例子說明,假設我要編譯android下的\framework\av\cmds\screenrecord模塊,

當前目錄為源碼根目錄,方法如下:

1、source build/envsetup.sh

2、mmm framework/av/cmds/screenrecord

或者 :

1、source build/envsetup.sh

2、cd framework/av/cmds/screenrecord

3、mm

『拾』 android編譯環境用mmm編譯,報錯'string' does not name a type

1.androidERROR:unknownvirtualdevicename解決法打開系統屬性-->環境變數—>在「系統變數」那一個GroupBox下面選擇「新建」-->變數名為"ANDROID_SDK_HOME」(注意,這個變數名不能改變,只能是這個名字!),然後把變數值改為你想把AVD所在的".android」文件夾放置的位置,比如:"F:\AndroidEmulator」,在這里我把它放在AndroidSDK包中,值為:"D:\SDK\Android\android-sdk-windows-1.5_r3」,如下圖所示。設定成功的話,在eclipse里preferneces->Android->BulidSetting里為如下結果:Defaultdebugkeystore:F:\Android_Emulator\\.android\debug.keystore然後這樣就可以一勞永逸了!!!2.emulator-5554disconnected!Cancelling'oms.Hello.HelloOpone'launch!在eclipse裡面改變一下你run的時候的設置就好了.右點你的工程後run裡面有一個runconfigrations,在裡面有一個選項每次運行都察掉記錄wipe.的,選上就好了.

熱點內容
視頻加解壓 發布:2025-05-19 16:35:28 瀏覽:5
c語言大學教程第六版 發布:2025-05-19 16:04:21 瀏覽:740
androidvr播放器 發布:2025-05-19 15:55:32 瀏覽:964
我的世界pc如何創建伺服器 發布:2025-05-19 15:51:24 瀏覽:733
搶腳本 發布:2025-05-19 15:47:14 瀏覽:406
ct4哪個配置性價比最高 發布:2025-05-19 15:38:02 瀏覽:953
如何設置強緩存的失效時間 發布:2025-05-19 15:21:28 瀏覽:695
winxp無法訪問 發布:2025-05-19 15:19:48 瀏覽:947
文件預編譯 發布:2025-05-19 15:14:04 瀏覽:643
怎麼在伺服器上掛公網 發布:2025-05-19 15:14:02 瀏覽:272