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.即将该工程代码全部混淆
本文详细介绍了在Android.mk中如何配置预构建的共享库(libIAL.so)和本地模块(MyService),包括如何禁用proguard以避免混淆导致的问题。同时,文章提供了两种在Android.mk中配置预构建库的方法,并解释了在不同情况下如何正确地进行设置。
666

被折叠的 条评论
为什么被折叠?



