构建我的应用程序时出现此错误:
01-31 13:28:58.594 E/AndroidRuntime(10369): FATAL EXCEPTION: main
01-31 13:28:58.594 E/AndroidRuntime(10369): Process: com.example.app, PID: 10369
01-31 13:28:58.594 E/AndroidRuntime(10369): java.lang.NoSuchFieldError: No static field framelayout_content of type I in class Lcom/sdk/sample/R$id; or its superclasses (declaration of 'com.sdk.sample.R$id' appears in /data/app/com.example.app
当我搜索“framelayout_content”
的resourceId时在android.support.v7.appcompat.R.java文件中:
public static final int search_plate = 0x7f0f0057;
并在我的模块(com.sdk.sample.R.java)的R文件中:
public static int framelayout_content=0x7f0f0057;
ids重复! 在最后的R文件(com.example.app.R.java)中它只有:
public static final int search_plate=0x7f0f0057;
framelayout_content
消失了,导致错误!
任何人都可以提供帮助吗?
PS:
我试图重命名framelayout_content
它没有帮助。
以下是我的项目结构:
在settings.gradle中:
include ':app', ':Module'
在应用下:
dependencies {
compile project(': Module')
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
testCompile 'com.android.support.test:runner:1.0.1'
testCompile 'com.android.support.test.espresso:espresso-core:3.0.1'
compile 'com.android.support:multidex:1.0.1'
}
模块下的:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.4.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.squareup:otto:1.3.8'
}
答案 0 :(得分:2)
通过重命名布局文件之一来解决问题,因为包含framelayout_content
的布局文件与模块中的布局文件具有相同的名称。感谢@IntelliJ Amiya
答案 1 :(得分:1)
01-31 13:28:58.594 E / AndroidRuntime(10369): java.lang.NoSuchFieldError:无静态字段
NoSuchFieldError
只能在运行时发生,如果类的定义发生了不兼容的更改。那么在项目中找到 DUPLICATE
XMLS 。只需重命名其中一个。然后 Clean-Rebuild and Run
。
<强> FYI 强>
public static final int search_plate = 0x7f0f0057;
Android R.java是aapt自动生成的文件(Android资源 包装工具)包含所有资源的资源ID res /目录。