Android5.1-s5p6818平台Android.mk文件引入so动态库问题
来源:互联网 发布:app客户端制作软件 编辑:程序博客网 时间:2024/05/01 15:15
目前项目当中使用了串口以及一些第三方的sdk开发包,比如荣联云的IM功能和VoIP功能,这两者都有动态库so文件,那么在系统应用当中要引入动态库的话和Android studio里面开发普通应用软件就有不一样的地方了。网络上面提供了两种方式可以引用到动态库。
第一种方式:http://ticktick.blog.51cto.com/823160/1674206 Jhuster已经总结的很清楚了,在这里我将里面涉及到的引用第三方so库的部分列出来:
——————————————————————————————————————————————————————————————
LOCAL_STATIC_LIBRARIES := libencoder
LOCAL_SHARED_LIBRARIES := libdecoder
include $(CLEAR_VARS)
LOCAL_MODULE := libencoder
LOCAL_SRC_FILES := encoder.a
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_SUFFIX := .a
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := libdecoder
LOCAL_SRC_FILES := decoder.so
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
include $(BUILD_PREBUILT)
通过上述方式的配置,也就是通过修改Google的serial_port demo可以通过编译,package/apps/自建系统应用/android.mk 是如下配置的:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)#LOCAL_MODULE_TAGS := userLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := 应用名称LOCAL_JNI_SHARED_LIBRARIES := serial_portLOCAL_CERTIFICATE := platformLOCAL_MODULE_PATH := $(TARGET_OUT_APPS)include $(BUILD_PACKAGE)include $(call all-makefiles-under,$(LOCAL_PATH))
在自建系统应用/jni/android.mk里做如下配置:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)#TARGET_PLATFORM := android-3LOCAL_MODULE := serial_portLOCAL_SRC_FILES := SerialPort.cLOCAL_LDLIBS := -lloginclude $(BUILD_SHARED_LIBRARY)
最后将准备好的serial_port.so文件放入libs/armeabi下,将相应的c代码放入jni目录下,编译----》通过。
但是!!!启动应用的时候发现进入串口传输数据的功能模块应用就挂掉了!通过艰难的寻找原因的过程,最后发现打包到system/lib下面的libserial_port根本不起作用,刷机后通过adb push 将对应so文件push到system/lib下面解决!(难道编译系统重新编译了我的so文件吗!真是奇怪,么有找到原因~)
第二种方法,就是将so文件全部放到out/target/product/s~~~/system/lib里面,然后在Android.mk里面加上:
LOCAL_JNI_SHARED_LIBRARIES := libserphone(你自己的so库)
编译系统,就能够调用动态库文件了。
总结:
Google的serial_port demo在我的平台上面还是出现了第一种方式 的问题---需要重新pushso文件到system/lib才能正确读取到so文件的内容,但是荣联云的so动态库就没有出现这个问题,只要通过第二种方式进行配置和添加就能够正常读取到so里面的方法。请知道问题所在的高手们指点一下,感激之至!
- Android5.1-s5p6818平台Android.mk文件引入so动态库问题
- Android5.1-s5p6818平台“AttributeError: 'JNIFromJavaP' ~~”的问题
- Android5.1-s5p6818平台锁屏去除
- Android5.1-s5p6818平台使用第三方包编译出现混淆错误的问题
- Android5.1-s5p6818平台在Android源码添加git管理后编译出错
- Android5.1-s5p6818平台去掉系统自带应用
- Android5.1-s5p6818平台kernel部分背光驱动、注册
- Android 5.1-s5p6818平台刷机包文件
- Android.mk引入第三方jar包和so库文件
- Android 5.1-s5p6818平台编译出现libwebviewchromium.so错误总结
- Android引入动态库so的方法
- .so动态库文件到APK ./mk文件编写
- mk文件中如何引入静态库,动态库,三方库
- Android 5.1-s5p6818平台音频无输出的问题
- Android5.1-s5p6818平台绕过launcher2/3直接启动定制应用
- Android5.1-s5p6818平台去掉MMA8653模块驱动、HDMI驱动、TVOUT驱动
- Android5.1-s5p6818平台下利用Google-serial-port调用串口及问题解决
- Android5.1-s5p6818平台代码混淆导致jar里面的类不能读取---classnotfound exception
- 修改chrome的安装目录(默认的竟然安装在documents and settings目录,google真不厚道)
- PHP+Ajax+Mysql联合实现省市区三级联动
- BE插件开发获取当前单据状态枚举
- 2012年流行的安卓手机浏览器
- java collection map遍历效率问题
- Android5.1-s5p6818平台Android.mk文件引入so动态库问题
- 命名污染
- Bootstrap-3.3.7
- iOS -- CocoaPods
- leetcode-463- Island Perimeter
- MAVEN整合eclipse的环境的搭建及其使用
- thinkphp5.0.2 多对多模型中插入中间表字段不存在的解决办法
- 用电脑从Google Play下载apk
- Linux 驱动开发头文件总结