android打包so文件到apk

使用android SDK原代码 开发APK,将so文件打包进apk,这样可以只提供给客户一个apk.
1.含义全代码的so打包.
a)建立工程,并使用本地调用,java文件如下
view source
print?
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. int z = appadd(x, y);
16. tv.setText( x + "+" + y + "=" + z );
17. setContentView(tv);
18. }
19. public native int appadd(int x, int y);
20.}

b)在工程的根目录建立Android.mk,内容如下.
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user eng
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := jnitest
LOCAL_JNI_SHARED_LIBRARIES := libapptest
include $(BUILD_PACKAGE)
include $(LOCAL_PATH)/jni/Android.mk
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
其中LOCAL_MODULE_TAGS名字要和目标系统一致,否则编译产生的apk文件不能安装到目标系统,.
LOCAL_JNI_SHARED_LIBRARIES := libapptest 把我们另外编译成的so文件放到apk文件里的libs/armeabi里
include $(LOCAL_PATH)/jni/Android.mk为了编译本地文件成为so

c)在工程根目录创建jni文件夹,在jni文件里创建Android.mk和callapp.c,他们内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user eng
LOCAL_MODULE := libapptest
LOCAL_SRC_FILES := callapp.c
LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE)
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE_TAGS :要和工程的一致,否则编译不通过
LOCAL_C_INCLUDES += \$(JNI_H_INCLUDE) 为了让jni编译通过,因为工程通过jni调用本地库。

callapp.c文件内容如下:
view source
print?
1.#include <jni.h>
2.JNIEXPORT jint JNICALL Java_test_jni_jnitest_appadd
3. (JNIEnv *env, jobject obj, jint x, jint y){
4. return x +y;
5.}
d)把工程文件放到SDK platform\packages\apps目录下,然后进入该目录,命令里输入mm,进行该工程的编译.(之前要再platform之前把工程目标设定好)

e)编译出来的apk 在platform/out/target/product/sk886x/system/app里可以找到,其中sk886x 是目标平台. 打开该apk文件,可以看到libapptest.so存在在包里的libs/armeabi文件夹里. 运行该apk,可以正常运行,显示正确答案.
android源码中编译打包so文件进apk 开发的指南针应用中需要百度定位的so文件。 Compass/libs/armeabi/liblocSDK3.so 这样的目录结构, eclipse下编译时会把 liblocSDK3.so 编到Compass.apk里。 解压Compass.apk 可以看到 Compass\lib\armeabi\liblocSDK3.so。 但再源码中编译,需改动Android.mk,加上下面两句。 L 阅读详情

相关推荐

Android Studio打包.so库到apk中实例详解

主要介绍了Android Studio打包.so库到apk中实例详解的相关资料,需要的朋友可以参考下

Android 将多个静态库合并为一个静态库或动态库

有时我们使用第三方提供的静态库加上我们自己的代码需要重新编译出库文件或可执行文件,如果生成可执行文件直接参考https://blog.youkuaiyun.com/u013463707/article/details/90754571 即可。 但是如果还想生成库文件,直接修改Android.mk的include $(BUILD_EXECUTABLE) 为include $(BUILD_STATIC_LIB...

u013463707的专栏 4111

Qt 侧边菜单栏+堆叠窗口stackedWidget

效果如下:环境:Qt 6.6.2 MSVC2019 64bit。

weixin_41033231的博客 1568

将so库打包进apk

遇到过同样的问题,大佬文章分析的很到位,特此转载记录: 文章链接:https://blog.youkuaiyun.com/sevenjoin/article/details/104768293 概述 本章主要介绍如何将自己开发的so库文件或者第三方提供的库文件一并打包到APK中的正确姿势。 在之前也参考了很多资料就是无法将so正确打包,走了很多坑,一度想放弃。现在总结一下 避免其他新同学继续入坑! 至于为什么需要将so打包到apk呢? 是因为在开发app时引用到了so文件,但是so文件没有被apk一起打包,在

weixin_44375547的博客 3742

实战解析:如何用Python逆向破解FastMoss的TikTok数据加密签名(附完整代码)

本文详细解析了如何用Python逆向破解FastMoss平台的TikTok数据加密签名机制,包括MD5加密算法和JS逆向分析。通过完整的Python代码示例,帮助开发者理解签名生成原理并实现自动化请求,提升数据获取能力。

weixin_30955617的博客 560

ubuntu18.04安装gtsam过程及报错error: invalid initialization of reference of type ‘const std::vector<bool>&’

这里建议从这个链接下,不要从官网下,可能会有版本冲突 2.安装依赖 3.编译 报错: 1. error: invalid initialization of reference of type ‘const std::vector&’ from expression of type ‘const std::vector’ 124 | const std::vector& mask() const { retur...

qq_35102059的博客 2912

Android 打包so动态库文件到APK

原文:http://blog.youkuaiyun.com/phiger/article/details/6233882 有时由于项目需要使用JNI来调用.so文件,需要将so文件一起打包到APK文件中,这有两种方法: 1. 使用mm命令和Android SDK源代码一起编译。 在project根目录创建一个Android.mk,文件内容如: [c-s...

diche7031的博客 520

功率开关管驱动串扰(Crosstalk):深度解析与优化方案

介绍了功率开关器件驱动串扰产生机理,并整理了常见的工程应用优化措施

qq_38326420的博客 559

android下载文件封装,android原码开发 打包so文件到apk

文件:命令方式将so文件打包进apk.pdf大小:65KB下载:命令方式将so文件打包进apk使用androidSDK原代码开发APK,将so文件打包进apk,这样可以只提供给客户一个apk.1.含义全代码的so打包.a)建立工程,并使用本地调用,java文件如下package test.jni;import android.app.Activity;import android.os.Bundl...

weixin_39520869的博客 264

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5635

5.30华为OD机试真题 新系统 - 链表数字游戏 (Java/Py/C/C++/Js/Go)

5.30华为OD机试真题 新系统 - 链表数字游戏 (Java/Py/C/C++/Js/Go)

算法大师! 1122

Android打包so文件到apk

使用android SDK原代码 开发APK,将so文件打包进apk,这样可以只提供给客户一个apk.  1.含义全代码的so打包.  a)建立工程,并使用本地调用,java文件如下  view source  package test.jni; import android.os.Bundle; import android.app.Activity; import andro

IT先森 2444

全桥 LLC 谐振变换器详细解析:结构 + 控制 + 工作原理全搞懂!

在现代高效率电源系统中,LLC 谐振变换器🔥早已成为降损利器。尤其是全桥 LLC 拓扑结构,由于其在、副边整流管的 ZCS(零电流关断),再加上优秀的效率表现,已经成为服务器电源、电动汽车 OBC、光伏逆变等场景的首选。那么,全桥 LLC 到底长啥样?它的控制方式是怎么回事?具体工作波形又是如何呢?今天我们就来一篇讲清楚、讲透彻的文章!🚗💨。

weixin_43199439的博客 3527

Android Studio .so文件打包不到APK中的原因

转载自:https://blog.youkuaiyun.com/fhl13017599952/article/details/52120739 1.需要在build中添加如下配置,这是必备的 android { sourceSets { main { jniLibs.srcDirs = ['libs'] } } } 2.如果添加了该项配置出...

Tomes.V.White 2621

QGIS将经纬度坐标转成点

QGIS绘制一张地图

weixin_46713695的博客 6056

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android JNI打包so文件到apk .

FROM:http://blog.youkuaiyun.com/itluochen/article/details/53784830 Android JNI 的使用,之前很少使用这个,所以这次用到占用了很多时间搞,不熟悉C++ Android JNI如何用呢? 下面这段拷贝别人的,是没问题的: 常用有两种方法: 1、在windows/Linux下,首先把so动

茫茫大士的专栏 2983

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: ant 编译android工程
下一篇: android sdk 编译--如何将源代码加入android.jar,以及make原理
sharp2wing
博客等级 码龄19年 5粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值