2010-02-01 12 views
11

Mi pregunta se refiere al uso de aidl.exe (en un sistema Windows) desde la línea de comandos. Esta pregunta no tiene nada que ver con Eclipse, Netbeans, etc.¿Cómo uso la herramienta AIDL desde la línea de comandos usando el código de muestra SDK?

Se incluye con el SDK de Android son los siguientes tres archivos de definición de AIDL:

IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl

ubicados en el siguiente directorio:

C: \ android-sdk-windows \ plataformas \ android-2.1 \ samples \ ApiDemos \ src \ com \ ejemplo \ API \ android \ app

En aras de la simplicidad, copié aidl.exe en el directorio anterior. Entonces, desde una ventana de la consola, he utilizado con éxito los siguientes dos comandos para generar archivos .java:

C: \ Android-Project \ ApiDemos \ src \ com \ ejemplo \ androide \ API \ app> AIDL IRemoteServiceCallback.aidl C: \ Android-project \ ApiDemos \ src \ com \ example \ android \ apis \ app> aidl ISecondary.aidl

Al invocar estos comandos se producen los archivos IRemoteServiceCallback.java e ISecondary.java, respectivamente. Hasta aquí todo bien.

Noto que ambos archivos .aidl son simples; no incluyen declaraciones de 'importación'.

El archivo .aidl restante, IRemoteService.aidl, Qué incluye el siguiente declaración de importación en la línea 19: com.example.android.apis.app.IRemoteServiceCallback

importación;

El problema surge cuando se ejecuta la herramienta AIDL en este archivo:

C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl IRemoteService.aidl 

Si lo hace, el siguiente mensaje de error que se debe imprimir en la ventana de la consola:

IRemoteService.aidl: 19: couldn 't encuentra importación para la clase com.example.android.apis.app.IRemoteServiceCallback

La herramienta AIDL evidentemente no pudo encontrar el archivo IRemoteServiceCallback.aidl en el mismo directorio en el que se estaba ejecutando. De acuerdo con el mensaje "uso" de la herramienta AIDL, hay un comando que al parecer se puede utilizar para resolver este problema:

-I<DIR> search path for import statements. 

El problema: no he sido capaz de especificar -I de tal manera que se evite el mensaje de error y hacer que la herramienta AIDL genere un archivo .java del archivo .aidl con una instrucción 'import'. (Nota: He definido la variable de entorno 'camino' de Windows al directorio actual.) Aquí hay algunas variaciones que he probado:

-Ic:\com\example\android\apis\app 
-Ic:/com/example/android/apis/app 
-I.\ 
-I. 

Debo estar perdiendo algo simple. Sorprendentemente, aunque he visto variaciones de esta pregunta publicadas en varios lugares, todavía tengo que ver una respuesta o cualquier documentación sobre el uso de la línea de comandos de AIDL (que no sea la información de USO de aidl.exe). Puede alguien ponerme al tanto?

Gracias, Matt

Respuesta

11

Encontré la solución: debe proporcionar la ruta de la carpeta a los archivos fuente, pero SIN la ruta después de la carpeta base src. Así que, en su caso, el comando correcto es: C: \ Android-project \ ApiDemos \ src \ com \ example \ android \ apis \ app> aidl -IC: \ Android-project \ ApiDemos \ src \ IRemoteService.aidl

+0

Creo que este es el único lugar en Internet que está documentado. Gracias, eres un héroe. – benkc

3

Como usted menciona, no hay mucha documentación.

Así que si habilita detallado construir la salida en Eclipse (bajo Ventana> Preferencias> Android> Crear, creo), se puede ver en la Consola de lo que manda, incluyendo aidl y aapt, se ejecuta cuando el plugin para Eclipse hace una acumulación .

Alternativamente, si puede entender C, puede consultar el código fuente de la ayuda en el AOSP.

+0

Mmmmm, verbosa construye - mucho mejor. Gracias, Christopher – JohnnyLambada

Cuestiones relacionadas