Android studio AndroidAnnotations+;Android Studio-找不到生成的null.R类
我已经按照wiki说明使用最新版本的AndroidStudio安装了ActiveAndroid。我用的是产品口味。这是我的gradle生成文件:Android studio AndroidAnnotations+;Android Studio-找不到生成的null.R类,android-studio,android-annotations,Android Studio,Android Annotations,我已经按照wiki说明使用最新版本的AndroidStudio安装了ActiveAndroid。我用的是产品口味。这是我的gradle生成文件: apply plugin: 'android' apply plugin: 'android-apt' apt { arguments { androidManifestFile variant.processResources.manifestFile resourcePackageName android.
apply plugin: 'android'
apply plugin: 'android-apt'
apt {
arguments {
androidManifestFile variant.processResources.manifestFile
resourcePackageName android.defaultConfig.packageName
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
a {
packageName "com.a.a"
}
b {
packageName "com.a.b"
}
c {
packageName "com.a.c"
}
}
}
dependencies {
apt "org.androidannotations:androidannotations:3.0+"
compile "org.androidannotations:androidannotations-api:3.0+"
compile 'com.android.support:support-v4:19.0.1'
compile 'com.android.support:appcompat-v7:19.0.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Gradle生成文件,但在设备上编译/调试时,我收到两个错误:
错误::找不到生成的null.R类
及
错误:任务“:ml:CompileReadeBugJava”的执行失败
编译失败;有关详细信息,请参阅编译器错误输出
我已经为我的构建文件尝试了许多设置,但我一生都无法让它工作。当我尝试从以下位置更改我的AndroidManifest时:
android:name=“com.a.a.MainActivity”
到
android:name=“com.a.a.main活动”
它声明找不到类
我正在使用最新版本的Gradle和最新版本的ActiveAndroid
任何帮助都将不胜感激。我遇到了这个问题,所以我删除了这一行:
resourcePackageName android.defaultConfig.packageName
它成功了。我刚刚遇到了同样的问题,通过在
defaultConfig
中添加packageName
解决了这个问题:
样本:
defaultConfig {
packageName "com.example.myapp"
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
根据您的AndroidManifest.xml
中指定的名称更改com.example.myapp
希望这有帮助
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.your.app"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName android.defaultConfig.applicationId
}
}
它适合我。更改清单中的applicationId==包。 100%成功
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName android.defaultConfig.applicationId
}
对我来说,它起作用了。我知道时间很晚了,但它可能会帮助别人 当您修改applicationId时,会发生这种情况。示例中提供的脚本假定您已声明“android.defaultConfig.applicationId”。在大多数情况下,它的值为null,因此它生成null.R。您可以定义变量或将代码更改为以下内容:
defaultConfig {
// Rest of Config
javaCompileOptions {
annotationProcessorOptions {
arguments = ["resourcePackageName": "<Original Package Name>"]
}
}
}
defaultConfig{
//配置的其余部分
javaCompileOptions{
注释处理器选项{
参数=[“resourcePackageName”:“]
}
}
}
请注意,原始包名称应与活动中R的位置相同
希望有帮助 我也有同样的问题。我更新了
build.gralde
文件,如下所示
对于Java我添加了:
android {
defaultConfig {
applicationId "<your.application.id>"
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
arguments = ["resourcePackageName": android.defaultConfig.applicationId]
//arguments = ['androidManifestFile': variant.outputs[0].processResources.manifestFile]
}
}
}
}
kapt {
arguments {
arg("resourcePackageName", android.defaultConfig.applicationId)
//arg("androidManifestFile", variant.outputs[0]?.processResources?.manifestFile)
}
correctErrorTypes = true // add this if you use data binding
}
我没有删除它,而是添加了基本包的真实名称,比如
resourcePackageName'org.trandroid'
(而不是resourcePackageName'org.trandroid.full'
),您应该在默认配置中定义packageName。在其他口味中,您可以覆盖它。但必须设置默认值。