【发布时间】:2014-04-12 02:54:28
【问题描述】:
我正在尝试从命令行使用Gradle 构建一个Android 项目,但是当我想更改目录结构时发现了一个问题。
目前是这样的:
.
└── 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
好的。一切都好。但是现在我想新建一个目录,所以:
我创建了一个ui 目录并将MainActivity.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 {
...
}
在AndroidManifest.xml中修改其android:name属性:
<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
我做错了什么?有什么想法吗?
谢谢。
【问题讨论】:
-
如果使用 Android Studio,请在类名上按 Alt+Enter。它只是导入相关的 R 类本身。