Библиотечный проект упоминается как необработанная зависимость проекта (механизм на основе исходного кода), а не как зависимость от скомпилированного jar (механизм библиотеки на основе скомпилированного кода).
@ yorkw это не так для последних версий ADT Plugin для Eclipse
http://developer.android.com/sdk/eclipse-adt.html
С версии 17 Журнал изменений
Новые функции сборки
Добавлена возможность автоматической настройки зависимостей JAR. Любые файлы .jar в папке / libs добавляются в конфигурацию сборки (аналогично тому, как работает система сборки Ant). Кроме того, файлы .jar, необходимые для библиотечных проектов, также автоматически добавляются в проекты, которые зависят от этих библиотечных проектов. (подробнее)
Подробнее http://tools.android.com/recent/dealingwithdependenciesinandroidprojects
До этого обновление обновления проекта Activity from Library было простым, просто исключите класс. Теперь библиотека включена в файл jar, и нет способа исключить файл класса из зависимости jar.
EDIT:
Мое решение переписать / расширить Activity из библиотеки jar:
Я создал простой класс утилит:
public class ActivityUtil {
private static Class getActivityClass(Class clazz) {
// Check for extended activity
String extClassName = clazz.getName() + "Extended";
try {
Class extClass = Class.forName(extClassName);
return extClass;
} catch (ClassNotFoundException e) {
e.printStackTrace();
// Extended class is not found return base
return clazz;
}
}
public static Intent createIntent(Context context, Class clazz) {
Class activityClass = getActivityClass(clazz);
return new Intent(context, activityClass);
}
}
Чтобы переписать класс библиотеки «SampleActivity», это проект, который зависит от этой библиотеки, создайте новый класс с именем SampleActivityExtended в проекте в том же пакете и добавьте новое действие в свой AndroidManifest.xml.
ВАЖНО: все намерения, ссылающиеся на перезаписанные действия, должны создаваться через класс util следующим образом:
Intent intent = ActivityUtil.createIntent(MainActivity.this, SampleActivity.class);
...
startActivity(intent);