Tengo dos proyectos de Android, un 'proyecto de biblioteca' que contiene un diseño personalizado y un 'proyecto de aplicación' que contiene una aplicación que usa el diseño.Especificación de dependencias de proyectos de Android (en Eclipse)
Todo parece construir y ejecutar bien, excepto que el editor de diseño visual arroja una ClassNotFoundException (que supongo que es un error en el complemento), pero cuando trato de comenzar a hacer uso de los atributos que definí para el diseño personalizado en el xml, ya no puedo construir. Es decir; esto funciona:
<?xml version="1.0" encoding="utf-8"?>
<se.fnord.android.layout.PredicateLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdfasdf"
/>
</se.fnord.android.layout.PredicateLayout>
Considerando que el presente no:
<?xml version="1.0" encoding="utf-8"?>
<se.fnord.android.layout.PredicateLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fnord="http://schemas.android.com/apk/res/se.fnord.android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
fnord:layout_horizontalSpacing="1px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdfasdf"
/>
</se.fnord.android.layout.PredicateLayout>
La generación falla con un mensaje de aapt:
ERROR Sin identificador de recursos encontrado para el atributo 'layout_horizontalSpacing' en el paquete ' se.fnord.android '
El identificador de recursos hace ex está en el archivo R y attrs.xml contenía el proyecto de la biblioteca, y si pongo el código de diseño y los recursos directamente en el proyecto de la aplicación todo funciona bien. El atributo layout_horizontalSpacing (y layout_verticalSpacing) es un atributo personalizado utilizado en la clase PredicateLayout.LayoutParam para especificar la distancia al siguiente widget.
Hasta ahora he intentado las formas de eclipse estándar especificando las referencias del proyecto y las dependencias del proyecto de ruta de compilación. También me dijeron que probara la etiqueta en el manifiesto de la aplicación, lo que no ayudó.
Entonces, ¿qué debo hacer para que las referencias en el archivo xml funcionen?
No sé si es relevante, pero manifiesta la 'biblioteca' se ve así:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.fnord.android"
android:versionCode="1" android:versionName="1.0.0">
</manifest>
La 'aplicación' manifestarse como esto:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.fnord.appname"
android:versionCode="1" android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AppName"
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>
(La 'PredicateLayout' , por cierto, es una versión limpiada de this).
Véase también http://stackoverflow.com/questions/8581627/android-activity-under-eclipse-adt-with-project-dependencies-failed-resolving-x http://stackoverflow.com/questions/9838069/ jar-file-issue-with-adt-r17 – jfritz42