在apk里打包进.so文件的方法

有两种方法,

1 是在Android.mk文件里增加

LOCAL_JNI_SHARED_LIBRARIES := libxxx

这样在编译的时候,NDK自动会把这个libxxx打包进apk;

放在youapk/lib/目录下。



2 是在应用的目录下手工建

libs/armeabi

目录,然后把libxxx.so拷贝到这个目录下,

这样NDK就会自动把这个libxxx.so打包进apk,位置还是在

放在youapk/lib/目录下。



在代码里,使用

System.loadLibrary("xxx");

就可以加载这个动态库了。

这里要注意,参数只写xxx就可以了,不需要写libxxx,也不需要写libxxx.so。



还有一点要说明,System.loadLibrary这个函数会在如下路径搜索libxxx.so文件:

/system/lib

/data/data/you apk package/lib



但,如果libxxx.so还依赖其它.so文件,比如libyyy.so,则System.loadLibrary只会

在/system/lib目录下去找,如果没找到,它不会自动到/data/data/you apk package/lib

下去找,这个时候就会报动态库没找到的错;

解决方法是在load libxxx.so之前,先load libyyy.so,如下:

System.loadLibrary("yyy");

System.loadLibrary("xxx");

下面详细说明过程如下:
使用android SDK原代码 开发APK,将so文件打包进apk,这样可以只提供给客户一个apk. 

1.含义全代码的so打包. 

a)建立工程,并使用本地调用,java文件如下

01.package
test.jni;
02.import
android.app.Activity;
03.import
android.os.Bundle;
04.import
android.widget.TextView;
05.public
class jnitest extends Activity {
06./**
Called when the activity is first created. */
07.@Override
08.public
void onCreate(Bundle savedInstanceState) {
09.super.onCreate(savedInstanceState);
10.TextView
tv = new TextView(this);
11.int
x = 55;
12.int
y = 8;
13.System.loadLibrary("apptest");
14.//System.loadLibrary("testapi");
15.<span
class="block" margin-top:4px;"="" style="word-wrap: break-word; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important;"> 注:暂存的内容只能恢复到当前文章的编辑器中,如需恢复到其他文章中,请编辑该文章并从暂存箱中恢复;或者直接复制以上内容,手工恢复到相关文章。

android打包so文件到apk的更多相关文章

  1. react-native android打包签名release版apk遇到的问题

    在该项目包名时遇到的一个android打包问题,如下 改包名步骤 修改android/app/build.gradle里的applicationId,为新包名,如:com.xxx.yyy.myProj ...

  2. android重复的文件复制APK META-INF许可证错误记录

    * What went wrong:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> c ...

  3. Android打包混淆文件模板

    # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usa ...

  4. Eclipse将android项目打包jar文件

    Eclipse+android打包jar文件 蔡建良 2016-3-12 以Android-SlideExpandableListView开源框架为例,将源码Library打包成jar文件并包含R.c ...

  5. Android源码中内置包含so文件的APK文件

    方法一: 在packages/apps下面以需要预置的APK名字创建文件夹,以预置一个名为Test的APK为例 将Test.apk放到packages/apps/Test下面 在packages/ap ...

  6. [Android Pro] Android打包一个Apk后,如何查看它的VersionCode、VersionName 等等。

    Android打包成Apk后,其实是一个压缩文件,我们用winrar打开也能看到里面的文件结构.还能看到AndroidManifest.但是里面的内容有点问题. 不知道是因为加密还是Android就是 ...

  7. 如何给你的Android 安装文件(APK)瘦身

    如何给你的Android 安装文件(APK)瘦身 本文翻译自:Putting Your APKs on Diet           原作者:Cyril Mottier Android的apk文件越来 ...

  8. 怎样给你的Android 安装文件(APK)减肥

    转自: http://greenrobot.me/devpost/putting-your-apks-on-diet/ Android的apk文件越来越大了这已经是一个不争的事实. 在Android ...

  9. android打包apk时混淆遇到的问题

    android打包apk的时候一般会选择混淆,而在eclipse中常使用的是proguard来混淆.有很多时候引用了第三方包的时候会导致打包不成功,或者打包成功不能运行的情况. 首先看看正常的prog ...

随机推荐

  1. js 获取 对象 属性名称(转载)

    来源:https://www.cnblogs.com/YuyuanNo1/p/9257634.html dataObj = {name : su,age : 26,height : 18cm }; f ...

  2. Flink Runtime核心机制剖析(转)

    本文主要介绍 Flink Runtime 的作业执行的核心机制.本文将首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍在这个过程,Flink 是怎么进行资源管理. ...

  3. day 04作业

    目录 简述Python的五大数据类型的作用.定义方式.使用方法: 数字类型 字符串类型(str) 列表(list) 字典(dict) 布尔型(bool) 一行代码实现下述代码实现的功能: 写出两种交换 ...

  4. PB连接数据库

    SQLCA.DBMS = "ODBC" SQLCA..AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=fire ...

  5. CSS的一个小bug,Gradient has outdated direction syntax. New syntax is like `to left` instead of `right`.

    在vue重新渲染页面的时候,报了一个错误: 翻译了报错信息后,Gradient has outdated direction syntax. New syntax is like to left in ...

  6. mysql性能优化之服务器参数配置-内存配置

    MySQL服务器参数介绍 MySQL获取配置信息路径 命令行参数 mysqld_safe --datadir=/data/sql_data 配置文件 mysqld --help --verbose | ...

  7. golang并发基础

    1. go协程(go routine) go原生支持并发:goroutine和channel. go协程是与其他函数或方法一起并发运行的函数和方法.go协程可以看作是轻量级线程. 调用函数或者方法时, ...

  8. 关于header file、static、inline、variable hides的一点感想

    前言 先看一段代码 #ifndef _INLINE_H #define _INLINE_H template<typename T> static inline T my_max(T a, ...

  9. Kali下的内网劫持(一)

    ettercap利用计算机在局域网内进行通信的ARP协议的缺陷进行攻击,在目标主机与服务器之间充当中间人,嗅探两者之间的数据流量,从中窃取用户的数据信息,那么接下来我就给大家演示一下客户端的图片是怎么 ...

  10. suctf2019 部分web题目的复盘

    1.简单的SQL注入 一开始一直没思路,输入什么过滤什么,结束后看了大佬们的wp,感觉学到了,这里涉及到Mysql中的一个特殊模式的设置 set sql_mode=pipes_as_concat; 这 ...