I have a crash report from crashlytics.
Please see attached screenshots.
P.S.
Also I can’t remove already attached files. You will see duplicates.
I pressed cross icon → save button. but with no results
Hi Oleg,
Which version of Backendless Android SDK do you use?
compile 'com.backendless:backendless:3.0.15.1'
Please provide a self-contained sample which would reproduce this error. The crashlytics report doesn’t give us enough information about the conditions in which it happens.
Hey Sergey, I posted 2 different screenshots. One of them is crashlytics and second contains sample code.
bug appears at 66 line, please check it.
Also Ndevice class:
public class NDevice implements Serializable {
@SerializedName(Consts.ANDROID_ID)
public String android_id;
@SerializedName(Consts.GCM_TOKEN)
public String gcm_token;
@SerializedName(Consts.MODEL)
public String model;
@SerializedName(Consts.DIGIT_ID)
public String digit_id;
@SerializedName("objectId")
private String objectId;
@SerializedName("created")
private java.util.Date created;
@SerializedName("updated")
private java.util.Date updated;
public String androidId() {
return android_id;
}
public void setAndroId(String androidId) {
this.android_id = androidId;
}
public String gcmToken() {
return gcm_token;
}
public void setGcmToken(String gcmToken) {
this.gcm_token = gcmToken;
}
public String model() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public long digitId() {
long digitId = 0;
if (!TextUtils.isEmpty(digit_id))
digitId = Long.parseLong(digit_id);
return digitId;
}
public String getDigitId() {
return digit_id;
}
public void setDigitId(long digitId) {
if (digitId != Consts.NONE_LONG)
this.digit_id = String.valueOf(digitId);
}
/**
* Methods
*/
public NDevice create() {
android_id = TechUtil.getAndroidID();
model = TechUtil.getDeviceModel();
return this;
}
public boolean isNotEmpty() {
boolean isNotEmpty = gcm_token != null && android_id != null && digit_id != null;
return isNotEmpty;
}
public static NDevice update(NDevice device) {
device.setAndroId(NUser.i().device().androidId());
device.setGcmToken(NUser.i().device().gcmToken());
device.setModel(NUser.i().device().model());
device.setDigitId(NUser.i().device().digitId());
return device;
}
@Override
public int hashCode() {
return 31 * android_id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || !(obj instanceof NDevice))
return false;
NDevice device = (NDevice) obj;
return android_id.equalsIgnoreCase(device.android_id);
}
@Override
public String toString() {
return "NDevice{" +
"android_id='" + android_id + '\'' +
", gcm_token='" + gcm_token + '\'' +
", model='" + model + '\'' +
", digit_id='" + digit_id + '\'' +
", objectId='" + objectId + '\'' +
", created=" + created +
", updated=" + updated +
'}';
}
/**
* TODO IMPORTANT: Unused, but not delete, it's prevent duplicates
*/
public String getAndroid_id() {
return android_id;
}
public void setAndroid_id(String android_id) {
this.android_id = android_id;
}
public String getGcm_token() {
return gcm_token;
}
public void setGcm_token(String gcm_token) {
this.gcm_token = gcm_token;
}
public String getModel() {
return model;
}
public String getDigit_id() {
return digit_id;
}
public void setDigit_id(String digit_id) {
this.digit_id = digit_id;
}
public String getObjectId() {
return objectId;
}
public void setObjectId(String objectId) {
this.objectId = objectId;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
}
You need to know that it works for different users, but this crash appears for one user
When I wrote “self-contained” I meant that we could just download it and run, and then see the problem. You just sent your application’s code fragment, but it is neither can be run as-is, nor we can debug it for free due to the Support Policy.