Не можете использовать файлы .aidl в проектах библиотек?

В духе повторного использования кода я пытаюсь создать несколько библиотечных проектов. Однако я, похоже, столкнулся с проблемой определения файлов .aidl, которые охватывают библиотеки. Вот проблема:

В библиотеке A у меня есть Foo.java и Foo.aidl. Foo.java является Parcelable, поэтому объявление helpl:

Foo.aidl:

package com.example.library.A;
parcelable Foo;

Теперь я пытаюсь создать библиотеку B. В библиотеке B я хочу определить интерфейс службы, который использует класс Foo:

IMyService.aidl:

package com.example.library.B;
import com.example.library.A.Foo;

interface IMyService {
    void requestSomething(in Foo fooBug);
}

Этот файл не компилируется, жалуясь, что не может найти импорт для Foo. Я пробовал ссылаться на библиотеку A и пытался добавить проект библиотеки в качестве внешнего банка, но ни один из них не работает.

Есть ли ограничения, о которых я не знаю? Я делаю что-то не так с настройкой моего проекта ??

Вероятно, я должен упомянуть, что я без проблем использовал библиотеку A непосредственно в проекте, поэтому я уверен, что проблема не в библиотеке A.


person jsmith    schedule 14.02.2012    source источник
comment
Это отлично работает для меня - как с использованием классов AIDL библиотеки в небиблиотечном проекте, так и в другой библиотеке. Ваши проекты Eclipse должны иметь элемент «Библиотечные проекты» в своих деревьях. Убедитесь, что запись B содержит ссылку на ожидаемый JAR-файл A.   -  person Rob Pridham    schedule 14.02.2012
comment
Я помню, как он работал у меня с некоторыми прототипами, которые я написал некоторое время назад. Но это не сейчас. Я подозреваю, что обновление инструментов до v14 сломало его: tools.android.com/recent/buildchangesinrevision14   -  person jsmith    schedule 14.02.2012
comment
У меня это работает, но я не доволен решением. В lib B мне пришлось добавить пакет com.example.library.A и скопировать в него файл Foo.aidl.   -  person jsmith    schedule 14.02.2012


Ответы (1)


У меня это работает, но я не доволен решением. В lib B мне пришлось добавить пакет com.example.library.A и скопировать в него файл Foo.aidl.

person jsmith    schedule 19.03.2012
comment
Разве это не вызывало проблем при запуске приложения, использующего библиотеку B? Я получаю Duplicate class ... found in modules ... (lib A) and ... (lib B) ошибки. - person Guilherme Santos; 22.07.2021