Android 7.1预编译编译第三方so

本文介绍了在Android项目中预编译第三方so遇到的问题及解决方案。在高通msm8953平台上,由于平台为64位,需要声明LOCAL_SRC_FILES_arm64和LOCAL_SRC_FILES_arm,同时设置LOCAL_MULTILIB为both,以确保32位和64位so都能编译。而在海思3798MV200上,只需按照32位配置即可。
摘要由CSDN通过智能技术生成

在项目开发中有时候会用到第三方库,但是在Android编译系统中不能像Linux那样直接在Makefile链接某个so,Android所有的库都需要在out/target/product/项目/obj/lib/生成,所有我们可以采用Android 的预编译BUILD_PREBUILT将第三方库编译到out/target/product/项目/obj/lib/中,于是有以下的Android.mk

#1.预编译第三方库liba.so

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

 #要生成的库
LOCAL_MODULE := liba 

#默认选项
LOCAL_MODULE_TAGS := optional

#所属的类是动态库
LOCAL_MODULE_CLASS := SHARED_LIBRARIES 

#这个是生成的后缀,我在hisi上面是可以不用加这个的,但是高通上面必须要加这个,不然编译的出来的库不带so
LOCAL_MODULE_SUFFIX := .so 

#这个是第三方的库
LOCAL_SRC_FILES := armeabi-v7a/liba.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_PREBUILT)

#2.使用该库

include $(CLEAR_VARS)
LOCAL_MODULE := libmaintest
LOCAL_SRC_FILES := main.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)

#链接上面预编译的共享库
LOCAL_SHARED_LIBRARIES := liba
include $(BUILD_SHARED_LIBRARY)

 

上面的Android.mk程序在hisi3798MV200上是可以编译通过的,因为他编译出来的so全部都是32位

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值