问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android so文件怎么用

发布网友 发布时间:2022-04-23 09:38

我来回答

1个回答

热心网友 时间:2023-10-02 10:05

相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式。

Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢?


其实很简单。这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件。


首先,在我们的Mole的根目录中建立libs目录,将jpush集成SDK中的so文件分别拷入,截图如下:



然后就是编写我们的build.gradle文件。

关于so文件引入的配置很简单,代码配置如下:


[html] view plain copy print?

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {  

        destinationDir file("$projectDir/libs")  

        baseName "Native_Libs2"  

        extension "jar"  

        from fileTree(dir: "libs", include: "**/*.so")  

        into "lib"  

    }  

  

    tasks.withType(JavaCompile) {  

        compileTask -> compileTask.dependsOn(nativeLibsToJar)  

    }  




自定义一个任务,在其中指定项目所依赖的so文件的目录,这里用了**/*.so来写,为了省事,指定需要拷入的目录 into "lib",那么动态运行库就被拷入到lib目录中。

完整的build.gradle文件如下:


[html] view plain copy print?

apply plugin: 'com.android.application'  

  

android {  

    compileSdkVersion 21  

    buildToolsVersion "21.1.0"  

  

    defaultConfig {  

        applicationId "com.wujay.footerballstar"  

        minSdkVersion 8  

        targetSdkVersion 21  

        versionCode 1  

        versionName "1.0"  

    }  

  

    buildTypes {  

        release {  

            runProguard false  

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  

        }  

    }  

  

    task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {  

        destinationDir file("$projectDir/libs")  

        baseName "Native_Libs2"  

        extension "jar"  

        from fileTree(dir: "libs", include: "**/*.so")  

        into "lib"  

    }  

  

    tasks.withType(JavaCompile) {  

        compileTask -> compileTask.dependsOn(nativeLibsToJar)  

    }  

}  

  

dependencies {  

    compile fileTree(dir: 'libs', include: ['*.jar'])  

    compile 'com.android.support:appcompat-v7:21.0.0'  

    compile files('libs/jpush-sdk-release1.7.2.jar')  

    compile files('libs/umeng_sdk.jar')  

    compile files('libs/libammsdk.jar')  

}  

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我梦见一条蛇,谁能解梦? ...战地3港版,多人联网要求ea账号,于是用电脑注册了一个,用ps3登入提... 谁给推荐几个不花钱的好玩的游戏啊!无聊中... 天气潮汐预报app哪个好用 涨潮有什么软件 墨迹天气怎么看潮汐时间 墨迹天气潮汐预报设置教程 哪种天气预报能看潮汐 小米手机开发者模式在哪里关闭?小米手机开发者模式 上海行迈企业管理咨询有限公司讲师介绍 赵继红培训课程 董事会与理事会的区别 求推荐好用的目标管理、计划管理app? 公司中理事是什么职务啊 准备从事知识产权方面的律师业务,需要准备些什么? android studio JNI开发时 编译成功 但是没有生成.so文件 什么原因 干事,执事,理事,董事各是什么意思? 怎么编译生成指定模块的so库文件 理事会和董事会的区别 想考证,问下知识产权管理师证有什么用 android开发,怎么使用ndk编译成.so文件 董事会和理事会有何分别 要成为一名知产律师需要做哪些准备 android中如何编译出64位so文件? 理事会和董事会有什么区别啊? 知识产权管理师证书的认可度和含金量怎么样,未来的发展如何? android studio怎么配置编译so库 理事会成员必须是股东吗? 在知识产权代理公司做律师助理可以申请律师证吗 理事是否是股东 android 怎么编译so文件 学知识产权专业,毕业后能直接做律师吗? 有没有写计划,规划,设定目标.之类的app 什么是理事会制度? 如何删除小米云相册的图片呢? 求一个 可以设定每日目标 每天提醒完成的软件 完成后还能签到的 安卓app 在Windows下CodeBlocks能编译Android下的.so和.a吗 app怎样指定战略目标 android studio怎么生成.so文件 小米手机相册不显示其他目录 今目标app如何创建任务的方法教程 扬州市有冷库厂吗? 好听的个性游戏网名有什么 ndk-Android NDk 怎么编译时动态链接第三方so库,有头文件 女扮男装的历史人物有哪些? 安阳市区哪里有冷库厂?有几个?急用!谢谢! 找几个和游戏有关的网名 如何生成android可用的SO文件 达目标app怎么用?来个人解释下 古时候有哪些著名的男扮女装和女扮男装的名人? so库如何适配安卓32bit\64bit 的cpu 怎么编译