解决framework.jar不生效问题

在 Android 采用 ART 虚拟机后,为了提高运行时效率,在编译期间会将 jar 包中的 dex 文件编译为 odex、vdex 等文件。而这些文件并不存放在 framework.jar 中,所以会导致单独 push framework.jar 后,修改的内容不生效。

由于我们并不知道我们所修改的文件被编译到哪个目标文件中了,所以为了使修改能够生效,要么重新烧录 system.img,要么就得把整个 /system/framework 目录都 push 到开发板中。显然这两种方式都太麻烦了,不适合调试代码。

其实我们也可以通过禁用 dex 优化的方式来禁止编译期间生成 vdex 这类文件。当然这样做会影响系统首次运行的速度,但调试起来就方便多了,只需要把编译出来的 jar 包直接 push 到开发板上就可以了。

编辑 build/make/core/main.mk 文件,加入 WITH_DEXPREOPT := false 就可以了。

为了使其仅对 userdebug 版本生效,我将其添加在了如下部位:

复制代码

# user/userdebug ##

user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
enable_target_debugging := true
tags_to_install :=
ifneq (,$(user_variant))
  # Target is secure in user builds.
  ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
  ADDITIONAL_DEFAULT_PROPERTIES += security.perf_harden=1

  ifeq ($(user_variant),user)
    ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
  endif

  ifeq ($(user_variant),userdebug)
    # Pick up some extra useful tools
    tags_to_install += debug
    # Added by dybai 20190808 Disable dex optimization. -----添加在这里了-----
    WITH_DEXPREOPT := false
  else
    # Disable debugging in plain user builds.
    enable_target_debugging :=
  endif

  # Disallow mock locations by default for user builds
  ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=0

else # !user_variant
  # Turn on checkjni for non-user builds.
  ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1
  # Set device insecure for non-user builds.
  ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
  # Allow mock locations by default for non user builds
  ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1
endif # !user_variant

复制代码

如果想按照版级来控制,也可以添加到 device 目录下对应板级的 BoardConfig.mk 文件中。

 

 

作者:dybai
出自:http://www.cnblogs.com/0xcafebabe
赞赏:3Ky9q5HVGpYseBPAUTvbJBvM3h3FQ3edqr
本作品采用知识共享署名-相同方式共享 3.0 中国大陆许可协议进行许可。
欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.springframework.boot.autoconfigure.AutoConfiguration.imports的格式是一个文本文件,用于指定需要导入的自动配置类。每一行是一个完整的类名,表示一个自动配置类。这些自动配置类将在Spring Boot应用程序启动时被加载和生效。这个文件可以放在/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports路径下。 从Spring Boot 2.7.x版本开始,推荐使用这个文件来指定需要导入的自动配置类,而不再支持使用原先的META-INF/spring.factories文件。这个文件的格式和内容需要按照指定的规范来编写,确保每一行都是有效的类名。可以查看spring-boot-autoconfigure-2.7.7.jar中的/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件来了解具体的格式样例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Spring Boot】自动配置及重要注解解析](https://blog.csdn.net/Decade0712/article/details/125019022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [若依org.springframework.boot.autoconfigure.AutoConfiguration.imports](https://blog.csdn.net/weixin_44079262/article/details/127250561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [IDEA中使用org.springframework.boot.autoconfigure.AutoConfiguration.imports没有被识别](https://blog.csdn.net/Zhangsama1/article/details/129198456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值