2014-12-10 19 views
5

Tôi đang sử dụng activeandroid trong ứng dụng Android của mình.Cố gắng gọi phương thức ảo 'java.lang.Class java.lang.reflect.Field.getType()' trên tham chiếu đối tượng null

Mọi thứ hoạt động tốt khi chạy bản dựng gỡ lỗi trong khi phát triển. Sau khi tạo bản phát hành dự án của tôi, ứng dụng hiện đang gặp sự cố. Điều này xảy ra trên Nexus5 với Android 5.0 cũng như trên Nexus 7 với Android 4.4.2.

Đây là mã nguồn nếu bạn cần xem!
https://github.com/MetalMatze/Krautreporter

Cảm ơn!

java.lang.RuntimeException: Unable to create application com.activeandroid.app.Application: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.reflect.Field.getType()' on a null object reference 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4521) 
at android.app.ActivityThread.access$1500(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1339) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5221) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.reflect.Field.getType()' on a null object reference 
at com.activeandroid.e.f.c(Unknown Source) 
at com.activeandroid.e.f.c(Unknown Source) 
at com.activeandroid.f.c(Unknown Source) 
at com.activeandroid.f.onCreate(Unknown Source) 
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251) 
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 
at com.activeandroid.b.b(Unknown Source) 
at com.activeandroid.b.a(Unknown Source) 
at com.activeandroid.a.a(Unknown Source) 
at com.activeandroid.a.a(Unknown Source) 
at com.activeandroid.a.a(Unknown Source) 
at com.activeandroid.app.Application.onCreate(Unknown Source) 
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4518) 
... 9 more 

Trả lời

2

Bạn sử dụng phản chiếu để tìm trường theo tên của nó. Bản phát hành bản phát hành của bạn bị Proguard thu hẹp lại để đổi tên các trường thành nội dung ngắn và ít người biết đến. Bạn cần thêm ngoại lệ cho Proguard để giữ cho các tên trường bạn truy cập bằng cách sử dụng sự phản chiếu.

Có đã là một câu trả lời về cách giữ cho các lĩnh vực trong toàn bộ hoặc một số lớp học ở đây: https://stackoverflow.com/a/23365501/2444099

+2

Bạn đã đúng. Cảm ơn! Với quy tắc bảo vệ này tôi đã nhận được: https://github.com/rejasupotaro/Rebuild/blob/5246f6549fd854207c28d7b8179680034f81cbd9/Rebuild/proguard-release.txt#L68 –

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

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