0

私は、最初に他の誰かによって作成された Android アプリに取り組んでいます。このアプリは、GreenDao 2.0.0 を使用して API からのオブジェクトを保存しています。一部のデバイス (Nexus 5 など) ではすべて正常に動作しますが、何らかの理由で、Android 4.2 および 4.4 デバイスでは動作しません。コードはコンパイルされますが、アプリを起動しようとするとクラッシュし、次のエラーが発生します。

11-04 16:26:35.951 6614-6614/com.myeggbox E/AndroidRuntime: 致命的な例外: メイン 11-04 16:26:35.951 6614-6614/com.myeggbox E/AndroidRuntime: プロセス: com.myeggbox、PID: 6614 **11-04 16:26:35.951 6614-6614/com.myeggbox E/AndroidRuntime: java.lang.NoClassDefFoundError: com.myeggbox.api.data.entity.AddressDao

私は以前にGreenDaoを使用したことがないので、誰かが何か考えを持っているなら、私は迷っています...私のbuild.gradleでは、targetSdkは22で、minSdkVersionは16です.これは私のEntityGenerator.javaです:

public static void main(String[] args) throws Exception {
    Schema schema = new Schema(4, "com.myeggbox.api.data.entity");
    schema.enableKeepSectionsByDefault();

    //on init les Entity puis on les maps
    createEntities(schema);
    mapEntities();
    addRelationShip();

    new DaoGenerator().generateAll(schema, "../app/src/main/java/");
}

/*
** Init
 */
private static void createEntities(final Schema schema) {
    address = schema.addEntity("Address");
    brand = schema.addEntity("Brand");
    category = schema.addEntity("Category");
    code = schema.addEntity("Code");
    document = schema.addEntity("Document");
    egg = schema.addEntity("Egg");
    product = schema.addEntity("Product");
    review = schema.addEntity("Review");
    service = schema.addEntity("Service");
    user = schema.addEntity("User");
    store = schema.addEntity("Store");
}

private static void mapEntities() {
    addEgg();
    addCategory();
    addCode();
    addDocument();
    addProduct();
    addStore();
    addBrand();
    addService();
    addAddress();
    addReview();
    addUser();
}

private static void addRelationShip() {
    //egg <-> user
    Property egg_user_id = egg.addLongProperty("user_id").getProperty();
    egg.addToOne(user, egg_user_id).setName("userDb");//liaison vers l'utilisateur
    user.addToMany(egg, egg_user_id).setName("eggListDb");//liaison inverse

    //egg <-> product
    Property egg_product_id = egg.addLongProperty("product_id").getProperty();
    egg.addToOne(product, egg_product_id).setName("productDb");//liaison vers le product
    product.addToMany(egg, egg_product_id).setName("eggListDb");//liaison inverse

    //code <-> egg
    Property code_egg_id = code.addLongProperty("egg_id_db").getProperty();
    code.addToOne(egg, code_egg_id).setName("eggDb");//liaison du code vers l'egg
    egg.addToMany(code, code_egg_id).setName("codeListDb");//liaison inverse

    //code <-> user
    Property code_user_id = code.addLongProperty("user_id").getProperty();
    code.addToOne(user, code_user_id).setName("userDb");
    user.addToMany(code, code_user_id).setName("codeListDb");

    //documents <-> egg
    Property doc_egg_id = document.addLongProperty("egg_id").getProperty();
    document.addToOne(egg, doc_egg_id).setName("eggDb");//liaison vers l'egg
    egg.addToMany(document, doc_egg_id).setName("documentListDb");//liaison inverse

    //egg <-> store
    Property egg_store_id = egg.addLongProperty("store_id").getProperty();
    egg.addToOne(store, egg_store_id).setName("storeDb");//relation vers l'egg
    store.addToMany(egg, egg_store_id).setName("eggListDb");//relation inverse

    //product <-> brand
    Property product_brand_id = product.addLongProperty("brand_id").getProperty();
    product.addToOne(brand, product_brand_id).setName("brandDb");//liaison vers le product
    brand.addToMany(product, product_brand_id).setName("productListDb");//liaison inverse

    //product <-> category
    Property product_category_id = product.addLongProperty("category_id").getProperty();
    product.addToOne(category, product_category_id).setName("categoryDb");//liaison vers la category
    category.addToMany(product, product_category_id).setName("productListDb");//liaison inverse

    //service <-> egg
    Property service_egg_id = service.addLongProperty("egg_local_id").getProperty();
    service.addToOne(egg, service_egg_id);//relation vers l'egg
    egg.addToMany(service, service_egg_id).setName("serviceListDb");//relation inverse

    //review <-> product
    Property review_product_id = review.addLongProperty("product_id").getProperty();
    review.addToOne(product, review_product_id).setName("productDB");//liaison vers le product
    product.addToMany(review, review_product_id).setName("reviewListDb");//liaison inverse

    //address <-> user
    Property address_user_id = address.addLongProperty("user_id").getProperty();
    address.addToOne(user, address_user_id).setName("userDB");//liaison vers le user
    user.addToMany(address, address_user_id).setName("addressListDb");//liaison inverse
}

/*
** Maping des modéles
 */
private static void addEgg() {
    egg.implementsInterface("Serializable", "Comparable<Egg>");
    egg.addLongProperty("localId").primaryKey().autoincrement();
    egg.addStringProperty("buying_date");
    egg.addLongProperty("id");
    egg.addStringProperty("picture");
    egg.addIntProperty("warranty_duration");
    egg.addStringProperty("created_at");
    egg.addStringProperty("localPicture");
}

private static void addCode() {
    code.implementsInterface("Serializable");
    code.addLongProperty("localId").primaryKey().autoincrement();
    code.addLongProperty("id");
    code.addStringProperty("digest");
}

private static void addDocument() {
    document.implementsInterface("Serializable");
    document.addLongProperty("localId").primaryKey().autoincrement();
    document.addStringProperty("content");
    document.addStringProperty("created_at");
    document.addLongProperty("id");
    document.addStringProperty("picture");
    document.addStringProperty("preview");
    document.addStringProperty("title");
    document.addStringProperty("UUID");
    document.addStringProperty("updated_at");
    document.addStringProperty("localPath");
    document.addStringProperty("type");
}

private static void addStore() {
    store.implementsInterface("Serializable");
    store.addLongProperty("localId").primaryKey().autoincrement();
    store.addLongProperty("id");
    store.addStringProperty("name");
    store.addStringProperty("phone");
    store.addStringProperty("email");
    store.addStringProperty("website");
    store.addStringProperty("street_name");
    store.addStringProperty("city");
    store.addStringProperty("zip_code");
    store.addStringProperty("country");
    store.addStringProperty("facebook_url");
    store.addStringProperty("logo");
    store.addStringProperty("latitude");
    store.addStringProperty("longitude");
}

private static void addProduct() {
    product.implementsInterface("Serializable");
    product.addLongProperty("localId").primaryKey().autoincrement();
    product.addLongProperty("id");
    product.addStringProperty("name");
    product.addStringProperty("picture");
    product.addStringProperty("ean");
}

private static void addBrand() {
    brand.implementsInterface("Serializable");
    brand.addLongProperty("localId").primaryKey().autoincrement();
    brand.addLongProperty("id");
    brand.addStringProperty("name");
}

private static void addCategory() {
    category.implementsInterface("Serializable");
    category.addLongProperty("localId").primaryKey().autoincrement();
    category.addLongProperty("id");
    category.addStringProperty("image");
    category.addStringProperty("name");
}

private static void addService() {
    service.implementsInterface("Serializable");
    service.addLongProperty("localId").primaryKey().autoincrement();
    service.addLongProperty("id");
    service.addStringProperty("kind");
    service.addStringProperty("phone");
    service.addStringProperty("title");
    service.addStringProperty("web_url");
    service.addStringProperty("local_path");
}

private static void addUser() {
    user.implementsInterface("Serializable");
    user.addLongProperty("localId").primaryKey().autoincrement();
    user.addStringProperty("id");
    user.addStringProperty("email");
    user.addStringProperty("authentication_token");
}

private static void addAddress() {
    address.implementsInterface("Serializable");
    address.addLongProperty("localId").primaryKey().autoincrement();
    address.addStringProperty("city");
    address.addStringProperty("country");
    address.addStringProperty("firstname");
    address.addLongProperty("id");
    address.addStringProperty("lastname");
    address.addStringProperty("street_name");
    address.addStringProperty("zip_code");
}

private static void addReview() {
    review.implementsInterface("Serializable");
    review.addLongProperty("localId").primaryKey().autoincrement();
    review.addStringProperty("content");
    review.addStringProperty("created_at");
    review.addLongProperty("id");
    review.addStringProperty("locale");
    review.addIntProperty("rate");
    review.addStringProperty("title");
    review.addStringProperty("upload_at");
    review.addIntProperty("user_id");
}

}

ご協力いただきありがとうございます !

4

1 に答える 1

1

これは Android クラスではないため、Android の一部として実行することはできません。

  1. このクラスを通常の Java ファイル ( $javac EntityGenerator.java など) としてコンパイルする必要があります。
  2. 次に、クラス $java EntityGenerator を実行します。終了したら、../app/src/main/java/ ディレクトリを確認します。データベースにアクセスするための Dao 生成ファイルがそこにあるはずです。
于 2015-11-19T14:15:54.143 に答える