手机助手(一)

引入adb工程

注:这部分可以参考Windows下adb编译详解

接上篇,引用上篇中的工程,导入adb-source.zip中的文件并对整个工程文件目录做了小调整,主要是将代码文件分类存放。在工程中添加现有项目,将adb源码中的cpp文件添加到工程中(仅添加cpp后缀的文件,.c文件这里用不到可以直接删除)
1.创建Source目录(ProMonkey\AdbDll\Source)
2.创建Source\include目录(ProMonkey\AdbDll\Source\include)
3.创建Source\adb目录(ProMonkey\AdbDll\Source\adb)
4.将adb-source\lib文件夹拷贝到ProMonkey\AdbDll\Source\adb
5.adb-source\include文件夹拷贝到ProMonkey\AdbDll\Source\adb
6.将adb_interface.cpp、adb_interface.def和dllmain.cpp移动到Source目录
7.添加现有项到工程(源文件添加了一个adb过滤器,adb的代码放在里面)
这里写图片描述
配置工程项目属性
配置属性>常规>字符集 选择使用多字节字符集
这里写图片描述
配置属性>调试>命令 选择C#生成的exe文件(这里是为了调试方便,点击调试时自动启动exe,exe加载的dll会优先使用本工程的(同名情况下)),可以直接在dll代码文件中直接添加断点来调试
这里写图片描述
配置属性>VC++目录>包含目录 添加创建的两个include的目录
这里写图片描述
配置属性>C/C++>预处理器 添加ADB_HOST;HAVE_WIN32_IPC;HAVE_WIN32_PROC;HAVE_WINSOCK;
这里写图片描述
配置属性>链接器>常规>附加库目录 添加lib所在的目录(Source\adb\lib)
这里写图片描述
配置属性>链接器>输入 附加依赖项添加lib文件(ws2_32.lib;zdll.lib;libeay32.lib;ssleay32.lib;AdbWinApi.lib;),模块定义文件指向def移动后的位置(开头整理文件时移动了这个文件)
这里写图片描述
重新生成解决方案>调试
这里写图片描述
what the fuck!
独立编译都正常,不加adb的代码也正常,也没调用adb的函数,仅仅是添加adb文件进行编译罢了,就不行了。既然dll都加载不了就没法用C#看了,创建一个win32控制台应用程序,加载dll看看,代码如下:

#include <windows.h>
#include <stdio.h>
#include <process.h>

int main(int argc, char* argv[])
{
    HMODULE hdll=LoadLibrary(L"E:\\workspace\\Visual Studio\\ProMonkey\\Debug\\AdbDll.dll");  //加载dll
    if(hdll!=NULL)
    {
        FARPROC proc=GetProcAddress(hdll,"helloWorld");
        proc();
    }

    system("pause");
    return 0;
}

提示一下子就人性化了
这里写图片描述
立刻百度下载一个zlib1.dll到生成目录,再次点运行
这里写图片描述
重新运行adb,调用成功了。
这里写图片描述
至此基础的环境已经搭建完成了,接下来就是封装adb函数到C#和画界面了。

后记:今天试了一下,adb的源码是1.0.31的,很难刷出设备,项目无期限搁置,等待弄一个高版本的adb源码再继续

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页