Android SystemUI引用RenderScript库

        需要在SystemUI中使用高斯模糊效果,android系统中framework/base/rs库有次功能,应用层使用这个库对应的java包名称是android.support.v8.renderscript。需要在systemui中调用这个库,就得修改systemui下的android.mk。

android.mk修改后如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := SystemUI-proto
LOCAL_SRC_FILES := $(call all-proto-files-under,src)
LOCAL_PROTOC_OPTIMIZE_TYPE := nano
LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors
include $(BUILD_STATIC_JAVA_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := SystemUI-tags
LOCAL_SRC_FILES := src/com/android/systemui/EventLogTags.logtags
include $(BUILD_STATIC_JAVA_LIBRARY)
# ------------------
include $(CLEAR_VARS)
LOCAL_USE_AAPT2 := true
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src) $(call all-renderscript-files-under, src)
LOCAL_STATIC_ANDROID_LIBRARIES := \
    SystemUIPluginLib \
    android-support-v4 \
    android-support-v7-recyclerview \
    android-support-v7-preference \
    android-support-v7-appcompat \
    android-support-v7-mediarouter \
    android-support-v7-palette \
    android-support-v14-preference \
    android-support-v17-leanback
LOCAL_STATIC_JAVA_LIBRARIES := \
    SystemUI-tags \
    SystemUI-proto \
    android-support-v8-renderscript
LOCAL_JAVA_LIBRARIES := telephony-common
LOCAL_JAVA_LIBRARIES += android.car
LOCAL_PACKAGE_NAME := SystemUI
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res-keyguard $(LOCAL_PATH)/res
ifneq ($(INCREMENTAL_BUILDS),)
    LOCAL_PROGUARD_ENABLED := disabled
    LOCAL_JACK_ENABLED := incremental
    LOCAL_DX_FLAGS := --multi-dex
    LOCAL_JACK_FLAGS := --multi-dex native
endif
include frameworks/base/packages/SettingsLib/common.mk
LOCAL_AAPT_FLAGS := --extra-packages com.android.keyguard
LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
LOCAL_JNI_SHARED_LIBRARIES := librsjni

include $(BUILD_PACKAGE)

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

在以上 android.mk中,加粗部分是后来添加的,上面实在android8.1源码基础上修改添加的。

添加后,编译发现,load so的时候,报错,报java方法找不到的错误。

报这个错误的原因是,systemui中,对java代码进行了混淆,在android.mk中如下设置:

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

解决这个错误有两种思路,一种是去掉上面这行代码,不好,第二种是不混淆android.support.v8.*内的java代码即可。

所以,要在systemui的proguard.flags中加上如下代码:

-keep class android.support.v8.** { *; }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值