當前位置:首頁 » 操作系統 » android40源碼目錄

android40源碼目錄

發布時間: 2022-08-17 20:37:32

❶ 如何運行打包的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源碼根目錄執行.
build/envsetup.sh
腳本設置環境
m:編譯所有的模塊
mm:編譯當前目錄下的模塊,當前目錄下要有android.mk文件
mmm:編譯指定路徑下的模塊,指定路徑下要有android.mk文件
下面舉個例子說明,假設我要編譯android下的\hardware\libhardware_legacy\power模塊,當前目錄為源碼根目錄,方法如下:
1、.
build/envsetup.sh
2、mmm
hardware/libhardware_legacy/power/
編譯完後
運行
make
snod
會重新將你改過的模塊打入到system.img中

❷ 初學android studio如何保存項目源碼全部保存也太大了,有40左右mb!

從Eclipse中導出1.將你的ADT插件版本升級到22.0以上。2.在Eclipse中,選擇File-->Export。3.在彈出的導出窗口中,打開Android的文件夾,選擇「GenerateGradleBuildFiles」。4.選中你想要導入到AndroidStudio中的項目,Finish。PS:導出的項目將會和原來的項目在同一目錄,覆蓋原來的同時,會新增一個叫build.gradle的文件,導入AndroidStudio時將首先讀取這個文件。導入到AndroidStudio1.在AndroidStudio中,首先關掉你當前的打開的項目。2.在歡迎界面,點擊ImportProject(註:也是可以直接在菜單選擇Importproject的)3.選中你在Eclipse中導出的項目,目錄,點擊build.gradle文件,然後OK4.在之後的彈出對話框中,會要求你選擇Gradle的配置,選中Usegradlewrapper.(註:也可以自定義你本機裝的Gradle)PS:如果沒有Gradebuild文件,也是可以將普通的安卓項目導入到AndroidStudio中,它會用現有的Antbuild.但為了更好地使用之後的功能和充分使用構建變數,還是強烈地建議先從ADT插件中生成Gradle文件再導入AndroidStudio~~~

❸ android源碼在哪個文件夾下

android的源碼首先需要你從Android SDK Manager裡面下載,然後在你的sdk中才看得到。


  • 如下圖,找到對應的source for Android sdk項,選中然後下載:

❹ android怎麼修改源碼

在Android界面的系統status bar上添加home,back,menu三個菜單,並完成對應的系統功能。並有higlight效果,修改status bar 高度和status bar上的文字尺寸。

這需要修改android sdk才能完成,我用的是eclair.下面就我的操作進行敘述。

1.首先完成界面顯示效果。

需要修改文件

./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java,仿照mBatteryIcon等icon的添加方式添加自定義的icon,圖片名稱指定就好了。另外還要記得修改./frameworks/base/core/res/res/values/arrays.xml,這里定義了icon的slot,並且決定了icon的擺放順序。

這樣,你需要的icon按鍵就可以顯示在系統的status bar上面了。

2.判斷touch event是否按動了某個icon

需要修改的文件

./frameworks/base/services/java/com/android/server/status/StatusBarView.java

首先在onTouchEvent函數中,獲取當前event的坐標,然後比較是否在某個按鍵范圍之內。由於系統對於statusBar的范圍已經有了定義,所以這里只需要比較橫坐標就可以了。

其次,也是這一步最關鍵的,怎麼獲取具體某一個icon的左右邊界坐標呢?系統的status bar左邊顯示的圖標都是notification, 右邊顯示的是系統icon. 也就是說左邊icon屬於mNotificationIcons,右邊的icon屬於mStatusIcons. 在文件StatusBarView.java中出現的offset = getViewOffset(mStatusIcons),得到mStatusIcons的最左邊的icon的left橫坐標。用N = mStatusIcons.getChildCount()得到共有幾個系統icon,其中包含visibility為false的icons.用mStatusIcons.getChildAt(N-i)得到的是從右邊數第i個的icon view. 這個view的getLeft()+offset就是這第i個icon的左邊橫坐標,對應的getRight()+offset就是這第i個icon的右邊橫坐標。本例中home鍵是右邊第2個icon.

3.定義icon響應事件

這里使用的方法是在StatusBarView.java中向

./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java發送一個Broadcast,讓StatusBarPolicy來完成具體的事件操作。這里需要注意的是不僅要在./frameworks/base/core/java/android/content/Intent.java中定義intent,還要在StatusBarPolicy的構造函數中添加該intent的過濾動作,即filter.addAction(Intent.ACTION_BACKICON_CHANGED).例如,按動了back鍵,如果當前事件為action_up,就向系統發送一個keyEvent,keyCode為KeyEvent.KEYCODE_BACK. 這里借用的是./frameworks/base/cmds/input/src/com/android/commands/input/Input.java中的sendKeyEvent函數,直接拷貝過來,按照需要稍微修改一下形參就可以了,過程不要修改。

需要說明的是,當點擊statusBar可以拉出來一個notification列表,當這個列表顯示出來的時候,這三個back, menu, home鍵的響應速度會非常慢,所以這時不響應事件並隱藏這三個鍵。具體做法是在StatusBarView的onTouchEvent()中判斷mService.mExpanded或者 mService.mTracking為真時就不做響應。mService是StatusBarService對象。隱藏三個鍵也是用Broadcast來做的,但這個intent是由StatusBarServie發出來的,當mExpandedVisible = false時顯示,當mExpandedVisible = true時隱藏。

這里還同時完成了highlight換圖的動作,也是用Broadcast來做得,處理過程一樣,就是需要區分action_down和action_up就可以了。

4.調整status bar的高度

如果你需要顯示較大的屏幕尺寸,同時statusBar的高度要拉大,上面的icon的size也需要調大。為了協調一致,顯示時間的字體和notification顯示的日期的字體也需要調大。具體做法如下:

a.調節status bar icon的size: 只調節status_bar.xml的textSize標簽似乎不起作用,同時又修改了./base/services/java/com/android/server/status/StatusBarIcon.java的t.setTextSize(32);語句才成功。不知道修改status_bar.xml的<com.android.server.status.AnimatedImageView>標簽下的layout_height值是不是必須的,反正我是一起都給改了。

b.調節status bar height: ./base/core/res/res/values/dimens.xml 找得我好辛苦!不知道還需不需要修改./base/core/res/res/values/themes.xml中的Window attributes的windowTitleSize值,反正我也給改了。

c.調節notification顯示日期字體的大小,修改status_bar.xml的<com.android.server.status.DateView>的textSize值。

到這里,就完成了所有工作,看看效果吧。

❺ android4.2源碼 kernel在什麼位置

您好,很高興能幫助您
1 git和repo簡介
Git 是 linux Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的分布式版本控制軟體,它不同於Subversion、CVS這樣的集中式版本控制系統。在集中式版本控制系統中只有一個倉庫(repository),許多個工作目錄(working ),而像Git這樣的分布式版本控制系統中(其他主要的分布式版本控制系統還有BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone等),每一個工作目錄都包含一個完整倉庫,它們可以支持離線工作,本地提交可以稍後提交到伺服器上。分布式系統理論上也比集中式的單伺服器系統更健壯,單伺服器系統一旦伺服器出現問題整個系統就不能運行了,分布式系統通常不會因為一兩個節點而受到影響。
因為Android是由kernel、Dalvik、Bionic、prebuilt、build等多個Git項目組成,所以Android項目編寫了一個名為Repo的python的腳本來統一管理這些項目的倉庫,使得Git的使用更加簡單。
2 獲取源碼的工具安裝
(a)安裝git 和curl:
apt-get install git-core curl
(b)安裝repo:
創建存放repo目錄
$ cd ~
$ mkdir bin
$ export PATH=~/bin:$PATH
下載repo並改變許可權
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
3 下載源碼
下載Android源碼
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo sync
下載Android Linux kernel源碼(具體見http://android.git.kernel.org/)
git clone git://android.git.kernel.org/kernel/common.git(下載下來的內核源碼在common文件夾中)
//註:如果過程中出現錯誤:fatal: Unable to look up (port 9418) (Name or service not known),請檢查下Linux的網路是否可用。我出現這個錯誤的時候是因為無線網設置了IP和MAC綁定引起的。

❻ 如何在32位ubuntu11.10 下編譯android 4.0.1源碼和goldfish內核

一準備工作

1安裝javasdk6
(1)從jdk官方網站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下載jdk-6u29-linux-i586.bin文件。
(2)執行jdk安裝文件

[html] view plain
$chmod a+x jdk-6u29-linux-i586.bin
$jdk-6u29-linux-i586.bin

(3)配置jdk環境變數

[html] view plain
$sudo vim /etc/profile
[html] view plain
#JAVAEVIRENMENT
exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存後退出編輯,並重啟系統。
2安裝依賴包

[html] view plain
$sudo apt-get install git-core gnupg flex bison gperf build-essential\
zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\
x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\
libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\
libxml2-utils

3用repo工具下載源碼
(1)初始化repo

[html] view plain
$cd ~
$mkdir bin
$curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo
$chmod a+x ~/bin/repo
$exportPATH=$PATH:~/bin(導出環境變數)

(2)下載android最新源碼

[html] view plain
$mkdir android
$cd android
$ repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.0.1_r1
...(輸入用戶名和郵箱名)
$repo sync -j5
...(此處用5個線程開始下載源碼,下載過程及其漫長,需要耐心等待)

二 編譯源碼
1開始編譯

[html] view plain
$source build/envsetup.sh
includingdevice/samsung/maguro/vendorsetup.sh

includingdevice/samsung/tuna/vendorsetup.sh

includingdevice/ti/panda/vendorsetup.sh

includingsdk/bash_completion/adb.bash

$make-j4(此處用4個線程編譯)

編譯完成後,會看到類似的輸出:

[html] view plain
Targetramdisk:out/target/proct/generic/ramdisk.img
Targetuserdatafsimage:out/target/proct/generic/userdata.img
Installedfilelist:out/target/proct/generic/installed-files.txt

2編譯遇到的問題
編譯錯誤:

[html] view plain
<命令行>:0:0:錯誤:「_FORTIFY_SOURCE」重定義[-Werror]

<built-in>:0:0:附註: 這是先前定義的位置

cc1plus:所有的警告都被當作是錯誤

make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]錯誤 1

原因:
因機器上的gcc版本過高,需替換成4.4.6重新進行編譯。
解決方法:
1)安裝4.4版本的gcc和g++

[html] view plain
$ sudo apt-get install gcc-4.4
$ sudo apt-get install g++-4.4

2)設置gcc版本,使gcc鏈接到gcc-4.4

[html] view plain
$ ls -l /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc

3)設置g++版本,使g++鏈接到g++-4.4

[html] view plain
$ sudo mv g++ g++.bak
$ sudo ln -s g++-4.4 g++

4)設置完畢後,重新進行編譯即可

3從模擬器啟動編譯後的鏡像文件
1)設置環境變數:

[html] view plain
export PATH=~/android/out/host/linux-x86/bin:$PATH

export ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic

其中linux-x86/bin存放模擬器emulator工具,proct/generic存在編譯後的鏡像文件。

2)啟動模擬器

[html] view plain
$emulator

emulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)

啟動後的截圖:

三 編譯androidgoldfish內核
1)進入android4.0.1源碼目錄,下載goldfish內核源碼

[html] view plain
$ mkdir kernel
$ cd kernel
$ git clone http://android.googlesource.com/kernel/goldfish.git
$ cd goldfish
$ git branch -a
* (no branch)

master

remotes/origin/HEAD -> origin/master

remotes/origin/android-goldfish-2.6.29

remotes/origin/master

$ git checkout remotes/origin/android-goldfish-2.6.29

2)修改Makefile

[html] view plain
goldfish$ gedit Makefile

修改

[html] view plain
ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=



[html] view plain
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-

3)導出交叉編譯器目錄為環境變數
$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

4)編譯內核

[html] view plain
goldfish$ make goldfish_armv7_defconfig

goldfish$ make

編譯完成後,可看到類似如下的輸出:

[html] view plain
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready

5)從模擬器中啟動內核鏡像

[html] view plain
$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &

啟動模擬器後,可從Settings->System->AboutPhone中查看內核版本信息。

❼ 如何在eclipse中查看android源碼

當我們在eclipse中開發android程序的時候,往往需要看源代碼(可能是出於好奇,可能是讀源碼習慣),那麼如何查看Android源代碼呢?


比如下面這種情況



這樣就大功告成了!!!

❽ 誰有Android系統的源碼

1、通過 ubuntu 軟體中心安裝 wine;
2、通過 ubuntu 軟體中心安裝 winetricks;
3、通過 winetricks 在 shell中輸入: winetricks mfc42

1、通過 wine windows 的方式啟動代理伺服器
2、設置瀏覽器代理伺服器
3、設置shell代理伺服器:
在shell中輸入 sudo gedit /etc/bash.bashrc
在文件 /etc/bash.bashrc 中添加:如下內容
export http_proxy=http://127.0.0.1:8580/export https_proxy=http://127.0.0.1:8580/

通過shell安裝如下的組件:
1、sudo apt-get install bison g++-multilib git gperf libxml2-utils
2、新建一個存放源碼的目錄,如:mkdir ~/andorid/source
3、在源碼目錄中輸入命令:repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
其中: android-4.0.1_r1是android源碼的版本,更多的版本可以通過下面的方式查詢:http://source.android.com/source/build-numbers.html

4、修改source/.repo/manifest/default.xml 文件中的 fetch 的值為:
git://Android.git.linaro.org/

通過如下的指令來設置郵箱和用戶名
git config --global user.name "<your name>" ----修改用戶名git config --global user.email "<your email>" ----修改email

5、在source目錄下輸入指令:repo sync
便開始了代碼的下載

❾ android源碼放在什麼目錄下面

源碼一般指Java文件,src文件下的.java就是,其他布局代碼在res下的layout文件中

❿ 誰有android4.4 Email源碼分析文檔

Google提供的Android包含了原始Android的目標機代碼,主機編譯工具、模擬環境,下載的代碼包經過解壓後(這里是Android2.2的源碼包),源代碼的第一層目錄結構如下:
|-- Makefile
|-- bionic (bionic C庫)
|-- bootable (啟動引導相關代碼)
|-- build (存放系統編譯規則及generic等基礎開發包配置)

|-- cts (Android兼容性測試套件標准)
|-- dalvik (dalvik JAVA虛擬機)
|-- development (應用程序開發相關)
|-- external (android使用的一些開源的模組)
|-- frameworks (核心框架——java及C++語言)
|-- hardware (主要保護硬解適配層HAL代碼)
|-- libcore
|-- ndk
|-- device
|-- out (編譯完成後的代碼輸出與此目錄)
|-- packages (應用程序包)
|-- prebuilt (x86和arm架構下預編譯的一些資源)
|-- sdk (sdk及模擬器)
|-- system (文件系統庫、應用及組件——C語言)
`-- vendor (廠商定製代碼)

bionic 目錄

|-- libc (C庫)
| |-- arch-arm (ARM架構,包含系統調用匯編實現)
| |-- arch-x86 (x86架構,包含系統調用匯編實現)
| |-- bionic (由C實現的功能,架構無關)
| |-- docs (文檔)
| |-- include (頭文件)
| |-- inet
| |-- kernel (Linux內核中的一些頭文件)
| |-- netbsd (?netbsd系統相關,具體作用不明)
| |-- private (?一些私有的頭文件)
| |-- stdio (stdio實現)
| |-- stdlib (stdlib實現)
| |-- string (string函數實現)
| |-- tools (幾個工具)
| |-- tzcode (時區相關代碼)
| |-- unistd (unistd實現)
| `-- zoneinfo (時區信息)
|-- libdl (libdl實現,dl是動態鏈接,提供訪問動態鏈接庫的功能)
|-- libm (libm數學庫的實現,)
| |-- alpha (apaha架構)
| |-- amd64 (amd64架構)
| |-- arm (arm架構)
| |-- bsdsrc (?bsd的源碼)
| |-- i386 (i386架構)
| |-- i387 (i387架構?)
| |-- ia64 (ia64架構)
| |-- include (頭文件)
| |-- man (數學函數,後綴名為.3,一些為freeBSD的庫文件)
| |-- powerpc (powerpc架構)
| |-- sparc64 (sparc64架構)
| `-- src (源代碼)
|-- libstdc++ (libstdc++ C++實現庫)
| |-- include (頭文件)
| `-- src (源碼)
|-- libthread_db (多線程程序的調試器庫)
| `-- include (頭文件)
`-- linker (動態鏈接器)
`-- arch (支持arm和x86兩種架構)

bootable 目錄

|-- bootloader (適合各種bootloader的通用代碼)
| `-- legacy (估計不能直接使用,可以參考)
| |-- arch_armv6 (V6架構,幾個簡單的匯編文件)
| |-- arch_msm7k (高通7k處理器架構的幾個基本驅動)
| |-- include (通用頭文件和高通7k架構頭文件)
| |-- libboot (啟動庫,都寫得很簡單)
| |-- libc (一些常用的c函數)
| |-- nandwrite (nandwirte函數實現)
| `-- usbloader (usbloader實現)
|-- diskinstaller (android鏡像打包器,x86可生產iso)
`-- recovery (系統恢復相關)
|-- edify (升級腳本使用的edify腳本語言)
|-- etc (init.rc恢復腳本)
|-- minui (一個簡單的UI)
|-- minzip (一個簡單的壓縮工具)
|-- mttils (mtd工具)
|-- res (資源)
| `-- images (一些圖片)
|-- tools (工具)
| `-- ota (OTA Over The Air Updates升級工具)
`-- updater (升級器)

build目錄

|-- core (核心編譯規則)
|-- history (歷史記錄)
|-- libs
| `-- host (主機端庫,有android 「cp」功能替換)
|-- target (目標機編譯對象)
| |-- board (開發平台)
| | |-- emulator (模擬器)
| | |-- generic (通用)
| | |-- idea6410 (自己添加的)
| | `-- sim (最簡單)
| `-- proct (開發平台對應的編譯規則)
| `-- security (密鑰相關)
`-- tools (編譯中主機使用的工具及腳本)
|-- acp (Android "acp" Command)
|-- apicheck (api檢查工具)
|-- applypatch (補丁工具)
|-- apriori (預鏈接工具)
|-- atree (tree工具)
|-- bin2asm (bin轉換為asm工具)
|-- check_prereq (檢查編譯時間戳工具)
|-- dexpreopt (模擬器相關工具,具體功能不明)
|-- droiddoc (?作用不明,java語言,網上有人說和JDK5有關)
|-- fs_config (This program takes a list of files and directories)
|-- fs_get_stats (獲取文件系統狀態)
|-- iself (判斷是否ELF格式)
|-- isprelinked (判斷是否prelinked)
|-- kcm (按鍵相關)
|-- lsd (List symbol dependencies)
|-- releasetools (生成鏡像的工具及腳本)
|-- rgb2565 (rgb轉換為565)
|-- signapk (apk簽名工具)
|-- soslim (strip工具)
`-- zipalign (zip archive alignment tool)

熱點內容
shell腳本文件路徑 發布:2025-01-18 03:40:31 瀏覽:482
sql語句執行錯誤 發布:2025-01-18 03:21:49 瀏覽:650
資料庫雙引號 發布:2025-01-18 03:10:20 瀏覽:78
學java和php 發布:2025-01-18 03:01:03 瀏覽:451
怎麼開伺服器的埠 發布:2025-01-18 02:54:23 瀏覽:647
別克君越編程 發布:2025-01-18 02:32:24 瀏覽:913
ftp游戲下載網站 發布:2025-01-18 02:09:04 瀏覽:628
python調用另一個文件中的函數 發布:2025-01-18 02:03:54 瀏覽:597
mysql存儲html 發布:2025-01-18 01:57:24 瀏覽:129
雙ip伺服器對網站優化有影響嗎 發布:2025-01-18 01:56:41 瀏覽:246