从命令行使用 Gradle 进行构建时出现“包 R 不存在”错误

2022-09-01 17:55:42

我试图从命令行构建一个项目,但是当我想更改目录结构时发现了一个问题。AndroidGradle

目前是这样的:

.
└── main
    ├── AndroidManifest.xml
    ├── ic_launcher-web.png
    ├── java
    │   └── com 
    │       └── myproject
    │           └── MainActivity.java
    └── res 
        ├── ... 
        ├── layout
        │   ├── activity_main.xml
        │   └── fragment_main.xml
        ├── ... 
        ...

然后我执行:

./gradlew clean build

最后是:

BUILD SUCCESSFUL

好吧,一切都很好。但现在我想创建一个新目录,所以:

我创建了一个目录并移动到那里:uiMainActivity.java

.
└── main
    ├── AndroidManifest.xml
    ├── ic_launcher-web.png
    ├── java
    │   └── com
    │       └── myproject
    │           └── ui
    │               └── MainActivity.java
    └── res
        ├── ...
        ├── layout
        │   ├── activity_main.xml
        │   └── fragment_main.xml
        ├── ...
        ...

修改其包:

package com.myproject.ui;

// imports

public class MainActivity extends ActionBarActivity {
    ...
}

在 中修改其属性:android:nameAndroidManifest.xml

<activity 
    android:name=".ui.MainActivity" 
    android:label="@string/app_name" >
    ...
</activity>

并尝试再次编译它:

./gradlew clean build

出现以下错误:

/home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:19: error: package R does not exist
        setContentView(R.layout.activity_main);
                        ^
/home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:23: error: package R does not exist
                    .add(R.id.container, new PlaceholderFragment())
                          ^
/home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:33: error: package R does not exist
        getMenuInflater().inflate(R.menu.main, menu);
                                   ^
/home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:43: error: package R does not exist
        if (id == R.id.action_settings) {
                   ^
/home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:60: error: package R does not exist
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);

BUILD FAILED

我做错了什么?有什么想法吗?

谢谢。


答案 1

当您在活动中声明了错误的文件包时,通常会发生这种情况。

确保“活动”中的声明与 中的声明匹配。package com.example.blah;packageAndroidManifest.xml


答案 2

我明白了,所以我会自己回答。

我必须在这些活动,片段或使用其中定义的任何资源的任何类中声明该类。R

所以,它会像这样:

package com.myproject.ui;

// lots of imports...
// ...
import com.myproject.R;

public class MainActivity extends ActionBarActivity {
    ...
}

推荐