2012-03-23 6 views
9

me parece que tienen un problema complicado ya que la última actualización de ADT para liberar 17.tema Jar-archivo con ADT r17

he hecho una sencilla aplicación para ilustrar mi problema, no sé si estoy haciendo algo mal. La Actividad principal de mi aplicación hereda de FragmentActivity en el paquete de soporte y de alguna manera la aplicación falla al iniciarse.

Para ilustrar, realicé un proyecto de muestra.

En primer lugar, aquí está el código de mi clase ficticia, DummyProjectActivity, muy simple:

public class DummyProjectActivity extends FragmentActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

Entonces, no es el manifiesto:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="be.emich.labs" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="8" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".DummyProjectActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

El archivo .jar es importado correctamente en el proyecto y estoy obteniendo este rastro de pila:

E/AndroidRuntime(11509): FATAL EXCEPTION: main 
E/AndroidRuntime(11509): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{be.emich.labs/be.emich.labs.DummyProjectActivity}: java.lang.ClassNotFoundException: be.emich.labs.DummyProjectActivity 
E/AndroidRuntime(11509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879) 
E/AndroidRuntime(11509): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
E/AndroidRuntime(11509): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
E/AndroidRuntime(11509): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
E/AndroidRuntime(11509): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(11509): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(11509): at android.app.ActivityThread.main(ActivityThread.java:4340) 
E/AndroidRuntime(11509): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(11509): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(11509): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(11509): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(11509): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(11509): Caused by: java.lang.ClassNotFoundException: be.emich.labs.DummyProjectActivity 
E/AndroidRuntime(11509): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
E/AndroidRuntime(11509): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
E/AndroidRuntime(11509): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
E/AndroidRuntime(11509): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
E/AndroidRuntime(11509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870) 
E/AndroidRuntime(11509): ... 11 more 

¿Qué estoy haciendo mal aquí? ¿Podría ser esto un error en las últimas herramientas de desarrollo?

Me encuentro con el problema en cada proyecto que utiliza FragmentActivity de la biblioteca de compatibilidad. No entiendo lo que podría estar mal. ¿Alguien más tiene este problema? La ayuda sería muy apreciada. No estoy teniendo el problema con una actividad que hereda de FragmentActivity. He desinstalado/reinstalado la aplicación. Hecho varios "proyectos limpios". Reinició Eclipse.

ACTUALIZACIÓN: Aparentemente, el problema no está relacionado con el paquete de compatibilidad sino con la forma en que ADT r17 maneja la vinculación de los archivos jar. Los frascos que se incluirán se deben colocar en la carpeta libs/y ADT los vinculará automáticamente. De lo contrario, faltarán en el APK y harán que la aplicación falle cada vez que se invoque el código del fichero jar.

+0

Voy a tratar de importar las fuentes en lugar del archivo .jar. Veamos si eso cambia algo. Tal vez hay un problema con el archivo .jar. – eMich

+0

Por curiosidad, en su salida de registro anterior, ¿dijo "VFY: no se puede encontrar la clase a la que se hace referencia en la firma" antes de la excepción? – jfritz42

Respuesta

6

Hasta las herramientas de última versión, haga clic derecho> Agregar paquete de compatibilidad en mi proyecto no funcionaba e incluí el archivo jar manualmente a través de las propiedades del proyecto. Intenté "Agregar paquete de compatibilidad" nuevamente y desde r17 parece que esto está arreglado para mi máquina. Esto solucionó el problema.

+2

Mis archivos jar solían estar en una carpeta llamada "lib" y no estaban incluidos en el APK por algún motivo. Moviéndolos a libs los vinculó automáticamente con ADT r17, y esto solucionó el problema. – eMich