在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. OO第三单元作业总结

    OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...

  2. S/4HANA Service Management和SAP Field Service Management的集成

    经常有朋友提出这样的问题:"SAP Business Suite里的CRM的Service模块已经通过Addon的方式迁移到了S/4HANA上,并且SAP之前又收购了一家专门做Service ...

  3. day 03作业

    目录 作业 简述执行Python程序的两种方式以及他们的优缺点: 简述Python垃圾回收机制: 对于下述代码: 10的引用计数为多少? x对应的变量值257的引用计数为多少? 简述Python小整数 ...

  4. Oracle 12cR1 RAC集群安装(二)--使用图形界面安装

    Oracle 12cR1 RAC集群安装文档:Oracle 12cR1 RAC集群安装(一)--环境准备Oracle 12cR1 RAC集群安装(二)--使用图形界面安装Oracle 12cR1 RA ...

  5. null在mysql中的不同表现

    在mysql中count(*)和count(id)具有不同的表现,其最大的影响是在我们进行联表的时候,如,我们现在要查询一个文章的评论数量,使用左连接查询,具体的sql语句如下: SELECT a.* ...

  6. Java数据库操作的一些注意

    练习一:插入一个学生的四六级成绩: //课后练习 public class task3 { //添加一条数据 @Test public void testInsert() { int id=1; Sc ...

  7. G1垃圾收集器系统化说明【官方解读】

    还是继续G1官网解读,上一次已经将这三节的东东读完了,如下: 所以接一来则继续往下读: Reviewing Generational GC and CMS[回顾一下CMS收集器] The Concur ...

  8. 7、Python变量流程基础(变量、赋值、格式化、运算符、流程控制、range()函数)

    一.执行Python程序的两种方式 1.交互式 在终端内输入“python3”,然后输入python代码 2.命令行式 在终端内输入“python3 文本文件路径” 二.变量 1.变量的组成 Pyth ...

  9. jvm 堆栈概念

    关于JVM的工作原理以及调优是一个向往已久的模块,终于有幸接触到:http://pengjiaheng.iteye.com/blog/518623 那就顺着这个思路,来梳理一下自己看到后的结论和感想. ...

  10. JSON—去除JSON数据中的所有HTML标…

    package com.linoer.utils; import java.util.ArrayList; import java.util.List; import java.util.regex. ...