andorid 系统添加.so库

Android.mk
第一种

include $(CLEAR_VARS)
LOCAL_MODULE := libIAL
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS  := SHARED_LIBRARIES
LOCAL_SRC_FILES := lib/armeabi/libIAL.so
LOCAL_MULTILIB := 32
include $(BUILD_PREBUILT)

在device.mk中加上
PRODUCT_PACKAGES += libIAL

第二种

 include $(CLEAR_VARS)

 LOCAL_MODULE_TAGS := optional

 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)

 LOCAL_PACKAGE_NAME := MyService
 LOCAL_CERTIFICATE := platform
 LOCAL_PRIVILEGED_MODULE := true
 LOCAL_SDK_VERSION := current
 LOCAL_PROGUARD_ENABLED := disabled
 
LOCAL_PREBUILT_JNI_LIBS := \
	lib/armeabi/libIAL.so

#多个so库时,可使用下面方式
#JNI_LIBS :=
#$(foreach FILE,$(shell find $(LOCAL_PATH)/lib/ -name *.so),$(eval JNI_LIBS += $(FILE)))
#LOCAL_PREBUILT_JNI_LIBS := $(subst $(LOCAL_PATH),,$(JNI_LIBS))

 LOCAL_MULTILIB := 32
 include $(BUILD_PACKAGE)

 include $(call all-makefiles-under, $(LOCAL_PATH))

在项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。需要设置 :

LOCAL_PROGUARD_ENABLED := disabled

针对android 选择user版本进行编译的时候,会出现proguard错误,我们需要知道的事情

1.proguard是做什么的,他的作用是将java代码进行混淆的工具

2.因为proguard是混淆工具,所以android的mk文件也对其支持为两种方式:

1.指定不需要混淆的native方法与变量的proguard.flags文件如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags

2.制定编译的工程,不要使用代码混淆的工具进行代码混淆如:LOCAL_PROGUARD_ENABLED := disabled

3.不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值