需要在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.** { *; }


更多相关文章

  1. android EditText设置不可写
  2. android 使用html5作布局文件: webview跟javascript交互
  3. android studio调试c/c++代码
  4. IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
  5. 锁屏界面
  6. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  7. Android(安卓)version and Linux Kernel version
  8. Android(安卓)闹钟管理类的使用
  9. Android学习篇之Menu的使用

随机推荐

  1. android中textview设置为多行文本时,如何
  2. Android(安卓)Initialization Process --
  3. Android(安卓)Wear Preview- 创建通知(Cre
  4. 2013.12.03 ——— android onPrepareOpt
  5. android 正则表达式
  6. Android中的BinderProxy.finalize()或Pla
  7. android 开源项目推荐
  8. android 悬浮窗口
  9. Android(安卓)Studio中配置代码和资源的
  10. Android(安卓)导入多个外部静态链接库, 进