高通平台添加自己的product后com.qualcomm.qti.tetherservice不停crash

异常Log:
01-01 07:05:18.156: W/System(9653): ClassLoader referenced unknown path: /system/framework/ConnectivityExt.jar
01-01 07:05:18.161: W/System(9653): ClassLoader referenced unknown path: /system/priv-app/QtiTetherService/lib/arm
01-01 07:05:18.169: I/art(9653): Rejecting re-init on previously-failed class java.lang.Class<com.qualcomm.qti.tetherservice.TetherService$1>
01-01 07:05:18.169: I/art(9653): Rejecting re-init on previously-failed class java.lang.Class<com.qualcomm.qti.tetherservice.TetherService$1>
01-01 07:05:18.183: I/art(9653): Rejecting re-init on previously-failed class java.lang.Class<com.qualcomm.qti.tetherservice.TetherService$1>
01-01 07:05:18.183: D/AndroidRuntime(9653): Shutting down VM
01-01 07:05:18.184: E/AndroidRuntime(9653): FATAL EXCEPTION: main
01-01 07:05:18.184: E/AndroidRuntime(9653): Process: com.qualcomm.qti.tetherservice, PID: 9653
01-01 07:05:18.184: E/AndroidRuntime(9653): java.lang.NoClassDefFoundError: com.qualcomm.qti.tetherservice.TetherService$1
01-01 07:05:18.184: E/AndroidRuntime(9653): at com.qualcomm.qti.tetherservice.TetherService.<init>(TetherService.java:77)
01-01 07:05:18.184: E/AndroidRuntime(9653): at java.lang.Class.newInstance(Native Method)
01-01 07:05:18.184: E/AndroidRuntime(9653): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2859)
01-01 07:05:18.184: E/AndroidRuntime(9653): at android.app.ActivityThread.access$1900(ActivityThread.java:150)
01-01 07:05:18.184: E/AndroidRuntime(9653): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427)
01-01 07:05:18.184: E/AndroidRuntime(9653): at android.os.Handler.dispatchMessage(Handler.java:102)
01-01 07:05:18.184: E/AndroidRuntime(9653): at android.os.Looper.loop(Looper.java:148)
01-01 07:05:18.184: E/AndroidRuntime(9653): at android.app.ActivityThread.main(ActivityThread.java:5417)
01-01 07:05:18.184: E/AndroidRuntime(9653): at java.lang.reflect.Method.invoke(Native Method)
01-01 07:05:18.184: E/AndroidRuntime(9653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:05:18.184: E/AndroidRuntime(9653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:05:18.187: W/ActivityManager(1279): Process com.qualcomm.qti.tetherservice has crashed too many times: killing!

从log中分析可能是ConnectivityExt.jar这个包没有引入,到/system/framework下一查看,果真如此。将这个jar包push到手机/system/framework目录,就不再crash了。

由于刚添加了自己的产品目录,猜测应该是相关的mk没有改好。源码中搜索了下,导入ConnectivityExt.jar的mk为
vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8226/prebuilt.mk,在此添加打印发现没有输出,那就是这里没有执行了。

继续往上查找,引用prebuilt.mk的为vendor/qcom/proprietary/common/config/device-vendor

ifneq (, $(filter $(PRODUCT_LIST), $(TARGET_PRODUCT)))

  ***#include device/qcom/$(TARGET_PRODUCT)/BoardConfig.mk
  file = device/qcom/$(TARGET_PRODUCT)/BoardConfig.mk
  ifeq ($(file), $(wildcard $(file)))
    include device/qcom/$(TARGET_PRODUCT)/BoardConfig.mk
  else
    include vendor/koko/$(TARGET_PRODUCT)/BoardConfig.mk
  endif***

  ifeq ($(call is-board-platform,msm8660),true)
    PREBUILT_BOARD_PLATFORM_DIR := msm8660_surf
  else ifeq ($(TARGET_PRODUCT),msm8625)
    PREBUILT_BOARD_PLATFORM_DIR := msm8625
  else ifeq ($(TARGET_PRODUCT),mpq8064)
    PREBUILT_BOARD_PLATFORM_DIR := mpq8064
  else
    PREBUILT_BOARD_PLATFORM_DIR := $(TARGET_BOARD_PLATFORM)
  endif

  $(call inherit-product-if-exists, $(QC_PROP_ROOT)/common-noship/etc/device-vendor-noship.mk)
  $(call inherit-product-if-exists, $(QC_PROP_ROOT)/prebuilt_grease/target/product/$(PREBUILT_BOARD_PLATFORM_DIR)/prebuilt.mk)
  $(call inherit-product-if-exists, $(QC_PROP_ROOT)/prebuilt_HY11/target/product/$(PREBUILT_BOARD_PLATFORM_DIR)/prebuilt.mk)
  $(call inherit-product-if-exists, $(QC_PROP_ROOT)/prebuilt_HY22/target/product/$(PREBUILT_BOARD_PLATFORM_DIR)/prebuilt.mk)

从源码中调用inherit-prouct-if-exists来引入prebuilt.mk,那如果判断不存在,也就不引入了。在这里我们看到引用了变量PREBUILT_BOARD_PLATFORM_DIR,这是在上面代码的if–elseif–else中获取的。is-board-platform判断当前的boardplatform是否匹配,而当前的boardplatform又是通过include device/qcom/$(TARGET_PRODUCT)/BoardConfig.mk引入。看到这里就发现了问题,原来这里目录指定为了device/qcom/…..,而我的product则是新建在了vendor/koko/下了,难怪找不到了。
按照源码中* *部分做了修改,重新编译烧录,顺利引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值