精华内容
下载资源
问答
  • so文件(全平台)so

    2020-08-13 15:00:23
    so文件(全平台),so文件(全平台),so文件(全平台),so文件(全平台),so文件(全平台),so文件(全平台),
  • Android 如何编译so文件

    2017-06-01 03:12:53
    现在想做的是,编译成so文件后再用adb push到手机上。但不了解如何编译so文件,请教各位前辈。 是make指定部分的Android.mk来编译,还是利用Android.mk中的LOCAL_C_INCLUDE和LOCAL_SRC_FILES,自己用g++编译呢?又...
  • .so文件反编译工具

    2017-11-03 16:19:55
    在参考apk开发应用程序时,经常遇到.so文件,工具中readelf.exe,经测试可有效反编译.so文件
  • 本篇文章,主要参考AndroidStudio 编译C/C++文件生成SO文件,但是在学习过程中还是出现了不少问题,所以详细记录一下操作过程。 一、AndroidStudio的NDK下载: 通过file----->settings进行下载: 二、新建一个...

    本篇文章,主要参考AndroidStudio 编译C/C++文件生成SO文件,但是在学习过程中还是出现了不少问题,所以详细记录一下操作过程。


    一、AndroidStudio的NDK下载:

    通过file----->settings进行下载:



    二、新建一个Project:

    1、一定要勾选C++这个方框;


    2、一直“下一步”即可,在最后含有C++选项时,可勾选下面2个方框;



    通过以上步骤,可新建完成一个带有C++的项目工程。创建好的工程中,有实例代码可供参考使用。


    三、生成C++文件和so文件

    1、创建Native方法:

    package com.jni.study.jnistudy;
    
    /**
     * Created by robin on 2017/6/26.
     * 创建的本地方法
     */
    
    public class NativeJNI {
    
        static {
            System.loadLibrary("main");
        }
    
        public static native String helloJNI();
    }
    


    2、通过Build----->Make Project生成class文件:



    3、Terminal输入命令行生成.h文件

    1)、Terminal在哪?



    2)、输入命令cd app/src/main,按下enter键进入app main路径下;

    3)、输入命令 javah -d jni -classpath [你的sdk路径]\platforms\android-22\android.jar;..\..\build\intermediates\classes\debug [你的包名+包含native方法的类]

    D:\Android\developByMySelf\JNIStudy\app\src\main>javah -d jni -classpath C:\Users\robin\AppData\Local\Android\Sdk\platforms\android-22\android.jar;..\..\build\intermediates\classes\debug com.jni.study.jnistudy.NativeJNI
    
    注意点:上面代码的绿色标记住,原文中这块有问题,否则下一步就无法实现。

    4)、执行完命令后,在src/main路径下看到jni文件夹,里面有自动生成的.h文件,该文件不需要去编辑 



    4、实现native方法

    1)、拷贝自动生成的.h方法,到jni里,并重命名为main.c,并编写main.c中的代码,实现native方法

    JNIEXPORT jstring JNICALL Java_com_jni_study_jnistudy_NativeJNI_helloJNI
            (JNIEnv *env) {
        return (*env)->NewStringUTF(env, "Hello 2 JNI!");}

    2)、再执行Build------>Make Project

    5、在工程的build.gradle中配置信息,同步一下项目

    android {
        compileSdkVersion 25
        buildToolsVersion "25.0.2"
        defaultConfig {
            applicationId "test.jni.com.jniexample"
            minSdkVersion 16
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    	//配置的NDK信息
            ndk {
                moduleName "JniExample"
                ldLibs "log", "z", "m"
                abiFilters  "arm64-v8a","armeabi", "armeabi-v7a","mips","mips64","x86","x86-64"
            }
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        externalNativeBuild {
            cmake {
                path "CMakeLists.txt"
            }
        }
    }

    注意:在配置ndk的时候,abiFilters内部配置的信息,可能需要根据实际进行修改。此时,类NativeJNI内部的方法还是爆红的。

    6、配置CMakeLists.txt文件,添加main.c文件

    add_library( # Sets the name of the library.
                 native-lib
    
                 # Sets the library as a shared library.
                 SHARED
    
                 # Provides a relative path to your source file(s).
                 # Associated headers in the same location as their source
                 # file are automatically included.
                 src/main/cpp/native-lib.cpp )
                 
    #将自己生成的C++文件添加进来
    add_library(
                 main
                 SHARED
                 src/main/jni/main.c)
    添加完成后,再次刷新下工程, 当出现方框内的红绿箭头时则表示完成,NativeJNI方法也不再爆红



    7、Build--->ReBuild工程后,则可以生成NativeJNI的so文件


    8、这个时候,我们可以测试下我们生成的C++文件是否生效有用。

    package com.jni.study.jnistudy;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // Example of a call to a native method
            TextView tv = (TextView) findViewById(R.id.sample_text);
            tv.setText(stringFromJNI());
    
            //使用自己的本地方法
            tv.setText(NativeJNI.helloJNI());
    
        }
    
        /**
         * A native method that is implemented by the 'native-lib' native library,
         * which is packaged with this application.
         */
        public native String stringFromJNI();
    
        // Used to load the 'native-lib' library on application startup.
        static {
            System.loadLibrary("native-lib");
        }
    }
    
    效果图:



    四、如何使用so文件

    1、新建一个module,然后在main\java目录下重新建个文件夹,路径为上一个项目中NativeJNI类的包名:com.jni.study.jnistudy.

    package com.jni.study.jnistudy;
    2、将写好的NativeJNI类拷贝到新建文件夹中。注意:路径必须按照上一步建设,否则拷贝的类无法使用,native方法会爆红。

    3、引入外部的so文件

    1)、在java目录下新建jniLibs包,将所有生成的so文件包拷贝到jniLibs包下



    2)、将上述拷贝的文件,直接复制到libs文件夹下,也可以。

    /*如果使用jniLibs文件夹导入so文件,不需要在gradle中配置了;
        如果将so文件添加在module的libs文件夹下,则需要在module的gradle配置中添加一下配置:
        sourceSets {
                main {
                    jniLibs.srcDirs = ['libs']
                }
         }*/

    新建的jniLibs包目录:拷贝的libnative-lib.so文件可以删除,不影响结果。



    4、同步后运行工程,能够输出结果:Hello 2 JNI!




    以上可以完成一个自定义的C++方法,及生成so文件,及引用外部的so文件!

    注:在生成C++方法时,也可以直接在native-lib.cpp内生成native方法,那么则不需要在CMakeLists.txt内新增add_library了。




    展开全文
  • 最新版本的android studio生成so文件并实现调用,本资源不可倒卖,
  • 有效反编译.so文件,安卓开发反编译.so文件,有效反编译.so文件
  • 本文章是Unity与 SO 交互的内容,详细的将每一步都做了介绍,生成一个so文件其实很简单!该专栏还有多篇优质内容在等待你观看。

    本文章是Unity与 SO 交互的内容,该专栏还有多篇优质内容在等待你观看,现在点击右上角点击这个————🚀订阅专栏🚀
    就可以免费观看多篇相关内容的文章啦!

    请添加图片描述


    📢前言

    • 本文是介绍Unity与SO文件交互的系列文章
    • 上一篇文章中简单介绍了SO文件的一个基本概念
    • 那本篇文章就来学一下怎样生成一个so文件呢!

    🎬SO文件生成

    在写这篇教程和实际进行操作之前,我一直以为.so文件是通过C/C++端进行生成的

    结果在网上查了一下.so文件的具体生成方法才知道,原来在Android Studio(下面统称AS)中也可以生成.so文件

    使用文件的主要原因是:我们使用Android使用的是Java代码,但是有时候项目会调用底层的C/C++代码,所以需要用到JNI(Java Native interface),我们可以利用JNI使Java程序调用一些库,也就是调用这些so文件(一般都是C/C++写的),来完成调用底层的项目需求。

    在介绍怎样生成.so文件之前还想要说一下JNI的,因为生成的时候会用到,那这里就简单介绍一下

    “so”文件是使用C/C++编写生成的,在Android 平台上快速编译、打包该文件,它是一个动态链接库,而生成“so”文件其实就是JNI开发

    JNI全称为Java Native Interface(JAVA本地调用)。

    • 从Java1.1开始,JNI成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C++)进行交互。
    • 并非从Android发布才引入JNI的概念的。
    • JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++),外部的c/c++代码也可以调用java代码。

    🍺通过Android Studio生成.so文件

    生成.so文件有好几种方法,那现在就先用Android Studio来生成一下试试

    🏳️‍🌈第一步:下载配置好NDK

    先下载一下NDK,然后配置环境变量,已经配置好NDK的这一步可以省略!
    可以在网上下载ndk下载地址: https://developer.android.com/ndk/downloads/index.html

    也可以直接在AS中进行下载
    在这里插入图片描述
    打开系统高级设置,右键此电脑,点击高级系统设置,就可以进入环境变量配置

    新建一个系统变量:NDK_HOME,变量值就是放这个NDK的路径,如下图所示
    在这里插入图片描述
    再编辑一下Path变量,加入这行字符:;%NDK_HOME %
    在这里插入图片描述
    最后打开命令指示符,输入:ndk-build

    如果出现下图所示,说明安装成功了!
    在这里插入图片描述

    🏳️‍🌈第二步:新建一个AS工程,新建一个JniTest.java文件

    打开AS,新建一个项目,然后再新建一个JniTest.java文件。这一步很简单不用多说了
    在这里插入图片描述
    JniTest.java内容
    在这里插入图片描述

    🏳️‍🌈第三步:选中JniTest.java文件,进行Make Project

    选中JniTest.java文件,Build - > Make Project

    在这里插入图片描述

    然后等待 AS 执行编译,会在Build目录下生成 .class文件,然后记住这个JniTest的路径,后面会用到

    我这里的路径是:F:\anyun\android\UnitysoTest\app\build\intermediates\javac\debug\classes com.example.unitysotest
    在这里插入图片描述

    🏳️‍🌈第四步:新建一个jni文件夹,生成.h头文件

    app -> src -> main 下新建一个文件夹jni
    在这里插入图片描述
    然后点击下面的Terminal打开AS的终端

    cd 到这个 jni 目录下,每个人的目录不一样,看看自己的这个jni路径是多少

    选中jni右键 -> Show in Explorer,会跳转到文件管理器的具体路径
    在这里插入图片描述
    在这里插入图片描述

    cd 到这个jni文件夹下之后,再输入以下命令

    这里注意,javah -jni -classpath后面的路径是第三步中我们生成的

    javah -jni -classpath  F:\anyun\android\UnitysoTest\app\build\intermediates\javac\debug\classes com.example.unitysotest.JniTest
    

    具体操作示例图如下:
    在这里插入图片描述
    然后执行完之后,正常情况下是没问题的,然后等待 AS 反应一会,或者直接点一下编译 sync

    会发现已经在我们这个 jni文件夹下生成了一个 com_brotherd_jnihelloworld_JniTest.h文件

    在这里插入图片描述

    🏳️‍🌈第五步:新建 一个c/c++source file文件test.c 和 Android.mk、Application.mk文件

    是在scr/main/jni目录下,新建一个c/c++source file,取名test.c实现上面.h文件中的方法。
    在这里插入图片描述

    test.c代码内容

    #include "jni.h"
    #include "com_example_unitysotest_JniTest"
    
    JNIEXPORT jstring JNICALL Java_com_example_unitysotest_JniTest_getString
      (JNIEnv *env, jclass jz){
    
      return (*env)->NewStringUTF(env,"呆呆敲代码的小Y使用 jni做测试!");
    
      }
    

    继续在 jni文件夹下,新建Android.mkApplication.mk文件。

    直接右键新建这两个文件即可,或者在文件管理器新建个文本改成这两个文件相同名即可,一定要戴着.mk后缀
    在这里插入图片描述
    Android.mk 代码内容:

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := JniTest
    LOCAL_SRC_FILES := Test.c
    include $(BUILD_SHARED_LIBRARY)
    

    Application.mk 代码内容

    APP_ABI := all
    

    🏳️‍🌈第六步:关联下载好的NDK包

    可以打开File - > Other Setting -> Default Project Structure..查看 NDK文件 位置
    在这里插入图片描述
    我的 NDK路径如下
    在这里插入图片描述
    然后再次打开 AS 的终端,cd进入到jni目录下,输入指令:ndk-build

    然后等待 AS 执行完成即可,会发现main目录下已经生成对应的so文件,终端提示如下:
    在这里插入图片描述
    这样的话我们的so文件就已经生成完毕了
    在这里插入图片描述

    🏳️‍🌈第七步:简单在AS端调用一下

    在app的 bulid 文件中加入如下代码,然后 build project

    android {
        ...
        sourceSets {
            main() {
                jniLibs.srcDirs = ['src/main/libs']
                jni.srcDirs = [] //屏蔽掉默认的jni编译生成过程
            }
        }
    }
    

    在这里插入图片描述
    然后在MainActivity中简单写代码调用一下

    package com.example.unitysotest;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        private TextView textView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            textView = (TextView) findViewById(R.id.textView);
            textView.setText(JniTest.getString());
    
        }
    }
    

    在这里插入图片描述
    如果这里的id部分报错的话,说明我们的xml视图没有添加id

    如下所示,找到XML文件,加上一行代码即可!
    在这里插入图片描述

    看一下运行效果图,如下所示,代表这个so可以调用成功啦!
    在这里插入图片描述


    💬总结

    • 本文对如何通过Android Studio生成so文件做了一个详细的说明 介绍
    • 当然实际情况中的c++文件内容肯定特别多,我们这里只是做了一个很简单的测试Demo
    • 并且对这个so文件进行了一个简单的调用,一般的调用还是很简单的,并没有很复杂!
    • 那本篇文章就算结束了,下一篇来看一下有了这个so文件之后,在Unity端该如何调用交互的!

    • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
    • 🎄比如以下几个专栏:Unity基础知识学习专栏Unity游戏制作专栏Unity实战类项目 算法学习专栏
    • 🎄可以学习更多的关于Unity引擎的相关内容哦!直接点击下面颜色就可以跳转啦!
    🚀 优质专栏分享 🚀
    🎄 Unity基础知识学习专栏 🎄
    ⭐️ Unity游戏制作专栏 ⭐️
    🍇 Unity实战类项目 🍇
    💦 小Y学算法 💦
    🚀 优质专栏分享 🚀

    请添加图片描述

    展开全文
  • 第一个.so文件

    千次阅读 2017-12-14 15:28:31
    第一次写博客,2017.12.14,纪念一下^-^废话不多说,直接开搞:如何生成你的第一个.so文件?1、配置ndk 2、编辑源码 3、生成.so文件一、配置ndk (百度)然后打开cmd命令行,输入ndk -build检验是否配置成功 参考...

    第一次写博客,2017.12.14,纪念一下^-^

    废话不多说,直接开搞:

    如何生成你的第一个.so文件?


    1、配置ndk
    2、编辑源码
    3、生成.so文件


    一、配置ndk


    参考:http://blog.csdn.net/tongseng/article/details/53005123


    二、编辑源码

    1、创建.so文件的工具类,并生成.h文件

    这里写图片描述


    2、创建jni文件

    这里写图片描述


    3、把.h文件拖进jni文件夹,并创建main.c文件

    这里写图片描述


    4、在main.c文件书写以下代码

    #include "com_um_jkdemo_JniText.h"//注意替换成自己的   引入.h文件
    
    JNIEXPORT jstring JNICALL Java_com_um_jkdemo_JniText_getJniString//注意替换成自己的
    (JNIEnv *env, jclass jclz){
       return (*env)->NewStringUTF(env,"String from JNI");//返回值
    }

    5、配置gradle

     android {
        compileSdkVersion 26
        buildToolsVersion "27.0.1"
        defaultConfig {
            applicationId "com.um.jkdemo"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
            ndk{
                moduleName "jni_text"//moduleName 和System.loadLibrary("Name");中的Name要保持一致
                ldLibs"log","z","m"
                abiFilters"armeabi","armeabi-v7a","arm64-v8a","mips","mips64","x86","x86_64"
            }
    
    
        }
    //防止报错(Error:(81) Android NDK: Application targets deprecated ABI(s): mips64 armeabi mips)
        splits {
            abi {
                enable true
                reset()
                include 'armeabi','armeabi-v7a', 'arm64-v8a',  'mips', 'mips64','x86', 'x86_64'  //select ABIs to build APKs for
                universalApk true //generate an additional APK that contains all the ABIs
            }
        }
    
    sourceSets { main { jni.srcDirs = ['src/main/jni', 'src/main/jni/JniText'] } }

    三、生成.so文件

    1、直接运行项目得到.so文件
    2、路径
    这里写图片描述


    注意事项

    1、gradle中的moduleName 一定要和 System.loadLibrary(“Name”);中的name一摸一样,区分大小写。

    2、main.c文件中的.h文件一定要替换成自己的,以及方法名

    3、执行javah命令时区分大小写


    参考

    http://blog.csdn.net/sw5131899/article/details/77183352


    end

    展开全文
  • unidbg调用so文件生成xgorgon

    千次阅读 热门讨论 2020-08-14 20:36:58
    目前很多 App 的加密签名算法都在so文件中,强行逆向so的话可能会消耗大量时间和资源。 之前用 xposed 采用 hook 的方法从程序计算签名,但是需要模拟器或者真机运行这个应用,使用效率不高。 也用过 jtype 启动JVM...

    在这里插入图片描述

    目前很多 App 的加密签名算法都在so文件中,强行逆向so的话可能会消耗大量时间和资源。

    之前用 xposed 采用 hook 的方法从程序计算签名,但是需要模拟器或者真机运行这个应用,使用效率不高。
    也用过 jtype 启动JVM,然后通过 native 对so文件进行调用,因为每次都需要启动JVM,所以效率也不高。

    unidbg 他不需要运行 app,也无需逆向 so 文件,通过在 app 中找到对应的 JNI 接口,然后用 unicorn 引擎直接调用 so 文件,所以效率相对要高不少。


    unidbg特点

    • 模拟JNI调用API,可以调用JNI_OnLoad
    • 支持JavaVM,JNIEnv
    • 模拟系统调用
    • 支持ARM32和ARM64
    • 内联钩子(Inline Hook)
    • Android import hook
    • iOS 的一些hook工具 fishhook and substrate and whale hook
    • 支持简单的控制台调试器,gdb存根,实验性IDA android调试器服务器,指令跟踪,内存读/写跟踪
    • 支持iOS objc和Swift

    unidbg环境配置

    unidbg下载链接: https://github.com/zhkl0228/unidbg

    IntelliJ IDEA可用于编辑unidbg源
    在这里插入图片描述

    下载完成之后示导入到 IDEA 中,当然你需要准备好java环境(jdk、maven)

    在这里插入图片描述
    选择Maven
    在这里插入图片描述
    等待加载完成之后,运行src/…/encrypt 中的TTEncrypt测试用例
    在这里插入图片描述
    如果控制台打印相关调用信息,说明已经导入成功。
    在这里插入图片描述


    加载libcms.so

    看过这篇文章的应该已经知道生成xg函数的位置,所以不具体说了。《抖音xgorgon(0401)

    下面准备调用libcms.so文件中的 leviathan 函数

    首先在 src/test/resources 目录下新建文件夹dylib,放入libcms.so文件

    libcms.so 下载地址: https://download.csdn.net/download/weixin_43582101/12713664

    在这里插入图片描述

    然后我在 /unidbg/unidbg-android/src/test/java/com/sun/jna/ 目录下新建了 JniDispatch128.java文件

    在这里插入图片描述

    JniDispatch128.java文件内容如下:

    备注
    “com/ss/sys/ces/a”需要调用函数所在的Java类完整路径,比如 a/b/c/d 等等,注意需要用/代替.
    “leviathan(II[B)[B”需要调用的函数名,名字是smali语法,可通过jadx等工具查看
    “vm.loadLibrary(new File)”so文件的路径,需要自行修改,最好为绝对路径
    package com.sun.jna;
    
    import com.github.unidbg.*;
    import com.github.unidbg.linux.android.AndroidARMEmulator;
    import com.github.unidbg.linux.android.AndroidResolver;
    import com.github.unidbg.linux.android.dvm.*;
    import com.github.unidbg.memory.Memory;
    import com.github.unidbg.memory.MemoryBlock;
    import com.github.unidbg.linux.android.dvm.array.ByteArray;
    
    
    
    import java.io.File;
    import java.io.IOException;
    
    public class JniDispatch128 extends AbstractJni {
    
        private static LibraryResolver createLibraryResolver() {
            return new AndroidResolver(23);
        }
    
        private static AndroidEmulator createARMEmulator() {
            return new AndroidARMEmulator("com.sun.jna");
        }
    
        private final AndroidEmulator emulator;
        private final Module module;
        private final VM vm;
    
        private final DvmClass Native;
    
        private JniDispatch128() {
            emulator = createARMEmulator();
            final Memory memory = emulator.getMemory();
            memory.setLibraryResolver(createLibraryResolver());
    
            vm = emulator.createDalvikVM(null);
            vm.setJni(this);
            vm.setVerbose(true);
    
    		// 自行修改文件路径
            DalvikModule dm = vm.loadLibrary(new File("/Users/Desktop/unidbg/unidbg-android/src/test/resources/dylib/libcms.so"), false);
            dm.callJNI_OnLoad(emulator);
            module = dm.getModule();
    
            Native = vm.resolveClass("com/ss/sys/ces/a");
       }
    
        private void destroy() throws IOException {
            emulator.close();
            System.out.println("destroy");
        }
    
        public static void main(String[] args) throws Exception {
    
            JniDispatch128 test = new JniDispatch128();
    
            test.test();
    
            test.destroy();
        }
    
        public static String xuzi1(byte[] bArr) {
            if (bArr == null) {
                return null;
            }
            char[] charArray = "0123456789abcdef".toCharArray();
            char[] cArr = new char[(bArr.length * 2)];
            for (int i = 0; i < bArr.length; i++) {
                int b2 = bArr[i] & 255;
                int i2 = i * 2;
                cArr[i2] = charArray[b2 >>> 4];
                cArr[i2 + 1] = charArray[b2 & 15];
            }
            return new String(cArr);
        }
    
    
        private void test() {
            String methodSign = "leviathan(II[B)[B";
    
    
            byte[] data = "暂时随便写的,这里是url经过处理后的data".getBytes();
            int time = (int) (System.currentTimeMillis() / 1000);
    
            Native.callStaticJniMethod(emulator, methodSign, -1,time,new ByteArray(vm,data));
    
            Object ret = Native.callStaticJniMethodObject(emulator, methodSign, -1,time,new ByteArray(vm,data));
    
            System.out.println("callObject执行结果:"+((DvmObject) ret).getValue());
    
            byte[] tt = (byte[]) ((DvmObject) ret).getValue();
            System.out.println(new String(tt));
            String s = xuzi1(tt);
            System.out.println(s);
        }
    }
    
    

    运行main方法即可查看生成出来的xgorgon了

    在这里插入图片描述


    more articles

    更多douyin技术文章,可查看专栏:

    https://blog.csdn.net/weixin_43582101/category_9529769.html

    在这里插入图片描述

    展开全文
  • 啥是so文件

    千次阅读 2017-09-13 20:25:23
    所以会有后缀为.so(shared object)的文件, 当然这样解释不够精确、详细, 肯定会被吐槽, 具体如下: 准确地、详细地来说, 手机里面有硬件, 也就是弱电学中的电路, 电路组成了CPU和协助CPU的外围电路,...
  • AndroidStudio 编译C/C++文件生成SO文件

    万次阅读 多人点赞 2016-01-20 12:10:54
    之前写过一篇关于Eclipse生成SO文件的文章,里面有详细的步骤,有兴趣的同学可以去看看 【第一节】android增量升级之生成so文件 该篇文章主要讲如何用AndroidStudio生成SO文件 新建一个Project新建一个Jni...
  • .so(SharedObject)作用等同于windows环境下的.dll(dynamic link library)文件,我们在引用第三方SDK时,也会遇到需要调用相应的.so文件的情况,.so文件本事更多的是集成公共处理方法,当然有事也会用来保存重要...
  • so文件汉化心得【整理】

    千次阅读 2014-11-18 13:04:18
    这篇是我对 @布加迪20 在安智写的一篇汉化so文件的心得>中的技术附件做的简洁性整理,原来的看起来不是很方便。一起分享学习.. 正文 SO文件汉化心得  --By布加迪20 2014/08  我自己也是新手,研究了...
  • 首先在Android Studio(版本...然后跟原来一样,用ndk_build工具去编,然后工具会自动生成libs目录,里面还有每个你在Application.mk里所指定处理器架构的so文件。  如果是引用第三方so,直接把相关的文件放在lib
  • Android studio中正确引入so文件的方法

    千次阅读 2015-08-27 13:16:37
    Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢?其实很简单。这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件。首先,在我们...
  • Linux程序运行找不到动态库.so文件的三种解决办法 方法一:添加环境变量 方法1. 添加当前用户当前终端的环境变量-临时 export LD_LIBRARY_PATH=/home/czd/... #.so file path 方法2. 添加当前用户的环境变量 修改~/...
  • linux .so文件详解

    万次阅读 2014-03-07 16:36:07
    .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的...
  • android studio 编译C生成.so文件

    千次阅读 2016-07-14 10:53:48
    前段时间有个同事离职了,用C编译的.SO文件需要更改,结果C文件是他写的,无赖啊,自己又是一个小白,不会啊,所以自己又好好钻研了一天,不会,看什么都难啊,痛苦啊,网上找了好多,才找到的,而且感觉都不怎么...
  • DLL文件与so文件的区别

    千次阅读 2015-12-11 09:56:47
    动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import directory的表,该表的每一项包含...
  • SO文件的编写,编译,使用方法

    万次阅读 2016-08-23 09:57:46
    (1)SO文件简介linux下的.so文件为共享库,相当于windows下的dll文件。在系统目录/usr/lib/下,我们可以看到很多应用程序库文件(常用的动态链接库和软件包的配置文件)。(2)SO文件编译方法A. SO文件没有main我们...
  • android修改so文件

    千次阅读 2015-12-23 23:23:00
    [原]汉化修改so文件心得篇一(带偏移修改) android 过SO签名校验 浅谈android elf文件(so格式)字符串超长修改 转载于:https://my.oschina.net/addcn/blog/550203
  • Android Studio jni编译生成so文件

    千次阅读 2015-06-17 13:42:46
    转载出处:... Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处。 Step: 2....生成了.class文件..class文件的生成路径是在 app_path/
  • android so文件编译

    千次阅读 2015-12-17 11:22:50
    这意味着当引入一个新的预编译.so文件,而且项目中还存在其他的.so文件时,我们需要首先确认新引入的.so文件使用的C++运行时是否和已经存在的.so文件一致。 没有为每个支持的CPU架构提供对应的.so文件 这...
  • 提取so文件的特征值

    千次阅读 2015-04-03 23:14:16
    因为像.o , .so, .exe 为后缀名的文件都是elf格式的文件. ELF 文件格式是一种二进制的文件.它被叫做可执行链接的格式(Executable and Linking Format). ELF格式文件标准被选作为一种可移植的目标文件被分为三种类型...
  • dll和so文件区别与构成

    千次阅读 2018-07-26 16:47:52
    动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import directo
  • 1、为了让Linux能在本目录下找到so文件,需要修改.bash_profile。 2、在.bash_profile的最后位置添加代码:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 3、也可以把so文件放到linux的系统目录下:/usr/lib/ ...
  • 针对Android平台编译好的FFmpeg 3.4.5的动态链接库.so文件,包括armeabi-v7a arm64-v8a两个版本,包含头文件,包含x264,支持mediacodec硬解码h264,h265。可直接集成到工程中用于视频编辑、转码等。
  • Ubuntu 下php调用c语言.so文件

    千次阅读 2015-01-17 17:36:32
    写一个php模块(php extension),在php中调用该... 首先做一个简单的so文件: /** * hello.c * To compile, use following commands: * gcc -O -c -fPIC -o hello.o hello.c  * gcc -shared -o libhell
  • Linux下的.so文件编写

    千次阅读 2017-08-19 11:33:59
    Linux下的.so是基于linux下的动态链接,其功能和作用类似与windows下.dll文件。 下面是关于.so的介绍: 一、引言 通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,170
精华内容 53,668
关键字:

编辑so文件