国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android系統(tǒng)添加自己寫的工具

2019-10-21 21:37:25
字體:
供稿:網(wǎng)友

在android系統(tǒng)的源碼有很多工具的源碼。存放路徑如下

  • android/system 底層文件系統(tǒng)庫、應(yīng)用及組件,linux自帶的
  • android/external android 使用的一些開源的模組
  • android/frameworks/base/cmds 一些android重要命令:am、app_proce等

實際上這些工具都是小應(yīng)用。調(diào)試串口接電腦,開啟控制臺可以使用這些工具。如果USB連電腦,用adb調(diào)試工具,輸入adb shell指令進入控制臺 。

  • dumpsys:能dump系統(tǒng)服務(wù)的各種狀態(tài)。
  • dumpstatus:android的相關(guān)信息,內(nèi)核,進程,相關(guān)信息的主要實現(xiàn)地方
  • top:CPU使用
  • pm:包管理(package manager)
  • am:活動管理activity manager
  • tinyalsa:音頻調(diào)試,有tinycap、tinymix、tinyplay
  • settings:更改SettingsProvider數(shù)據(jù)庫的值
  • logcat:系統(tǒng)日志
  • monkey:測試工具
  • svc:控制電源、數(shù)據(jù)流量、wifi、usb、以太網(wǎng)的開關(guān)狀態(tài)
  • wm:查看設(shè)置屏幕的分辨率、密度
  • screencap:截屏
  • screenrecord:錄屏

目標(biāo)設(shè)備的system/bin和system/xbin有android添加的一些工具和linux自帶的工具,這些工具可能是java、c、c++或shell指令寫的。上面提到的幾個工具都挺好玩的,具體使用方法可以輸入?yún)?shù)--help查看幫助或者網(wǎng)上搜索。

這里介紹如何自己用c或者c++編寫一個工具并且在android編譯的時候加入到系統(tǒng)當(dāng)中

一 編寫一個測試ioctl接口的小工具

創(chuàng)建文件夾frameworks/base/cmds/dytest

1.創(chuàng)建Android.mk文件

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= / test.c /LOCAL_SHARED_LIBRARIES := /  libcutils /  liblog /LOCAL_LDLIBS  :=-llogLOCAL_MODULE:= dytestLOCAL_MODULE_TAGS := optionalinclude $(BUILD_EXECUTABLE)

2.創(chuàng)建test.h

#include <linux/types.h> #include <linux/stddef.h>#include <asm/ioctl.h>#ifndef IO_BASIC_H_ #define IO_BASIC_H_ #define RD_UNIT_SIZE 1024#define WR_UNIT_SIZE 1024#define RDWR_UNIT_SIZE 1024#define S_IRWXU 00700#define S_IRUSR 00400#define S_IWUSR 00200#define S_IXUSR 00100#define S_IRWXG 00070#define S_IRGRP 00040#define S_IWGRP 00020#define S_IXGRP 00010#define S_IRWXO 00007#define S_IROTH 00004#define S_IWOTH 00002#define S_IXOTH 00001#define SI4754_CMDMAGIC 0X81#define usrdatatype unsigned longenum FM_CMD_TYPE{ FM_START = _IOWR(SI4754_CMDMAGIC, 1, unsigned long),  FM_STOP, FM_SEEKUP,  FM_SEEKDOWN, FM_SETFREQ, FM_SETVOL, FM_GETFREQ, FM_GETVOL, FM_TEST };/*  ============================================================================  Name    : IO_Operation.c  Author   : DongYi  Version   :  ============================================================================  */ //以O(shè)_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權(quán)限打開文件 int open_file(const char* filename); //以O(shè)_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權(quán)限打開文件 int open_file_create(const char* filename) ; //以O(shè)_RDONLY,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權(quán)限打開文件 

3.創(chuàng)建test.c

#include <stdio.h> #include <stdlib.h> #include <asm/io.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <linux/delay.h>#include "test.h" unsigned long qndData;const char* filename = "/dev/fmsi4754";  int open_file(const char* filename) {   return open_file_create(filename); } int open_file_create(const char* filename) {   int fd; //文件描述符   fd = open(filename, O_RDWR | O_CREAT | O_TRUNC,       S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH);   if (fd == -1) {     printf("/nopen_file:文件操作失敗");     return -1; }   printf("/nopen_file:文件操作成功");   return fd; } int main(void) {  int fp; int ret; char buf[1024]={0}; long len; puts("~~~~~~~~~~test.c測試程序 Linux I/O操作~~~~~~~~~~~~/n/n"); /* prints Linux I/O操作 */ // for(len=64000;len>0;len--); sleep(1); fp = open_file_create(filename); if (fp < 0) {     printf("open_file:faild!/n");     return -1;   }else{   printf("open_file:success!/n");  } qndData=0x12345678; do{ ret=ioctl(fp, FM_START, &qndData); printf("ioctl_file:qndData:0x%x/n ",qndData);  if (ret < 0) {   printf("ioctl_file:faild!/n");    close(fp);  return -1;  }else{  printf("ioctl_file:success/n"); } }while(qndData==0x12345678);   //開機  return 1; } 

代碼和編譯規(guī)則文件準(zhǔn)備好了,輸入mmm frameworks/base/cmds/dytest/編譯。燒錄就可使用。
這個工具還可以使用arm-linux-androideabi-gcc工具編譯

arm-linux-androideabi-gcc -o dytest --sysroot=/home/android/SambShare/dyT3-v1.0/android/prebuilts/ndk/current/platforms/android-18/arch-arm/ test.c

用這個方式編譯的話就要把dytest工具push到android系統(tǒng),然后修改權(quán)限。當(dāng)然你也可以用android.mk文件拷貝dytest到system/bin目錄下。

二添加android權(quán)限后門工具seustub

這個工具是在網(wǎng)上下載的,不方便公布代碼,實際使用socket實現(xiàn)在控制臺輸入指令。

獲取seustub壓縮包后解壓seustub放置在external/文件夾

1.external/seustub/下創(chuàng)建Android.mk

include external/seustub/seustub/Android.mkinclude external/seustub/seustubtest/Android.mk

2.創(chuàng)建external/seustub/seustub/Android.mk

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= / seustub.cpp / util.cpp /LOCAL_SHARED_LIBRARIES := /  libcutils /  liblog /LOCAL_LDLIBS  :=-llogLOCAL_MODULE:= seustubLOCAL_MODULE_TAGS := optionalinclude $(BUILD_EXECUTABLE)

3.創(chuàng)建external/seustub/seustubtest/Android.mk

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= / seustubtest.cpp / ../seustub/util.cpp /LOCAL_SHARED_LIBRARIES := /  libcutils /  liblog /LOCAL_LDLIBS  :=-llogLOCAL_MODULE:= seustubtestLOCAL_MODULE_TAGS := optionalinclude $(BUILD_EXECUTABLE)

4.init.rc中添加啟動服務(wù)

service seustub /system/bin/seustub   class main 

最后輸入mmm android/external/seustub編譯

使用方法是seustubtest +指令+參數(shù),例seustubtest chmod 777 /dev/si4754

公司的JAVA應(yīng)用需要臨時的root權(quán)限,還需要獲取返回值判斷指令的成功。因此刪除seustubtest部分,為seustub添加了供上層調(diào)用的JNI接口,并且指令的返回結(jié)果輸出到文件中。不做詳細(xì)介紹。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 米易县| 石棉县| 炎陵县| 马尔康县| 怀宁县| 梅河口市| 五大连池市| 乌拉特中旗| 昭觉县| 洪泽县| 丹东市| 渝中区| 江西省| 安陆市| 衡南县| 简阳市| 来宾市| 革吉县| 台州市| 任丘市| 荆州市| 肃北| 昭觉县| 遵义县| 福建省| 台湾省| 东台市| 南京市| 东乡族自治县| 中江县| 遂昌县| 石河子市| 图木舒克市| 广汉市| 柳林县| 团风县| 东丽区| 徐水县| 额尔古纳市| 巴彦淖尔市| 长宁区|