关于 ActionBarSherlock 将项目导入 Android Studio 的问题

Posted

技术标签:

【中文标题】关于 ActionBarSherlock 将项目导入 Android Studio 的问题【英文标题】:Problems importing project into Android Studio regarding ActionBarSherlock 【发布时间】:2013-05-10 18:21:06 【问题描述】:

还有其他人在使用ActionBarSherlock 导入项目时遇到问题吗? 我总共有 100 个错误和 17 个警告。这在Eclipse 中完美运行。我按照步骤创建了Gradle build file。在我尝试构建项目之前没有导入错误。

我还尝试重新下载 ABS 新鲜并替换到我的项目中。

ABS 和IntelliJ 是否存在已知问题? (当然现在基于 android Studio)

以下是我看到的一些错误:

        java: ...
        Workspace/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java:4: cannot find symbol
        symbol  : class Fragment
        location: package android.support.v4.app

        java: ...  Workspace/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java:4: cannot find symbol
        symbol  : class ListFragment
        location: package android.support.v4.app

        java: ...
        Workspace/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java:33:
        package android.support.v4.widget does not exist

非常感谢任何帮助

编辑: 使用标准 IntelliJ IDEA 似乎没有问题。许多在线指南用于使用 ABS 进行设置。正如 Jake 提到的,他实际上一直在用 IntelliJ 开发这个东西

这是一个示例指南: http://android-wtf.com/2012/09/how-to-configure-actionbarsherlock-with-intellij-idea/

但是,我仍然不确定为什么它不能在 Android Studio 中运行

Edit2: 解决方案在下面的答案中。简而言之:(我下载了abs 最新版本,提取,从我的项目中删除了旧版本的abs,然后file > import module...actionbarsherlock 目录导入到我现有的项目中。注意,在我的特殊情况下,我有一个junit 编译错误问题,需要删除 \test\junit\ )

【问题讨论】:

我在 IntelliJ 中开发了两年的 ABS,并通过 IntelliJ 中的 Maven 在许多项目中使用它。看起来那里缺少支持库。 @JakeWharton 谢谢杰克,是的,事实上,在发布这个之后,我通过谷歌找到了快速指南,让你的 ABS 可以毫无问题地与标准 IntelliJ 一起工作。我仍在为 Android Studio 研究这个。我认为这与 File > Project Structure ... Modules 等有关。 好吧,我得到了它的工作我需要重新下载 ActionBarSherlock 包。从我以前的包中完全删除旧的。然后 File > Import Module ... 并再次导入覆盖它拥有的任何现有模块文件 你是用maven导入模块的吗?如果我使用“从现有源创建模块”导入它,我会收到编译 ABS 的错误,说它找不到 junit。我可以删除测试,但我觉得不合适。 如果你想修复junit库的问题,你有两个选择:1 - 删除ABS项目的测试目录或2 - 包含位于Android Studio/lib/中的junit jar文件junit-4.10.jar. 【参考方案1】:

似乎在将模块导入Android Studio 时存在很多一般问题,而不仅仅是ActionBarSherlock,这个答案也可能会解决这些问题。 (但是与 junit 相关的最后一步是 abs 特有的)

以下步骤让我可以毫无问题地运行 ActionBarSherlock

1) 在此处下载最新的 ABS:http://actionbarsherlock.com/

2) 提取 ABS 你应该有一个名为“actionbarsherlock”的目录。将其复制到您的 Android Studio 工作区。并重命名为ActionBarSherlock (changed casing) --> 我现在在\*documents*\Android Workspace\ 下拥有我的Android Studio 项目,而不是\Eclipse Workspace\

所以你现在应该有类似的东西:

\*documents*\Android Workspace\ActionBarSherlock\

可能与您的主要项目一起:

\*documents*\Android Workspace\TestProject\

3) 打开 Android Studio 加载您的 TestProject 然后转到 File> Import Module..。现在导航到\*documents*\Android Workspace\ActionBarSherlock\ 下的 ActionBarSherlock 单击“确定”,然后一直单击“下一步”完成。它会询问您是否要设置对新模块的依赖关系(或者至少我的模块)单击确定

4) 在编译时,我在\ActionBarSherlock\test\ 中遇到错误,抱怨Junit。我只是从项目视图下的 ABS 模块中删除了\Test\ 目录。 Right click \test\ > Delete...。您也可以包含 junit jar 文件,但我认为没有必要

5)你现在应该可以无错误地编译了

希望对某人有所帮助。

不过,基本上,我需要重新下载一个全新的 ABS,删除我旧项目的 ABS(可能很旧),然后导入模块...

【讨论】:

我很困惑为什么我的项目有两个模块,“ABSTest”和“ABSTest-ABSTest”,在这种情况下我应该使用哪一个? 我经常看到使用 AndroidStudio 导入模块的另一个问题是:我应该从现有源创建模块吗?还是我应该使用 Maven 选项? 我在File 菜单中没有Import Module(在Android Studio 0.2.8 上) @KonradMorawski 嗨,我刚刚更新到最新版本的Android Studio,它肯定仍然显示Import Module。它应该是列表中的第 4 项,文件 > 新项目、新模块、导入项目、导入模块。确保您运行的是最新版本的 Android Studio > 检查更新...希望对您有所帮助 @wired00 感谢您的回答。我试着在File 菜单下寻找这个选项。见截图:i39.tinypic.com/2w74ktj.jpg。至于确保我安装了最新版本 - 正如我所写,我使用的是 0.2.8。它是目前最新的 - 请参阅tools.android.com/recent【参考方案2】:

这对我有用..

首先,接着是wired00提供的答案

我从这里做了一些改变。

我通过 Generate Gradle build files from Eclipse 在 ActionBarSherlock 库项目中创建了一个 build.gradle 文件。

编辑 build.gradle(for ActioBarSherlock 库项目) , 在 dependencies 中添加一行 compile files('libs/android-support-v4.jar')

编辑 build.gradle(对于我的项目),删除 compile files('libs/android-support-v4.jar') 并添加 compile project(':abs') abs 应该是 ActionBarSherlock 库项目名称。

编辑settings.gradle,添加,':abs'

删除除了ActionBarSherlock库项目中的android-support-v4.jar文件

【讨论】:

【参考方案3】:

我遇到了类似的问题,但由于一个单独的问题,我无法下载最新的 ActionBarShelock 来解决wired00 描述的问题。

如果您需要坚持使用现有的 ABS 版本,请查看这是否适合您:

    点击文件->项目结构。 您应该会在模块列表中看到“ActionBarSherlock”,单击它。 单击“依赖项”选项卡,很可能您没有 android 支持库 v4。 单击底部的“+”按钮,并将 android-support-v4 添加为依赖项。如果您从 Eclipse 导入项目,Android Studio 可能已经将支持 JAR 文件作为库导入,您可以直接使用它。否则,您可能需要使用“jar 或目录”选项并从目录中选择支持 jar 文件。 如果您的主模块或其他模块也在使用支持库,如果出现“DEX 已添加”错误,您可能需要将设置“编译”更改为“已提供”。 您现在应该可以编译您的 ABS 手机了。如果您收到“hamcrest”或“junit”编译错误,您可以删除 ABS 项目中的“test”文件夹,如 Wired00 所述。

【讨论】:

【参考方案4】:

我也面临同样的问题。我什至遵循类似于导入 ABS 库的步骤。但我仍然遇到同样的错误。最后我解决了这个问题。 解决方法:按照类似导入ABS库的步骤,

    重新编译您的项目(右键单击您的项目并单击“编译模块“YourApp”') 重新编译库项目(右键单击库项目并单击“编译模块“库”')

就是这样..

【讨论】:

在这样做之后...它开始给出相同的错误“找不到符号类 FragmentActivity”...错误计数 100 和警告 17..任何解决方案?

以上是关于关于 ActionBarSherlock 将项目导入 Android Studio 的问题的主要内容,如果未能解决你的问题,请参考以下文章

ActionBarSherlock:方向更改 ICS 时可折叠项目崩溃

Android项目引入actionbarsherlock作为library后混淆之后的异常

仍然需要使用 ActionBarSherlock 吗?

Gradle 无法构建 ActionBarSherlock

将 Chromecast 集成到支持 ActionBarSherlock 的应用程序中

适用于 Android 的 Mono 的 ActionBarSherlock 的 jar-Binding