2012-06-21 32 views
7

Trong ứng dụng của tôi, tôi sử dụng MessageDigest.getInstance("SHA-1") để nhận SHA1, nó có thể chạy thành công trong android 2.3, nhưng nó không thể chạy trong android 4.0 và nó sẽ hiển thị ngoại lệ dưới đây:java.lang.NoClassDefFoundError: android.security.MessageDigest

FATAL EXCEPTION: main 
java.lang.NoClassDefFoundError: android.security.MessageDigest 
at com.screenshare.email.Utility.getConsistentDeviceId(Utility.java:597) 
at com.screenshare.exchange.SyncManager.getDeviceIdInternal(SyncManager.java:1079) 
at com.screenshare.exchange.SyncManager.getDeviceId(SyncManager.java:1045) 
at com.screenshare.exchange.SyncManager.onCreate(SyncManager.java:1813) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2253) 
at android.app.ActivityThread.access$1600(ActivityThread.java:123) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 

Ai có thể giải thích trường hợp này?

Trả lời

9

Từ reading around googlegroups có vẻ như android.security.MessageDigest đã bị xóa trong Honeycomb. Rất tiếc, tôi chưa tìm thấy bằng chứng về điều này trong tài liệu dành cho nhà phát triển Android.

Hãy thử sử dụng java.security.MessageDigest để thay thế.

+0

Cảm ơn bạn đã trả lời. Giải pháp là đúng, nó có thể làm cho ứng dụng của tôi chạy thành công trong 4.0 sau khi thay đổi thành "java.security.MessageDigest". – Judy

+1

bạn sẽ thay đổi điều đó như thế nào nếu nó nằm trong Google Add on SDK? – Mikey

Các vấn đề liên quan