日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发概要记录

發布時間:2025/4/16 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发概要记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1..o文件、 .ko和.so文件的路徑

\kernel\out\mediatek---------------.o文件

.c/.cpp文件編譯生成的目標文件

\out\target\product\hsimobile77_ics2\system\lib\modules----.ko文件

?

.ko是整個模塊生成的驅動文件(內核模塊),其中可以包括了.so,如果編譯進 kernel??只可以看到.o?不會生成ko

?

\out\target\product\hsimobile77_ics2\system\lib------------.so文件

?

?.so?是部分文件編譯成庫文件,芯片原廠不希望你看到源碼,可以已這樣的方式提供,相當于WINCE下的.dll文件(動態鏈接庫文件)

?

?

2.用Ctrl+C停止正在進行的編譯操作

?

3.如何快速編譯單個驅動和調試?

?

4.adb logcat > logo.txt可以抓取調試信息

adb shell

cat /proc/kmsg也可以抓調試信息。

5./dev下通過ls -l可以查看設備文件更多詳細的信息,比如主設備號和次設備號。

?

6.adb shell setprop service.adb.root 1 設置權限。

7.linux下fastboot使用

adb reboot bootloader

fastboot flash boot \out\target\product\msm8909\boot.img

fastboot reboot

?

8.svn一些常用的命令

svn status查看有更新的文件

svn log查看更新記錄

?

?

svn co svn://192.168.XX.XXX/源代碼目錄

獲取指定版本

svn checkout?http://siphon.googlecode.com/svn/trunk/siphon -r r791

?

svn up獲取新版本代碼

svn commit -m "解決DC無法充電及顯示問題"

?

svn status可知道修改的文件、和增加的文件。

svn add file提交增加的文件

?

提交某些指定的文件

svn commit kernel/drivers/input/keyboard/A.c kernel/drivers/input/keyboard/A.h -m "1.優化按鍵驅動 2提交按鍵代碼"

?

刪除文件

svn delete?path -m?“delete test fle“

?

修改文件名svn move xxx yyy

將xxx文件重命名為yyy,類似于Linux的mv命令。

?

svn info獲取當前版本信息

?

svn?update?-r10030-------更新到指定版本,也可以用于回退到哪個版本做測試驗證,這只是回退到指定版本,但服務器上還是最新版本。

如果要恢復服務器代碼到指定版本,用svn merge -r 29:28 .//回退29版本到28版本,.表示當前路徑,回退后需要svn commit提交。

r后面緊跟版本號

svn add --no-ignore *------我們提交的時候,svn可能識別不到有些類型文件,比如so,增加這個可以提交

遞歸刪除目錄下.svn文件

find和xargs結合
? find . -name "*.svn" | xargs rm -rf

?

svn創建補丁

(1)創建當前目錄下補丁svn diff -r 39:390 > 39_390.patch

(2) 創建指定目錄補丁svn diff minui -r 39:390 > 39_3902.patch

(3)創建指定文件補丁:svn diff graphics_fbdev.cpp -r 39:390 > 39_3902.patch

svn創建命令http://embed.21ic.com/software/linuxos/201403/31527.html

svn add之后撤銷命令svn revert --recursive example_folder。

9.Android 性能分析工具dumpsys的使用

?Android提供的dumpsys工具可以用于查看感興趣的系統服務信息與狀態,手機連接電腦后可以直接命令行執行adb shell dumpsys 查看所有支持的Service但是這樣輸出的太多,可以通過dumpsys | grep "DUMP OF SERVICE" 僅顯示主要的Service的信息

?

也可以單獨列出某個系統服務的,比如battery,命令:dumpsys battery,如果想知道具體可以做哪些操作可:dumpsys battery -h來查看,比如我們想設置電量百分比,可以

dumpsys battery set level 5。

?

10. /sys/kernel/debug/msm_otg

調試路徑

11.編譯和替換framework部分

比如修改\frameworks\base\services\core\java\com\android\server\BatterySevice.java

編譯命令,編譯命令mmm frameworks/base/services/

?

user版本。Jar中的部分被編譯程序優化成了odex文件和jar文件,請看log最后一行。

但是user你們應該沒有權限push進去的。

?

如果你們要調試,請編譯eng版本的jar,這樣jar應該就是完整的2m大小了。

?

?

?

adb remount

adb push services.jar /system/framework/

adb reboot

?

11.手動設置電池容量
echo 50 > sys/modules/qpnp_bms/parameters/bms_fake_battery

?

13.linux主要目錄的一樣

/proc/devices文件可以獲知系統中注冊的設備,第1列為主設備號,第2列為從設備名

?

14.快遞定位問題

(1) 通過logo定位具體的地方

看日志,在差不多的地方加個dump_stack() 就很容易看出來調用關系

15.系統屬性

(1) msm8909系統屬性文件

device/qcom/msm8909/system.prop

?

16.測試模式

?

從2016.0115日開始系統,默認關閉測試模式,相對之前默認打開測試默認,有以下變化:

(1) 接入USB線,需要選擇才能打開USB debug模式

(2) USB模式默認為MTP,之前為charging模式

(3) 開機后,我們刷機軟件QFIL識別不到端口(但關機狀態下同時按下兩個側按鍵+power按鍵,還是可以正常刷機)

?

?

17.vmlinux

位于\out\target\product\msm8909\obj\KERNEL_OBJ文件夾下,

vmlinux是未壓縮的內核,vmlinux 是ELF文件,即編譯出來的最原始的文件。用于kernel-debug,產生system.map符號表,不能用于直接加載,不可以作為啟動內核。只是啟動過程中的中間媒體
vmlinuz是可引導的、壓縮的內核。“vm”代表“Virtual Memory”。Linux 支持虛擬內存,不像老的操作系統比如DOS有640KB內存的限制
以是我在CSDN中看到的,可以使用反匯編查看這個文件:
arm-eabi-objdump -d kernel/vmlinux > 1.S

18. 關機充電部分編譯

比如修改system\core\healthd文件夾的代碼,用make bootimage編譯即可,此文件夾生成的healthd在out\target\product\msm8909\symbols\sbin文件夾下

?

19.adb shell top看看資源占用情況

?adb?shell?top看看資源占用情況

?adb?shell?top看看資源占用情況

20.ROM助手可編輯img文件

?

21. 設備樹dt.img中的entry數量由dts和dtsi文件的"compatible"條目數量決定

點擊打開鏈接

?

22.編譯命令

- m: ? ? ? Makes from the top of the tree.
- mm: ? ? ?Builds all of the modules in the current directory, but not their dependencies.
- mmm: ? ? Builds all of the modules in the supplied directories, but not their dependencies.
? ? ? ? ? ?To limit the modules being built use the syntax: mmm dir/:target1,target2.
- mma: ? ? Builds all of the modules in the current directory, and their dependencies.
- mmma: ? ?Builds all of the modules in the supplied directories, and their dependencies.

?

23.croot命令可直接回到代碼根目錄

?

24.system\core\init打印調試信息

比如init.c下main():

KLOG_ERROR(LOG_TAG,"main() test --->error\n");//串口打印出來
KLOG_DEBUG(LOG_TAG,"main() test --->DEBUG\n");//串口打印不出來

編譯boot.img即可

?

26./proc/cpuinfo、cmdline對應硬件信息和內核啟動參數

27.獲取屬性值,比如getprop ro.build.product

28.系統屬性文件,在\bionic\libc\include\sys\_system_properties.h定義

#define PROP_PATH_RAMDISK_DEFAULT ?"/default.prop"
#define PROP_PATH_SYSTEM_BUILD ? ? "/system/build.prop"
#define PROP_PATH_SYSTEM_DEFAULT ? "/system/default.prop"
#define PROP_PATH_VENDOR_BUILD ? ? "/vendor/build.prop"
#define PROP_PATH_LOCAL_OVERRIDE ? "/data/local.prop"
#define PROP_PATH_FACTORY ? ? ? ? ?"/factory/factory.prop"

?

29.查找代碼


技巧:
? 在調試或理解系統的工作原理的時候,我們經常要去找服務程序對應的源碼。
? 尋找c或c++程序的源碼文件:
? 例如:以尋找init程序對應的源碼為例。
? ?find ./ -name Android.mk -exec grep -l init {} \;
? 注:通過find命令查找所有的Android.mk, 通過grep從中查找程序字符串,得到其路徑,然后去路徑下找源碼即可,這么做的原因是,c或c++代碼都是通過Android.mk來指導編譯的。
? ?尋找java源碼文件:
? ?java源碼的特點是和類名一致,所以如果我們知道一個類名,找其java源碼就直接加上java后綴即可。
? 例如:尋找com.android.internal.os.ZygoteInit類的代碼。
? ?find ./ -name ZygoteInit.java

?

30.system\core\rootdir\init.rc

需要注意的是,各個trigger的加載順序,先加入的先執行,后加入的后執行,要特別注意,尤其是要修改init.rc文件的時候,不了解這個容易因為前后依賴關系造成問題。

31.Android屬性服務

Android為了存儲全局系統設置信息,提供了一個系統屬性共享內存區,這個共享內存區的內容是一些鍵值對的列表,對外提供get和set方法讀寫屬性。系統啟動時由init初始化并開啟屬性服務。

?

32.system/build.prop

build.prop和上節說得根文件系統中的default.prop文件格式一樣,都稱為屬性配置文件。它們都定義了一些屬性值,代碼可以讀取或者修改這些屬性值。屬性值有一些命名規范:
  ro開頭的表示只讀屬性,即這些屬性的值代碼是無法修改的。
  persist開頭的表示這些屬性值會保存在文件中,這樣重新啟動之后這些值還保留。
  其它的屬性一般以所屬的類別開頭,這些屬性是可讀可寫的,但是對它們的修改重啟之后不會保留。

?

33.MPSS和APSS

APSS指應用子系統,Application subsystem

MPSS是指modem應用子系統,Modem Application susbsystem

?

34.策略文件,比如init.te,te是指TypeEnforcement Access Control(簡稱TEAC,一般用TE表示)

35?frameworks\base\packages\SettingsProvider\res\values\defaults.xml

有很多開機默認的設置,比如開機不鎖屏<bool name="def_lockscreen_disabled">false</bool>

?

36.framework層的JNI源代碼:frameworks\base\core\jni

frameworks\base\services\core\jni

?

37.編譯so并快速打包到system.img中

用mmm命令編譯,用make snod打包到system.img中。

?

38.Android studio官網:點擊打開鏈接

39. init.rc

mkdir /data/misc 01771 system misc

命令 ?文件路徑 ?權限 所有者 所有組

?

40. adb shell service list查看系統中注冊了哪些service

41.?adb shell
getprop可以查看一系列系統屬性值
getprop |grep xxx.xxx.xx 過濾查看特定系統屬性值

42.?默認預置apk到system/app/目錄(普通系統apk,不可卸載),預置apk到system/priv-app/目錄(系統核心apk,不可卸載),app對應的Android.mk下增加LOCAL_PRIVILEGED_MODULE := true,表示生成的apk放在system/priv-app/目錄下。

?

43. 編譯服務器編譯不同版本android的方法,比如android5.1用openjdk-7-jdk,android7.1用openjdk-8-jdk,可以用不同的用戶安裝不同版本來編譯,或是同一個用戶手動切換Java版本:?sudo update-alternatives --config java ? ? ? ?sudo update-alternatives --config javac

44.監測內存及CPU情況,可用安兔兔測評軟件

45.dumpsys telephony.registry可獲取telephony狀態,可以看網絡注冊狀態,數據鏈接狀態,是否漫游,信號強度,等等,參數我就不一一解毒了,跟android系統版本也有關系

46 jdk版本選擇

比如ubuntu系統中安裝了openjdk-7-jdk和openjdk-8-jdk,通過下面的命令可以切換

sudo update-alternatives --config java

sudo update-alternatives --config javac

?

47updatezip升級設置目錄和文件權限

android7.1set_metadata_recursive和set_metadata命令,主要是修改文件或目錄權限和屬組等信息
比如:set_metadata("/system/bin/login","uid", 0, "gid", 0, "mode", 0755,"capabilities", 0x0, "selabel", "u:object_r:system_file:s0");---
第1個0表示ROOT,上帝用戶: ROOT, 他的UID= 0; 上帝用戶永遠屬于任何UID


Uid和gid的值system\core\include\private\android_filesystem_config.h定義,比如:

?

48.?adb的adb shell pm list packages命令用來查看當前設備app應用包

49.android8.1設備數中可設置要掛載的分區

kernel\msm-3.18\arch\arm\boot\dts\qcom\tps950\sim8950-msm8953.dtsi

50.通過AT命令撥打電話:echo -e "ATD123456789;\r" > /dev/smd11,撥打123456789的號碼,smd11這里是modem串口

51.android手動修改density(dpi)的方法

adb shell getprop ro.sf.lcd_density

52. 查看版本信息dumpsys package com.alipay.zoloz.smile | grep version

53?通過adb命令獲取apk的安裝路徑:adb shell pm path +apk包名

54. 通過包名查看正在運行的進程ID(PID)

adb shell pidof 包名

總結

以上是生活随笔為你收集整理的Android开发概要记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本久道久久综合无码中文 | 成人看片网站 | 男人撒尿视频xvideos | 高跟91娇喘 | 中文字幕在线视频观看 | 日韩精美视频 | 欧美精品首页 | 九月婷婷色 | 日b在线观看| 琪琪在线视频 | 国产探花精品在线 | 欧美日韩高清在线 | 在线高清免费观看 | 97国产精品视频 | 清冷男神被c的合不拢腿男男 | 韩国日本在线观看 | 欧美一级免费在线 | 中文字幕一区二区三区av | 综合网亚洲 | av一区二区三区在线 | 日韩一级二级视频 | 99riav国产| 国产三级三级三级 | 日本伦理一区二区三区 | 禁断介护av| 蘑菇av| 无码播放一区二区三区 | 久久成人精品一区二区 | 日本无遮羞调教打屁股网站 | 又色又爽又黄无遮挡的免费视频 | 欧美aⅴ在线| 538国产精品视频一区二区 | 亚洲午夜精品一区二区三区 | 在线高清av | 欧美大片网站 | 狠狠狠狠狠狠狠干 | 久久波多野 | 狠狠插视频 | 四虎免费网址 | 亚洲综合日韩 | 久久九九免费视频 | 夜夜操夜夜爱 | 成人一区二区在线 | 成人在线不卡视频 | 成人网址在线观看 | 婷婷在线视频观看 | 国产伦精品一区二区三区四区免费 | 国产刺激视频 | 亚洲国产一区二区三区a毛片 | 欧美丰满老熟妇xxxxx性 | 欧美精品1区 | 国产97色在线 | 日韩 | 人人做人人爽人人爱 | 一级片自拍 | 精品亚洲一区二区三区四区五区高 | 天堂av2021 | 久久精品国产免费 | 香蕉视频在线观看免费 | 精品国产乱码一区二区 | 99碰碰 | 亚洲综合情 | 松本一香在线播放 | 最色成人网 | 国产视频一区二区 | 九色福利视频 | a级免费毛片 | 午夜视频 | 欧美 日韩 国产 成人 在线 | 青娱网电信一区电信二区电信三区 | 亚洲com | 无遮挡又爽又刺激的视频 | 国产乱妇无码大片在线观看 | 一区二区三区四区国产 | 日韩视频一 | 欧美成人777 | 国产成人精品无码播放 | 亚洲成人免费影院 | 欧美精品免费一区二区 | 91福利网站 | 国色综合 | 国产天堂| 中文精品久久久久人妻不卡 | 波多野结衣加勒比 | 在线日韩三级 | 日本黄xxxxxxxxx100 | 久久亚洲AV成人无码国产野外 | 亚洲h网站| 久久精品影视 | 不卡一区二区在线观看 | 好吊妞无缓冲视频观看 | 公侵犯人妻中文字慕一区二区 | 夜夜操夜夜摸 | 精品国产区一区二 | 欧美乱轮视频 | 亚洲图片偷拍区 | 久久久精品日韩 | 成人av在线播放网站 | 欧美日韩激情视频 | 大黄一级片 |