首页
社区
课程
招聘
[原创]ADB编译全攻略
发表于: 2014-2-18 09:20 32747

[原创]ADB编译全攻略

2014-2-18 09:20
32747


整理的ADB项目: ADB.zip

介绍
ADB是android提供的一个工具,可以通过这个工具对android手机进行操作。

本来想把我编译ADB的整个过程,包括其中遇到了什么问题全部讲清楚,这些问题我都记了下来,但是想了想这个过程实在是又臭又长,我就把我整理好的ADB项目放出来,然后说说如何编译这个项目。

环境
操作系统:Window 7 64位
编译器:VS2008
必要的库:WDK、perl、openssl、zlib。这些库全部安装或解压到根目录下(嘛是根目录?如:c:\)。
这些库文件我已经在这里共享:
25eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8S2L8W2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7$3S2S2M7X3g2Q4x3V1k6Z5L8$3#2W2i4K6y4r3N6h3E0Q4x3@1b7J5x3K6l9J5x3K6V1#2y4U0x3J5i4K6t1K6j5$3q4@1k6h3N6G2M7Y4W2Q4x3V1k6@1P5i4m8W2i4K6y4p5x3l9`.`.

安装
VS2008怎么安装就不说了。

WDK安装
  WDK是开发windows驱动所用到的开发包。
从我共享的连接中,把 GRMWDK_EN_7600_1.ISO 这个文件下载下来,这是一个映像文件,使用虚拟光驱装载以后,运行

点击OK以后,会弹出一个选择路径的窗口,选择完路径后再次点击OK即可。我建议默认路径。

Perl安装
  安装openssl之前,需要安装Perl,因为需要Perl编译openssl中的代码,从我共享的连接中,把 ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi 文件下载下来安装。
  安装完以后查看是否有环境变量”X:\Perl\site\bin;X:\Perl\bin;”,如果没有,则手动设置,然后在命令行中测试”perl -v”,如果出现类似下图的信息,就说明Perl安装成功,并且环境变量设置正确。

如果出现“'perl' 不是内部或外部命令,也不是可运行的程序或批处理文件。”这种信息,首先确认环境变量是否设置正确,如果设置正确,那么重启电脑,一般来说问题就解决了。

openssl安装
  从我共享的连接中,把Win32OpenSSL-1_0_1f.exe 下载下来安装,安装的时候可能会提示一个警告框,不要管它,点击确定继续安装。

有一个注意的地方,这个选项选择第二个,我要用openssl这个库编译程序,而不是使用openssl。


zlib编译
编译步骤。注意:编译zlib这期间不要更换命令行窗口,所有的命令都在一个命令行窗口中输入。

  • 在命令行下进入”X:\Microsoft Visual Studio 9.0\VC\bin”目录下(9.0代表VS2008),运行”vcvars32.bat”。
  • 根据”X:\zlib-1.2.8\contrib\masmx86\readme.txt”文件中命令,对zlib进行编译。

  • cd到zlib目录下,如:cd X:\zlib-1.2.8,然后写入上图中的命令,对zlib进行编译。编译成功后在zlib目录下将会产生:zlib.lib、zdll.lib、zlib1.dll三个文件。


  • 编译ADB
      下载我整理好的ADB项目,用VS2008打开其中的 ADB.sln 文件。
    打开 工具->选项->项目和解决方案->VC++目录。

    选择右侧“显示一下内如的目录(S)”下的下拉列表,选择“包含文件”,在最后一行添加如下路径(一定要在最后一行开始添加):

  • X:\WinDDK\7600.16385.1\inc
  • X:\WinDDK\7600.16385.1\inc\api
  • X:\WinDDK\7600.16385.1\inc\ddk
  • X:\OpenSSL-Win32\include
  • X:\zlib-1.2.8

  • 点击下拉列表,选择“库文件”,在最后一行添加如下路径(一定要在最后一行开始添加):

  • X:\zlib-1.2.8
  • X:\WinDDK\7600.16385.1\lib

  • 右键ADBControl项目,属性->配置属性->链接器->常规->附加库目录,添加” ;X:\OpenSSL-Win32\lib\VC\static”,debug和release都要这样配置。


    编译顺序:
    先编译AdbWinApi项目,再编译AdbWinUsbApi项目,然后再编译ADBControl项目。

    可能出现的问题:
    当运行ADBControl项目的时候会出现一闪而过的情况,右键项目->属性->调试,在命令参数中输入shell,即可进入shell命令模式(首先要保证手机插在电脑上或模拟器已打开,否则ADB连接不到设备也会造成闪退情况)。进入shell命令模式后,可以输入linux命令”ls”测试一下,这个命令可以查看目录。


    [培训]科锐逆向工程师培训第53期2025年7月8日开班!

    上传的附件:
    收藏
    免费 0
    支持
    分享
    最新回复 (21)
    雪    币: 1839
    活跃值: (295)
    能力值: ( LV9,RANK:370 )
    在线值:
    发帖
    回帖
    粉丝
    2
    mark
    2014-2-18 09:25
    0
    雪    币: 427
    活跃值: (64)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    3
    收藏 很详细
    2014-2-18 09:26
    0
    雪    币: 2673
    活跃值: (3560)
    能力值: ( LV13,RANK:1760 )
    在线值:
    发帖
    回帖
    粉丝
    4
    Mark...
    2014-2-18 09:44
    0
    雪    币: 27
    活跃值: (354)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    很详细,感谢楼主分享经验
    2014-2-18 12:00
    0
    雪    币: 175
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    6
    不错,介绍的很详细,不过我都是直接在linux android源码下编译adb
    2014-2-20 10:23
    0
    雪    币: 265
    活跃值: (231)
    能力值: ( LV10,RANK:170 )
    在线值:
    发帖
    回帖
    粉丝
    7
    楼主好人,我最近正好在搞adb,编译起来各种蛋疼,这下好了
    2014-2-20 10:47
    0
    雪    币: 32
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    8
    mark,谢谢不歪大大这么详细的教程
    2014-2-20 11:04
    0
    雪    币: 17
    活跃值: (15)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    9
    非常感谢楼主,敬佩的泪流不止,一塌糊涂。
    2014-5-4 18:48
    0
    雪    币: 200
    活跃值: (37)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    10
    挺仔细的。正好要研究这个,mark一下。
    2014-7-29 12:56
    0
    雪    币: 7
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    11
    mark下,有用
    2014-8-5 13:39
    0
    雪    币: 30
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    12
    需要做一个兼容各种开了调试的adb程序,解决offline的情况,本人技术渣,自己啃的同时希望能得到歪哥的指点,联系方式QQ820205897
    2014-11-6 14:54
    0
    雪    币: 30
    活跃值: (16)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    13
    做个标记先,有机会尝试下
    2014-11-11 09:04
    0
    雪    币: 14
    活跃值: (70)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    14
    marK收藏
    2014-11-11 09:45
    0
    雪    币: 76
    活跃值: (226)
    能力值: ( LV2,RANK:15 )
    在线值:
    发帖
    回帖
    粉丝
    15
    mark下 感谢楼主分享经验
    2014-11-11 09:51
    0
    雪    币: 215
    活跃值: (51)
    能力值: ( LV3,RANK:20 )
    在线值:
    发帖
    回帖
    粉丝
    16
    不错 支持楼主!~
    2014-11-11 14:49
    0
    雪    币: 0
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    17
    好强大,觉得非常牛,正好调查这个问题
    2015-4-24 09:47
    0
    雪    币: 967
    活跃值: (1138)
    能力值: ( LV6,RANK:90 )
    在线值:
    发帖
    回帖
    粉丝
    18
    哈哈 你没有领会这个的用途
    这个的最大最用就是 搞木马啊
    2015-4-24 09:53
    0
    雪    币: 967
    活跃值: (1138)
    能力值: ( LV6,RANK:90 )
    在线值:
    发帖
    回帖
    粉丝
    19
    你一插入手机 人家就给你种个马 上去 好玩吧
    2015-4-24 09:54
    0
    雪    币: 14829
    活跃值: (158)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    20
    学习。。
    2015-4-24 10:27
    0
    雪    币: 94
    活跃值: (3097)
    能力值: ( LV3,RANK:30 )
    在线值:
    发帖
    回帖
    粉丝
    21
    mark一记,好东西
    2015-5-20 16:31
    0
    雪    币: 39
    活跃值: (198)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    22
    按你说的一步步来,编译AdbWinApi项目就弹很多错误,唯一不同的是我是用vs2010,弹出错误,其中一项是:
    1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2065: “_In_opt_z_”: 未声明的标识符
    1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“)”(在“const”的前面)
    1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): warning C4229: 使用了记时错误: 忽略数据上的修饰符
    1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2182: “_invalid_parameter”: 非法使用“void”类型
    1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2059: 语法错误:“)”
    1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(550): error C2065: “_In_opt_z_”: 未声明的标识符

    等等错误

    好了,错误已经解决了,不好意思,多有叨扰
    2015-7-29 11:10
    0
    游客
    登录 | 注册 方可回帖
    返回