Bir*_*rei 24 java android gradle
我正在尝试Android使用Gradle命令行构建项目,但是当我想要更改目录结构时发现了一个问题.
目前是这样的:
.
??? main
??? AndroidManifest.xml
??? ic_launcher-web.png
??? java
? ??? com
? ??? myproject
? ??? MainActivity.java
??? res
??? ...
??? layout
? ??? activity_main.xml
? ??? fragment_main.xml
??? ...
...
Run Code Online (Sandbox Code Playgroud)
然后我执行:
./gradlew clean build
Run Code Online (Sandbox Code Playgroud)
结束于:
BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)
好.一切都很好.但现在我想创建一个新目录,所以:
我创建一个ui目录并移动到MainActivity.java那里:
.
??? main
??? AndroidManifest.xml
??? ic_launcher-web.png
??? java
? ??? com
? ??? myproject
? ??? ui
? ??? MainActivity.java
??? res
??? ...
??? layout
? ??? activity_main.xml
? ??? fragment_main.xml
??? ...
...
Run Code Online (Sandbox Code Playgroud)
修改其包裹:
package com.myproject.ui;
// imports
public class MainActivity extends ActionBarActivity {
...
}
Run Code Online (Sandbox Code Playgroud)
修改其android:name属性AndroidManifest.xml:
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name" >
...
</activity>
Run Code Online (Sandbox Code Playgroud)
并尝试再次编译它:
./gradlew clean build
Run Code Online (Sandbox Code Playgroud)
有以下错误:
/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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?有任何想法吗?
谢谢.
loo*_*opj 53
当您在Activity中声明错误的包时,通常会发生这种情况.
确保package com.example.blah;您的活动中的package声明符合您的声明AndroidManifest.xml.
Bir*_*rei 29
我明白了,所以我会自己回答.
我必须R在那些使用在那里定义的任何资源的活动,片段或任何类中声明该类.
所以,它会是这样的:
package com.myproject.ui;
// lots of imports...
// ...
import com.myproject.R;
public class MainActivity extends ActionBarActivity {
...
}
Run Code Online (Sandbox Code Playgroud)
ste*_*s17 10
我收到此错误是因为我更改了.java文件中的包名称并重命名了目录但未更新AndroidManifest.xml.在AndroidManifest.xml中更改包名称解决了问题.这与上面的loopj的答案一致.
在适合我的Android项目中更改Java包名称的完整过程如下:
| 归档时间: |
|
| 查看次数: |
62902 次 |
| 最近记录: |