Giter Club home page Giter Club logo

dlfcn_compat's Introduction

Thanks

Android N的实现来自 https://github.com/avs333/Nougat_dlfunctions

做了一点优化处理

  • 支持除arm之外的CPU架构以支持模拟器,x86,x86_64经过验证没问题,mips和mips64可编译但没经过验证。
  • 支持传递文件名而非绝对路径
  • 不需要进行版本特判,统一使用compat函数,内部进行逻辑分发

技术原理

见美团的《Android远程调试的探索与实现》相关文章中"符号化"和"突破7.0动态链接的限制"两部分

Android远程调试的探索与实现

使用方式

引入cmake

set(dlfcn_compat_root_dir /path/to/dlfcn)
add_subdirectory(${dlfcn_compat_root_dir} dlfcn)
include_directories(
         ${dlfcn_compat_root_dir}/include/
)

链接静态库

target_link_libraries(yourSharedLibrary
        dlfcn_compat_static
)

引入头文件

#include "dlfcn_compat.h"

相关函数

extern "C" {

void *dlopen_compat(const char *filename, int flags);

void *dlsym_compat(void *handle, const char *symbol);

int dlclose_compat(void *handle);

const char *dlerror_compat();

int get_sdk_level();

}

sample 见 app/src/main/cpp/sample.cpp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.