找不到指向 Parcelable 的运行时错误 NoClassDefFoundError
Runtime error NoClassDefFoundError pointing to Parcelable is not found
请帮我解决这个问题,我被困在这里,我的应用程序可以在更高版本的设备上运行,MOGO G3 和 Moto XPlay,但是当我在具有较低版本 (16) 的设备上测试时,它给我错误,即 NoClassDefFoundError .
这是我的 sdk 配置:
minSdkVersion 16
targetSdkVersion 22
这是 class,android 在运行时找不到:
public class CategoryParcel implements Parcelable{
private Long id;
private int icon;
private int category_resource;
private String categories;
private String note;
private Integer price;
private Integer quantity;
private String url;
public CategoryParcel(Parcel in){
id = in.readLong();
category_resource = in.readInt();
categories = in.readString();
note = in.readString();
price = in.readInt();
quantity = in.readInt();
icon = in.readInt();
url = in.readString();
}
public CategoryParcel(){}
public CategoryParcel(Long id, String categories, String note, int price, int quantity, int icon){
this.id = id;
this.categories = categories;
this.note = note;
this.price = price;
this.quantity = quantity;
this.icon = icon;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getCategory_resource() {
return category_resource;
}
public void setCategory_resource(int category_resource) {
this.category_resource = category_resource;
}
public String getCategories() {
return categories;
}
public void setCategories(String categories) {
this.categories = categories;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeLong(id);
parcel.writeInt(category_resource);
parcel.writeString(categories);
parcel.writeString(note);
parcel.writeInt(price);
parcel.writeInt(quantity);
parcel.writeInt(icon);
}
public static final Parcelable.Creator<CategoryParcel> CREATOR = new Parcelable.Creator<CategoryParcel>()
{
public CategoryParcel createFromParcel(Parcel in)
{
return new CategoryParcel(in);
}
public CategoryParcel[] newArray(int size)
{
return new CategoryParcel[size];
}
};
}
错误指向这一行:
public static final Parcelable.Creator CREATOR = new Parcelable.Creator()
如果你建议我可以分享更多细节。
我不知道我在这里做错了什么。
感谢阅读。
沙山克
我解决了这个问题,这与
有关
compile 'com.android.support:multidex:1.0.1'
最近Google 发布了此api 以支持较低版本的android。
三件事要检查:
- build.gradle
中的依赖项
{ compile 'com.android.support:multidex:1.0.1' }
- 在build.gradle
中加入defaultConfig
defaultConfig { multiDexEnabled true }
- 在AndroidManifest.xml文件中添加
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
在我的例子中,我忘了添加第 3 点。
现在它工作正常,并且适用于所有预期的设备。
谢谢,
沙尚克普拉塔普
请帮我解决这个问题,我被困在这里,我的应用程序可以在更高版本的设备上运行,MOGO G3 和 Moto XPlay,但是当我在具有较低版本 (16) 的设备上测试时,它给我错误,即 NoClassDefFoundError .
这是我的 sdk 配置:
minSdkVersion 16 targetSdkVersion 22
这是 class,android 在运行时找不到:
public class CategoryParcel implements Parcelable{
private Long id;
private int icon;
private int category_resource;
private String categories;
private String note;
private Integer price;
private Integer quantity;
private String url;
public CategoryParcel(Parcel in){
id = in.readLong();
category_resource = in.readInt();
categories = in.readString();
note = in.readString();
price = in.readInt();
quantity = in.readInt();
icon = in.readInt();
url = in.readString();
}
public CategoryParcel(){}
public CategoryParcel(Long id, String categories, String note, int price, int quantity, int icon){
this.id = id;
this.categories = categories;
this.note = note;
this.price = price;
this.quantity = quantity;
this.icon = icon;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getCategory_resource() {
return category_resource;
}
public void setCategory_resource(int category_resource) {
this.category_resource = category_resource;
}
public String getCategories() {
return categories;
}
public void setCategories(String categories) {
this.categories = categories;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeLong(id);
parcel.writeInt(category_resource);
parcel.writeString(categories);
parcel.writeString(note);
parcel.writeInt(price);
parcel.writeInt(quantity);
parcel.writeInt(icon);
}
public static final Parcelable.Creator<CategoryParcel> CREATOR = new Parcelable.Creator<CategoryParcel>()
{
public CategoryParcel createFromParcel(Parcel in)
{
return new CategoryParcel(in);
}
public CategoryParcel[] newArray(int size)
{
return new CategoryParcel[size];
}
};
}
错误指向这一行:
public static final Parcelable.Creator CREATOR = new Parcelable.Creator()
如果你建议我可以分享更多细节。 我不知道我在这里做错了什么。
感谢阅读。 沙山克
我解决了这个问题,这与
有关compile 'com.android.support:multidex:1.0.1'
最近Google 发布了此api 以支持较低版本的android。
三件事要检查:
- build.gradle 中的依赖项
{ compile 'com.android.support:multidex:1.0.1' }
- 在build.gradle 中加入defaultConfig
defaultConfig { multiDexEnabled true }
- 在AndroidManifest.xml文件中添加
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest>
在我的例子中,我忘了添加第 3 点。
现在它工作正常,并且适用于所有预期的设备。
谢谢, 沙尚克普拉塔普