最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年10月18日 17:29:03   作者:dongyi1988  
今天小編就為大家分享一篇關于Android系統(tǒng)添加自己寫的工具的文章,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

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

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

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

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

這里介紹如何自己用c或者c++編寫一個工具并且在android編譯的時候加入到系統(tǒ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  :=-llog
LOCAL_MODULE:= dytest
LOCAL_MODULE_TAGS := optional
include $(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 long
enum 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_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權限打開文件 
int open_file(const char* filename); 
//以O_RDWR | O_CREAT | O_TRUNC,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權限打開文件 
int open_file_create(const char* filename) ; 
//以O_RDONLY,S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP | S_IROTH權限打開文件 

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ī)則文件準備好了,輸入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),然后修改權限。當然你也可以用android.mk文件拷貝dytest到system/bin目錄下。

二添加android權限后門工具seustub

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

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

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

include external/seustub/seustub/Android.mk
include 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  :=-llog
LOCAL_MODULE:= seustub
LOCAL_MODULE_TAGS := optional
include $(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  :=-llog
LOCAL_MODULE:= seustubtest
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)

4.init.rc中添加啟動服務

service seustub /system/bin/seustub 
  class main 

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

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • Android自定義相機界面的實現(xiàn)代碼

    Android自定義相機界面的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了Android自定義相機界面的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • iOS中給UITableView的側滑刪除增加多個按鈕的實現(xiàn)方法

    iOS中給UITableView的側滑刪除增加多個按鈕的實現(xiàn)方法

    在項目中遇到這樣一個需求,cell的側滑刪除默認只有一個刪除按鈕, 給側滑添加多個按鈕, '刪除', '置頂', '更多'.怎么實現(xiàn)呢?下面小編給大家分享iOS中給UITableView的側滑刪除增加多個按鈕的實現(xiàn)方法,一起看看吧
    2017-02-02
  • Android實現(xiàn)水波紋擴散效果的實例代碼

    Android實現(xiàn)水波紋擴散效果的實例代碼

    這篇文章主要介紹了Android實現(xiàn)水波紋擴散效果的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Dagger2 Android依賴注入學習筆記

    Dagger2 Android依賴注入學習筆記

    這篇文章主要介紹了Dagger2 Android依賴注入學習筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Android下拉列表選項框及指示箭頭動畫

    Android下拉列表選項框及指示箭頭動畫

    這篇文章主要為大家詳細介紹了Android下拉列表選項框,及指示箭頭動畫的制作代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android反編譯程序整理詳解

    Android反編譯程序整理詳解

    很多做安卓開發(fā)的朋友都在尋找好的反編譯軟件和方法,小編給大家整理的很多目前流行的Android反編譯程序,希望能夠給你提供參考。
    2017-11-11
  • Android實現(xiàn)懸浮窗體效果

    Android實現(xiàn)懸浮窗體效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)懸浮窗體效果,顯示懸浮窗口,窗口可以拖動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android下拉刷新框架實現(xiàn)代碼實例

    Android下拉刷新框架實現(xiàn)代碼實例

    這篇文章主要介紹了Android下拉刷新框架實現(xiàn)代碼實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • android?微信搶紅包工具AccessibilityService實現(xiàn)詳解

    android?微信搶紅包工具AccessibilityService實現(xiàn)詳解

    這篇文章主要為大家介紹了android?微信搶紅包工具AccessibilityService實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Flutter移動端進行多渠道打包發(fā)布的全過程

    Flutter移動端進行多渠道打包發(fā)布的全過程

    在使用flutter開發(fā)的過程中,需要根據(jù)不同的環(huán)境,不同的包名來打包,下面這篇文章主要給大家介紹了關于Flutter移動端進行多渠道打包發(fā)布的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06

最新評論

丹棱县| 徐闻县| 突泉县| 宁波市| 新晃| 磐石市| 墨江| 紫云| 敖汉旗| 古田县| 蓬莱市| 元谋县| 得荣县| 博爱县| 武威市| 丰城市| 鲜城| 屏山县| 洞口县| 治多县| 万安县| 常熟市| 阿坝县| 香港 | 古丈县| 都昌县| 浪卡子县| 宜城市| 金秀| 镇雄县| 英吉沙县| 武乡县| 吉林市| 通辽市| 房产| 永和县| 宜君县| 麻江县| 台中市| 廊坊市| 乌苏市|