Tôi đang gặp sự cố với ứng dụng tôi đang tạo. Về cơ bản các ứng dụng sẽ sụp đổ lần đầu tiên bạn cố gắng để mở nó và sau đó nó sẽ được alright sau đó. Phần khó hiểu là nó chỉ xảy ra khi bạn tải xuống ứng dụng từ Google Play. Nếu tôi tải ứng dụng trên điện thoại của mình trực tiếp từ Android Studio, tôi không gặp bất kỳ lỗi nào.RuntimeException khi tải ứng dụng chỉ trong bản phát hành sản xuất
java.lang.RuntimeException:
at android.app.ActivityThread.handleReceiver (ActivityThread.java:3290)
at android.app.ActivityThread.-wrap20 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1715)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6682)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
at android.app.ActivityThread.handleReceiver (ActivityThread.java:3285)
Sau khi nghiên cứu vấn đề này, tôi đã tìm thấy mọi người nói để xóa bộ nhớ cache của thiết bị. Điều này đã khắc phục vấn đề ... nhưng điều đó chỉ xóa sạch ứng dụng và nó hoạt động tốt từ đó trở đi. Cài đặt ban đầu vẫn bị treo. Điều này đã xảy ra trên nhiều thiết bị nhưng tôi không thể tái tạo nó khi đang gỡ lỗi. Suy nghĩ duy nhất của tôi là tôi có mã này trong onCreate() ngay sau khi tôi gọi setContentView().
Intent intent = new Intent(this, NotificationListener.class);
startService(intent);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
NotificationListener.class extends NotificationListenerService. Tất cả mọi thứ hoạt động tuyệt vời ngoại trừ khởi chạy ban đầu.
CẬP NHẬT
Sau đây là cách tôi đặt dịch vụ trong AndroidManifest:
<service android:name=".NotificationListener"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
Đây là một phiên bản đơn giản của NotificationListenerService tôi:
public class NotificationListener extends NotificationListenerService
{
private IBinder mBinder = new LocalBinder();
@Override
public void onNotificationPosted(StatusBarNotification sbn)
{
super.onNotificationPosted(sbn);
// custom code
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn)
{
super.onNotificationRemoved(sbn);
}
@Override
public IBinder onBind(Intent intent)
{
if (SERVICE_INTERFACE.equals(intent.getAction()))
return super.onBind(intent);
else return mBinder;
}
public class LocalBinder extends Binder
{
public NotificationListener getService()
{
return NotificationListener.this;
}
}
}
Đây là ServiceConnection cho the Binder:
private ServiceConnection serviceConnection = new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder)
{
NotificationListener.LocalBinder localBinder = (NotificationListener.LocalBinder) iBinder;
notificationListener = localBinder.getService();
bound = true;
// code to call custom function in NotificationListener class
}
@Override
public void onServiceDisconnected(ComponentName componentName)
{
notificationListener = null;
bound = false;
}
};
Tôi biết điều này phải là một vấn đề với sự ràng buộc của dịch vụ bởi vì nếu tôi loại bỏ tất cả các mã ràng buộc và chỉ bắt đầu dịch vụ, mọi thứ đều chạy như nó cần. Đó là chỉ khi tôi thêm mã ràng buộc mà tôi nhận được lỗi này.
Bạn có thể thử tạo tập tin apk mà không cần proguard nếu bạn làm như vậy? – kimkevin
@KimKevin Điều đó có liên quan đến việc xóa mục nhập Nếu vậy, tôi đã gỡ bỏ nó và tải lên một phiên bản beta của ứng dụng của tôi và vẫn gặp lỗi tương tự khi khởi chạy – saboehnke
vâng, nó đã được cài đặt là minifyEnabled là false hoặc do ClassNotFoundException xảy ra ... bạn đã đăng ký chưa NotificationListenerService cho AndroidMani fest.xml? – kimkevin