Could not find method问题解决
来源:互联网 发布:ubuntu 14.10 samba 编辑:程序博客网 时间:2024/05/22 05:09
有时候需要把代码制作成jar包放入到项目中,如果只是一个普通的java文件导入系统都是没有问题的,但是很有可能需要将service导出jar包到,由系统启动。
1.通常只需要修改SystemService.java,比如jar包为AutoService_v0.1.jar,把该文件拷贝到framework/base/services/java/目录下。
2.修改framework/base/services/java目录下的Android.mk文件,这样才会编译到系统,通常都是编译到services.java里面,这不是绝对的。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := AutoService:AutoService_v0.1.jar
include $(BUILD_MULTI_PREBUILT)
# the library
# ============================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(call all-subdir-java-files) \
com/android/server/EventLogTags.logtags \
com/android/server/am/EventLogTags.logtags
LOCAL_SRC_FILES += $(call all-Iaidl-files-under,com)
LOCAL_MODULE:= services
LOCAL_JAVA_LIBRARIES := android.policy conscrypt telephony-commonAutoService
include $(BUILD_JAVA_LIBRARY)
include $(BUILD_DROIDDOC)
3.启动autoservice,这时需要修改SystemService.java,修改如下。
4.最后是编译,我们可以用mmm方式进行编译,这样会节省编译时间。
mmm framework/base/services/java
mmm编译生成services.jar文件,把该文件push到机器的/system/framework目录下,重启机器。也许你会有很大的惊喜,也许会让你失望。不过没关系,办法总是有的。
5.下面来看看错误信息
D/SensorService( 2614): nuSensorService thread starting...
I/dalvikvm( 2614): Could not find method com.semisky.autoservice.services.AutoService.getInstance, referenced from method com.android.server.ServerThread.initAndLoop
W/dalvikvm( 2614): VFY: unable to resolve static method 14434: Lcom/semisky/autoservice/services/AutoService;.getInstance ()Lcom/semisky/autoservice/services/AutoService;
D/dalvikvm( 2614): VFY: replacing opcode 0x71 at 0x0753
I/installd( 2253): new connection
...
...
I/SystemServer( 2614): Print AutoService
W/SystemServer( 2614): ***********************************************
F/SystemServer( 2614): BOOT FAILURE starting AutoService
F/SystemServer( 2614): java.lang.NoClassDefFoundError: com.semisky.autoservice.services.AutoService
F/SystemServer( 2614): at com.android.server.ServerThread.initAndLoop(SystemServer.java:817)
F/SystemServer( 2614): at com.android.server.SystemServer.main(SystemServer.java:1191)
F/SystemServer( 2614): at java.lang.reflect.Method.invokeNative(Native Method)
F/SystemServer( 2614): at java.lang.reflect.Method.invoke(Method.java:515)
F/SystemServer( 2614): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
F/SystemServer( 2614): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
F/SystemServer( 2614): at dalvik.system.NativeStart.main(Native Method)
上面的错误信息让人头痛,从字面意思来看说是找不到com.semisky.autoservice.services.AutoService.getInstance方法,其实AutoService里面是有getInstance方法的。
6.解决办法
将Android.mk文件改成如下,重新编译push到机器上,解决此问题。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := AutoService:AutoService_v0.1.jar
include $(BUILD_MULTI_PREBUILT)
# the library
# ============================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(call all-subdir-java-files) \
com/android/server/EventLogTags.logtags \
com/android/server/am/EventLogTags.logtags
LOCAL_SRC_FILES += $(call all-Iaidl-files-under,com)
LOCAL_MODULE:= services
LOCAL_JAVA_LIBRARIES := android.policy conscrypt telephony-common
LOCAL_STATIC_JAVA_LIBRARIES := AutoService
include $(BUILD_JAVA_LIBRARY)
include $(BUILD_DROIDDOC)
0 0
- Could not find method问题解决
- Could not find method runProguard问题解决
- Could not find class '****', referenced from method #####
- Could not find class '****', referenced from method #####
- Could not find method compile() for arguments
- gradle could not find method compile()
- Could not find method compile() for arguments
- Could not find method android() for arguments
- Could not find method compile() for arguments
- Android Studio Could not find method runProguard()...
- runProguard false:Could not find method runProguard()
- 【bug】Could not find method compile() 解决
- Could not find method compile() for arguments
- Android.Could not find *.apk 问题解决
- Could not find .egg-info directory 问题解决
- Could not find jar tool executable问题解决
- could not find a non-generic method 错误修正
- 解决commons.CommonsLogger (CommonsLogger.java:45) Could not find method
- redis和spring整合
- 递归基础之放苹果
- 将一个非空目录的文件夹删除【Java文件编程】
- POJ 3254 Corn Fields(状态压缩)
- aa
- Could not find method问题解决
- c#禁止通过拖动,双击标题栏改变窗体大小
- 【redis】搭建集群遇到的问题
- 多个缓存配置找报错
- reactnative toast(ios 和android 通用)
- 二叉树1:递归二叉树的序列打印
- 生成模型和判别模型的区别
- 07-图4 哈利·波特的考试 (25分)
- 解决开启TCP/IP筛选,使用Serv-u 需要开放的端口