android - editar - extraer classes dex
Dex Loader No se puede ejecutar la definiciĆ³n de varios archivos dex (17)
Bien, ahora estoy realmente atascado aquí. ¡No sé qué hacer, a dónde ir o NADA!
He estado intentando desinstalar, reinstalar, tanto las versiones de SDK como las de Eclipse, intentando buscar en Google, pero no ... ¡¡¡Nada !!!
PUEDO ejecutar mi aplicación en el emulador, pero no puedo EXPORTAR ...
[2011-10-07 16:35:30 - Dex Loader] No se puede ejecutar dex: Varios archivos dex definen Lcom / dreamhawk / kalori / DataBaseHelper;
esto es dataBaseHelper
package com.dreamhawk.kalori;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
public class DataBaseHelper extends SQLiteOpenHelper {
// The Android''s default system path of your application database.
private static String DB_PATH = "/data/data/com.dreamhawk.kalori/databases/";
private static String DB_NAME = "livsmedel_db";
private DataBaseHelper myDBHelper;
private SQLiteDatabase myDb;
private final Context myContext;
private static final String DATABASE_TABLE = "Livsmedel";
public static String DB_FILEPATH = "/data/data/com.dreamhawk.kalori/databases/lifemedel_db";
public static final String KEY_TITLE = "Namn";
public static final String KEY_BODY = "Kcal";
public static final String KEY_ROWID = "_id";
private static final int DATABASE_VERSION = 2;
/**
* Constructor Takes and keeps a reference of the passed context in order to
* access to the application assets and resources.
*
* @param context
*/
public DataBaseHelper(Context context) {
super(context, DB_NAME, null, 1);
this.myContext = context;
// checking database and open it if exists
if (checkDataBase()) {
openDataBase();
} else {
try {
this.getReadableDatabase();
createDatabase();
this.close();
openDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
Toast.makeText(context, "Livsmedelsdatabasen importerad",
Toast.LENGTH_LONG).show();
}
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
boolean exist = false;
try {
String dbPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(dbPath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
Log.v("db log", "database does''t exist");
}
if (checkDB != null) {
exist = true;
checkDB.close();
}
return exist;
}
@Override
public void onCreate(SQLiteDatabase db) {
// db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("Kalori", "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS Livsmedel");
onCreate(db);
}
public DataBaseHelper open() throws SQLException {
myDBHelper = new DataBaseHelper(myContext);
myDb = myDBHelper.getWritableDatabase();
return this;
}
public void createDatabase() throws IOException {
InputStream assetsDB = myContext.getAssets().open("livsmedel_db");
// OutputStream dbOut = new FileOutputStream(DB_PATH);
String outFileName = DB_PATH + DB_NAME;
OutputStream dbOut = new FileOutputStream(outFileName);
Log.d("DH", "index=" + assetsDB);
byte[] buffer = new byte[1024];
int length;
while ((length = assetsDB.read(buffer)) > 0) {
dbOut.write(buffer, 0, length);
}
dbOut.flush();
dbOut.close();
assetsDB.close();
}
public Cursor fetchAllNotes() {
return myDb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,
KEY_BODY }, null, null, null, null, null);
}
public void openDataBase() throws SQLException {
String dbPath = DB_PATH + DB_NAME;
myDb = SQLiteDatabase.openDatabase(dbPath, null,
SQLiteDatabase.OPEN_READWRITE);
}
}
Sospecho:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
Pero no sé qué hacer ... Por favor ayuda !!! : ''(
- Reiniciar eclipse,
- Eliminar carpeta bin & gen y
- Finalmente limpie el proyecto y vuelva a construirlo.
Esto funcionó para mí .. :)
Actualicé eclipse ( Help->Check
actualizaciones) hoy ( 21 de octubre de 2011 ) y ahora no veo el error. Antes tenía el error " Unable to execute dex: Multiple dex files define
". Espero que esto ayude.
En Cordova, en la carpeta libs hay un archivo que configuramos en la ruta de compilación. He actualizado Cordova y actualizo el archivo jar pero olvido eliminar el archivo jar antiguo en la carpeta libs. ¡Retiré el viejo y el proyecto funcionó a la perfección!
En mi caso había dos archivos jars diferentes incluidos en la carpeta libs.
He eliminado uno de ellos para solucionar mi problema.
Hay un archivo en bin / dexedLibs El mismo archivo existe en libs
Bórralo en libs y debería funcionar.
Para mi fue el android-support-v4.jar.
Espero que esto ayude
Intente seguir los pasos: Deshabilite la opción "Proyecto-> Crear automáticamente", luego "Limpiar" y "Construir" del proyecto, luego intente ejecutar. funciona para mi. puede poner la opción "Crear automáticamente" en On
Me sucedió esto cuando tuve dos copias de la misma biblioteca (tuve dos revisiones diferentes de la biblioteca de soporte para Android versión 4). Una vez que eliminé uno de ellos, el proyecto se compiló y pude ejecutarlo. Dan
Ninguna de las sugerencias aquí me lo resolvieron. Así fue como lo arreglé:
Dentro del archivo /proj.android/jni/Application.mk en la tercera línea, estaba especificando construir en "mips". Cambié esto a APP_ABI: = armeabi-v7a para que pueda encontrar correctamente todas las bibliotecas pre-compiladas.
Para mí, estaba usando Android Studio cuando llegué a este problema, estaba usando los SDK externos de Google Admob and Analytics.
Ahora los están enviando con el kitkat SDK, que causó el conflicto, la solución fue abrir el archivo project.iml y eliminar las siguientes líneas:
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$USER_HOME$/Downloads/Ads/lib/amazon-ads-4.0.9.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$USER_HOME$/Downloads/Folx/application/GoogleAdMobAdsSdk-6.2.1/Add-ons/googleanalyticsandroid/libGoogleAnalyticsV2.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
Espero que te ayude, cuídate ..
Problema resuelto.
Antes de actualizar, tenía 3 proyectos de Android: App1, App2 y Lib. Lib es un proyecto de la biblioteca de Android y App1 y App2 lo usan.
Después de actualizar tanto ADT como SDK vi errores como
[2012-12-05 15:54:10 - Dex Loader] Unable to execute dex: Multiple dex files define Lxxx;
[2012-12-05 15:54:10 - TrailGuide] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lxxx;
La solución fue eliminar, tanto en App1 como en App2, la carpeta llamada "Lib_src".
Se corrigió eliminando bibliotecas de terceros de la carpeta libs.
Inicialmente traté de construir los frascos de ActionBarSherlock y MenuDrawer usando ant, pero no funcionó.
Eliminar estos archivos jar del directorio libs solucionó el error
Se corrigió siguiendo simples pasos.
- clic derecho proyecto
- ir a propiedades
- haga clic en Java Build Path
- en la pestaña ''ordenar y exportar'', desmarque los archivos jar y las bibliotecas de dependencias
- Proyecto reconstruido.
Se eliminó la carpeta Libs en el proyecto, la nueva carpeta Lib_src, vuelva a importar el archivo jar. y haga clic con el botón derecho en proyecto -> Crear ruta -> Config. Crear ruta, seleccione la carpeta Libs y haga clic en Eliminar, haga clic en el botón Agregar carpeta -> seleccione Lib_src -> Aceptar
Si está importando un jar de soporte desde otro proyecto, debe ir a * Java Build Path * en ''ordenar y exportar'', haga clic en el jar de soporte y colóquelo sobre el proyecto reconstruido de dependencias.
También estaba viendo el mensaje "Definir múltiples archivos dex". Después de leer sobre algunos de los cambios en R14 , borré el directorio bin de mi proyecto, limpié y reconstruí el proyecto como se describe en @abbandon arriba y reinicié Eclipse. Estos pasos despejaron el problema para mí.
Tanto la biblioteca como los proyectos de la aplicación contienen el mismo archivo DataBaseHelper.java. Simplemente exclúyalo del proyecto de la aplicación.
WOW finalmente ...
Este error fue bastante espantoso. Lo que finalmente hice fue descargar la última versión de Eclipse Java EE, luego instalé el complemento ADT en el nuevo Eclipse. Consulte Instalación del complemento Eclipse .
Después, configuré mi proyecto como de costumbre y utilicé las pautas de exportación que se encuentran aquí: Firmar sus aplicaciones
Pero de todas formas he visto muchas respuestas ... y el problema real es extremadamente difícil de diagnosticar. La posibilidad es que el problema radique en la incompatibilidad entre el complemento ADT y el IDE de Eclipse. Solo sé que usar las versiones más recientes hará que las cosas funcionen (a partir del 5 de septiembre de 2012).