关于 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后混淆之后的异常