“包R不存在”从命令行使用Gradle构建时出错 [英] "Package R does not exist" error when building with Gradle from command line

查看:104
本文介绍了“包R不存在”从命令行使用Gradle构建时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试从命令行创建 Android 项目,其中包含 Gradle ,但当我想要改变目录结构。



目前是这样的:

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

然后我执行:

  ./ gradlew clean build 

  >建立成功

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



创建一个 ui 目录并移动 MainActivity.java there:

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

//进口

公共类MainActivity扩展ActionBarActivity {
...
}

AndroidManifest.xml 中修改它的 android:name
$ b

 < 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 :包R不存在
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不存在
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不存在
查看rootView = inflater.inflate(R.layout.fragment_main,container,false);

BUILD FAILED

我做错了什么?任何想法?



谢谢。

解决方案

您在您的活动中声明了错误的软件包。



确保包中包含com.example.blah; 声明你的Activity与你的 AndroidManifest.xml 中的声明相匹配。


I'm attemping to build an Android project with Gradle from command line, but found a problem when I want to change the directory structure.

Currently is like this:

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

Then I execute:

./gradlew clean build

That ends with:

BUILD SUCCESSFUL

Ok. All fine. But now I want to create a new directory, so:

I create an ui directory and move MainActivity.java there:

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

Modify its package:

package com.myproject.ui;

// imports

public class MainActivity extends ActionBarActivity {
    ...
}

Modify its android:name attribute in AndroidManifest.xml:

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

And try to compile it again:

./gradlew clean build

With following errors:

/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

What am I doing wrong? Any ideas?

Thank you.

解决方案

This usually happens when you are declaring the wrong package in your Activity.

Make sure the package com.example.blah; declaration in your Activity matches the package declaration in your AndroidManifest.xml.

这篇关于“包R不存在”从命令行使用Gradle构建时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆