Necesito crear una biblioteca de Android que pueda incluir como jar en cualquier aplicación de Android. Uso NetBeans 6.8, el complemento nbandroid y el SDK de Android.¿Cómo puedo usar un contenedor externo en un proyecto de Android en NetBeans?
Los pasos que di hasta el momento son:
1) Crear el proyecto de la biblioteca, con android.jar incluido para tener acceso a las clases de Android (la biblioteca utiliza android.util.Log y otras clases de Android).
2) Compile la biblioteca como un contenedor.
3) Agregue el archivo jar de la biblioteca a la aplicación Android (haga clic con el botón derecho en Bibliotecas debajo del nodo del proyecto y agregue el contenedor).
4) Agregue < uses-library > al manifiesto de Android. (erróneo e innecesario)
El paso 3 al menos me permite hacer referencia a las clases de la biblioteca en el código fuente de la aplicación, pero las clases no parecen estar realmente incluidas en tiempo de compilación. Cuando ejecuto la aplicación, obtengo el siguiente error en el registro.
I/dalvikvm( 349): Could not find method mylibrarypackage.MyClass.myMethod, referenced from method myapplicationpackage.HomeActivity.onCreate
W/dalvikvm( 349): VFY: unable to resolve static method 985: Lmylibrarypackage/MyClass;.myMethod()V
D/dalvikvm( 349): VFY: replacing opcode 0x71 at 0x000a
D/dalvikvm( 349): Making a copy of Lmyapplicationpackage/HomeActivity;.onCreate code (160 bytes)
D/AndroidRuntime( 349): Shutting down VM
W/dalvikvm( 349): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
E/AndroidRuntime( 349): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 349): java.lang.NoClassDefFoundError: mylibrarypackage.MyClass
E/AndroidRuntime( 349): at myapplicationpackage.HomeActivity.onCreate(HomeActivity.java:58)
E/AndroidRuntime( 349): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 349): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
E/AndroidRuntime( 349): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
E/AndroidRuntime( 349): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
E/AndroidRuntime( 349): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
E/AndroidRuntime( 349): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 349): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 349): at android.app.ActivityThread.main(ActivityThread.java:4310)
E/AndroidRuntime( 349): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 349): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime( 349): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime( 349): at dalvik.system.NativeStart.main(Native Method)
¿Debo agregar la biblioteca a la ruta de compilación en otro lugar? ¿Me estoy perdiendo de algo?
No veo por qué sería diferente tampoco, pero el error en el registro parece indicar lo contrario, a menos que haya algo más que me falta. –
¡Entonces culpo al plugin NetBeans! ;) ¿Funciona si lo compila desde la línea de comando usando hormiga? Creo que, de forma predeterminada, el script de Android ant hace referencia a un directorio 'libs' para JAR incluidos. –