android 原生工程中集成第三方so动态库和.a静态库和apk

在Android开发中,常常需要集成第三方的apk、so动态库和.a静态库。本文介绍了如何在Android.mk文件中配置集成so动态库以避免生成冗余的.so.so文件,正确编译生成libexample.so。同时,讲解了集成.a静态库的方法,以及如何将含有jni的第三方apk整合到原生工程中的步骤。
摘要由CSDN通过智能技术生成

在android实际的开发过程中,经过需要使用到第三方的资源,第三方提供的资源包括apk文件,so动态库文件,.a的静态库文件。

而第三方提供的这些资源,经常需要集成到Android的原生工程中。

 

集成so动态库,Android.mk文件书写如下:

 

#build lib so
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := libexample.so

LOCAL_MODULE := libexample.so

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

include $(BUILD_PREBUILT)

 

上面集成so动态库有个弊端,就是最终生成的so为:libexample.so.so,更好的方式是下面的,编译生成的就是libexample.so:

 

 

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_PREBUILT_LIBS := libexample.so

include $(BUILD_MULTI_PREBUILT)

 

 

 

 

 

集成.a静态库,Android.mk文件书写如下:

 

#build static lib
LOCAL_PATH :&
将 Qt 的 .so 文件打包成 APK 的过程可以分为以下几个步骤: 1. 创建一个 Android Studio 项目,并在项目的 app/build.gradle 文件添加如下配置(请根据实际情况修改路径): ``` android { ... defaultConfig { ... ndk { abiFilters "armeabi-v7a", "x86" } } ... sourceSets { main { jniLibs.srcDirs = ['path/to/Qt/libs'] } } } ``` 其,abiFilters 指定了需要支持的 CPU 架构,jniLibs.srcDirs 指定了 Qt 的 .so 文件所在的目录。 2. 在项目的 app/src/main 目录下创建 jni 目录,并在该目录下创建 Android.mk 文件,内容如下(请根据实际情况修改目录和文件名): ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := qt LOCAL_SRC_FILES := path/to/Qt/libs/libQt5Core.so \ path/to/Qt/libs/libQt5Gui.so \ path/to/Qt/libs/libQt5Widgets.so \ path/to/Qt/libs/libQt5AndroidExtras.so include $(PREBUILT_SHARED_LIBRARY) ``` 其,LOCAL_MODULE 指定了生成的 .so 文件的名称,LOCAL_SRC_FILES 指定了需要打包的 Qt 的 .so 文件的路径。 3. 在项目的 app/src/main 目录下创建 jni/Application.mk 文件,内容如下: ``` APP_ABI := armeabi-v7a x86 APP_PLATFORM := android-16 ``` 其,APP_ABI 指定了需要支持的 CPU 架构,APP_PLATFORM 指定了需要支持的 Android 平台版本。 4. 在项目的 app/src/main/java 目录下创建一个 Java 类,用于加载 Qt 的 .so 文件,内容如下: ``` package com.example.myapp; public class QtLoader { static { System.loadLibrary("qt"); } } ``` 5. 在项目的 app/src/main/AndroidManifest.xml 文件添加如下配置: ``` <application ... android:name=".QtLoader" ...> ... </application> ``` 其android:name 指定了在应用程序启动时加载 Qt 的 .so 文件。 6. 编译并打包 APK,使用 Android Studio 的 Build > Build APK(s) 命令即可生成 APK 文件。 注意事项: - Qt 的 .so 文件需要与 Android 平台的 CPU 架构匹配。 - Qt 的 .so 文件需要与 Android 平台的 Qt 版本匹配。 - Qt 的 .so 文件需要与 Android 平台的 GCC 版本匹配。 - Qt 的 .so 文件需要与 Android 平台的 STL 版本匹配。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值