zoukankan      html  css  js  c++  java
  • androidstudio创建第一个so文件

    前言:之前看安卓软件安全与逆向分析这书,看到ndk开发这节,发现自己连so文件都没编译操作过233,所以就直接上手试试,

    感觉挺好玩的,把关键的加密流程都放进so中去实现,这周先写个demo试试,感觉出题还是得和安卓的运行机制结合,然后

    再一个点到一个点来玩,比较有条理,之后放到github上,之后作为招新赛的题目来搞

    直接切入主题了,就不放图了,要看图的直接看我放的链接吧,里面图文并茂,这里主要是我的个人记录

    1.androidstudio直接新建一个项目,往下划,然后选择c++

    2.然后这里先去配置好ndk的路径,因为编译的工具都在ndk中,这里我是mac,所以找ndk的路径一开始有点懵逼

    然后百度了一波,才找到,

     然后自己查看自己的ndk路径在哪,点进去,相应路径输入好就行了,不知道为啥,我ndk默认配好了,233,不过配置文件local.properties里面没加,所以我又加了这句话

    ## This file is automatically generated by Android Studio.
    # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
    #
    # This file should *NOT* be checked into Version Control Systems,
    # as it contains information specific to your local configuration.
    #
    # Location of the SDK. This is only used by Gradle.
    # For customization when using a Version Control System, please read the
    # header note.
    sdk.dir=/Users/mac/Library/Android/sdk
    ndk.dir=/Users/mac/Library/Android/sdk/ndk/21.3.6528147

    3.新建一个Myjni.java文件,然后javac和javah,然后把后缀.h文件拖到cpp文件夹下面,全程终端操作,这里还是看我放的那个链接去搞,我懒得放图了。。。

    4.然后在cpp文件夹下面新建main.c文件,里面内容就是实现之前定义到Myjni.java文件中的native方法,

    //
    // Created by mac on 2020/9/29.
    //
    #include "com_example_firstso_Myjni.h"
    #include "../../../../../../Library/Android/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/jni.h"
    #include <jni.h>
    JNIEXPORT jstring JNICALL Java_com_example_firstso_Myjni_sayHello(JNIEnv * env, jclass jobj) {
    // TODO: implement sayHello()
        return (*env)->NewStringUTF(env,"hello world");
    }

    5.然后synow以下,build一波,已经在对应目录app/build/merged_native_libs/debug/out/lib下生成了不同平台架构的so文件了,我感觉蛮骚的,直接四个平台都生成了,是我没想到的,

    当然还是得切换一个project的视角,用安卓是看不到这玩意的。

    6.然后把lib的整个目录,复制到src/main下,记得把lib名字改成jniLIB,就可以正常运行了

    整篇写的贼水,mac的截图键实在鸡肋,服了)

    参考链接:

    https://www.jianshu.com/p/25008b219fa6

  • 相关阅读:
    Oozie简介
    ASP.NET Redis 开发
    迁移到 Express 4.x
    vim文本编辑器
    【Shell常用命令二】管道符 通配符
    【Shell常用命令一】echo bash alias history 输出重定向 快捷键
    【linux学习笔记八】常用命令
    【linux学习笔记七】关机重启命令
    【linux学习笔记六】压缩 解压缩命令
    【linux学习笔记五】帮助命令
  • 原文地址:https://www.cnblogs.com/YenKoc/p/13750109.html
Copyright © 2011-2022 走看看