库项目被引用为原始项目依赖项(基于源代码的机制),而不是编译的 jar 依赖项(基于编译代码的库机制)。
@yorkw对于最新版本的 Eclipse ADT 插件来说,情况并非如此 http://developer.android.com/sdk/eclipse-adt.html
来自版本 17 更新日志
新的构建功能 添加了自动设置 JAR 依赖项的功能。/libs 文件夹中的任何.jar文件都将添加到构建配置中(类似于 Ant 构建系统的工作方式)。此外,库项目所需的.jar文件也会自动添加到依赖于这些库项目的项目中。(更多信息)
更多信息 http://tools.android.com/recent/dealingwithdependenciesinandroidprojects
在此之前,更新覆盖“来自库的活动”项目很容易,只需排除该类即可。现在,库作为 jar 文件包含在内,并且无法从 jar 依赖项中排除类文件。
编辑:
我从库jar中覆盖/扩展活动的解决方案:
我创建了一个简单的 util 类:
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);