在Intellij IDEA中导入android项目/使用共享资源

Evg*_*eny 5 android intellij-idea android-resources android-studio

我在eclipse中有一个具有以下结构的android项目:

|Project1
   |-src
   |-res

|Project2
   |-src
   |-res
Run Code Online (Sandbox Code Playgroud)

Project2链接到Project1的源和资源.(在Eclipse中:属性 - > Java构建路径 - >源 - >链接源).

我尝试在IDEA中导入具有相同结构的项目(项目将一次在Eclipse和IDEA中使用).导入时,我遇到了以下问题:

1.如果我在Project2的依赖项中添加Project1(项目结构 - >依赖项),我在尝试运行Project2时收到错误:

android-apt-compiler:...\AndroidManifest.xml:45:错误:错误:发现Noresource匹配给定名称(''''的值为''drawable/ic_launcher')

android-apt-compiler:...\AndroidManifest.xml:45:错误:错误:找不到与给定名称匹配的资源(在'label'处,值为'@ string/app_name')

...

但是在代码(Project2)中,我可以从Project1引用资源而没有任何错误.

2.然后我尝试将Project2路径设置为Project1的资源目录(项目结构 - > Facet'Android' - > Structure),并收到错误:

android-apt-compiler:...\res\values\dimens.xml:7:错误:已经定义了资源条目activity_vertical_margin.

android-apt-compiler:...\res\values\strings.xml:1412:错误:已经定义了资源条目device_not_found.

...

3.我还尝试将res和src文件夹添加为内容根(项目结构 - >源),并接收通知:

模块Project1不得包含源根"...\Project1\src".根已经属于模块"Project2".

4.我尝试设置与步骤1中相同的参数,另外将Project1设为库(项目结构 - > Facet'Android' - >库模块).我收到Project1的错误:

java:...\Project1\src\com ...\TimeLineFragment.java:276:需要常量表达式java:...\Project1\src\com ...\TimeLineFragment.java:276:需要常量表达式

对于像这样的代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.action_open_dial_pad:
        mDialPadListener.openDialpad();
        return true;
    case R.id.action_delete_all:
        mObserver.onDeleteAllEventsAction();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有更多想法如何在IDEA中导入项目.有没有解决方法如何做到这一点(对于描述的项目结构),所以在Eclipse中一切正常?

Raf*_*les 2

只需转到Artifacts Settings、Modules、Sources 选项卡即可纠正错误 3,看到 2 个名为“gen”和“gen[ generated]”的文件夹,通过单击右侧的 X 图标删除“gen”它的。

现在,要使用这两个“项目”,您需要了解 Eclipse 中的“项目”相当于 Intellij 中的“模块”,因此您所需要做的就是打开一个项目,然后“导入” Module”,所以你选择对方的“Project”,这样他们就能看到对方的资源和代码。