需要在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 Studio集成讯飞语音开发出现21001错误
  2. Android 图片对比(图片相似度)代码
  3. android 代码优化:关闭输出日志
  4. 【Android错误解决方案】解决AndroidStudio在oppo和vivo手机上安
  5. 《Android系统源代码情景分析》连载回忆录:灵感之源
  6. 在Ubuntu上下载、编译和安装Android最新源代码

随机推荐

  1. Android修改Eclipse 中的Default debug k
  2. 我也分享一下我Android的收入数据
  3. android之如何使用Android的搜索框架
  4. Android面试经验二:
  5. 【Android休眠】之Android休眠机制
  6. android进行主题切换不重启整个应用(styl
  7. Android:增强目录选择器对话框
  8. android Uid 与 Pid 的区别与用法
  9. 在android下进行TDD开发
  10. Android工程 引用另外一个Android工程(zz