Android studio编写so

前言

我在52破解学习的时候发现《教我兄弟学Android逆向06》第六章的so编写到NDK那一步死活走不下去了,找不到生成文件,然后从网上找了一些资料加自己的汇总写了此篇文章

环境

  • Android studio :4.1.1
  • NDK (Side by side) 23.0.7123448 (ndk;23.0.7123448)
  • CMake 3.18.1 (cmake;3.18.1)

废话少说开始正文

安装NDK和CMake

  1. 找到Android SDK ,选择SDK Tools选项
  2. 在选择下方的NDK和CMake,点击确定


    image.png

准备已经开始,接下来就是磕代码了

创建项目

  1. 创建项目后把右上角的标签转换为项目标签


    image.png
  2. 在main下创建一个新的文件夹:cpp,用于存放C++的代码


    image.png
  3. 在cpp文件下创建一个main.c的文件


    image.png
  4. 还得再cpp下再创建一个CMakeLists.txt


    image.png
  5. 复制CMakeLists.txt的绝对路径


    image.png
  6. 右击cpp文件选择Link C++。。。。


    image.png
  7. 将刚才复制的路径填写进去 project path中

  8. 打开CMakeLists.txt,把这几行代码复制进去

cmake_minimum_required(VERSION 3.4.1)

add_library( 
        # Specifies the name of the library.
        native-lib

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        main.c)

其中,cmake_minimum_required是指cmake的最小版本,add_library中分别声明了库名,静态/动态,编译所需的文件。如果需要编译多个库,那么直接添加多个add_library配置段即可。
完成后点击sync,我的已经点过了所以是不能点的

image.png

编写代码

回到MainActivity中开始写咱们的代码


image.png

回到刚才的main.c

#include 

JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_stringFromJNI(JNIEnv *env, jobject thiz) {
    return (*env)->NewStringUTF(env, "hello");
}

运行搞定

image.png

你可能感兴趣的:(Android studio编写so)