在eclipse中创建一个Android项目时,它创建了2个项目。
我知道appcompat_v7是一个android自动为我创建的库项目。
创建上述项目后,我收到一条错误消息'容器'Android Dependencies'引用了非现有库'。为了解决这个问题,我只需构建appcompat_v7项目并清除错误。
基本上我不希望appcompat_v7作为单独的项目。这是看起来像。
如果我删除了appcompat_v7项目,我收到了'错误检索项目的父项:找不到与styles.xml文件中给定名称'Theme.AppCompat.Light.DarkActionBar'匹配的资源。
有没有办法将appcompat作为外部库或JAR文件添加到MasterCopy项目中并保持一个项目整体而不失去功能?
我不确定我在这里是否有任何意义......但这就是我要求创建项目的方式。
答案 0 :(得分:1)
您将遇到的问题是资源(例如Theme.AppCompat.Light.DarkActionBar
等样式)无法简单地打包在jar文件中。正如Google的文档所述:
某些支持库包含编译代码类之外的资源, 例如图像或XML文件。例如,v7 appcompat和v7 gridlayout库包括资源。
Google提供了有关如何包含包含资源的库的特定文档,您似乎已经遵循这些文档: https://developer.android.com/tools/support-library/setup.html#libs-with-res
将这个保存在一个单独的项目中是一个好主意的原因是,它允许您在兼容性库更改时轻松地升级,构建和以其他方式管理与您自己的项目。
也就是说,如果真的希望拥有一个项目,您可以手动将app compat库(位于<sdk>/extras/android/support/v7/appcompat/
)的示例项目中的所有内容复制到您的项目。值得注意的是,您需要复制res/
文件夹中的所有内容并将其与您自己的资源合并,或将Google的XML文件重命名为res/values/strings.xml
至strings-appcompat.xml
,当然还有appcompat jar文件本身。
但是,每次您想要更新所使用的兼容性库的版本时,您都必须完成此过程。
Google专门创建了AAR
格式,该格式将资源与jar文件捆绑在一起。如果您转换到Gradle构建系统(如果您正在使用Android Studio,则很容易),那么您所要做的就是参考这个app-compat-v7 aar
工件(也在上面的链接中解释) ,你可以维护一个项目。