AndroidAnnotations + Android Studio - The generated null.R class cannot be found

use*_*707 4 android-annotations android-studio

I have setup ActiveAndroid as per the wiki instructions using latest version of AndroidStudio. I am using product Flavours. This is my gradle build file:

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'])
}
Run Code Online (Sandbox Code Playgroud)

Gradle build files but when I compile/go to debug on the device I receive two errors:

Error:: The generated null.R class cannot be found

and

Error:Execution failed for task ':ml:compileADebugJava'.

Compilation failed; see the compiler error output for details.

I have tried numerous setups for my build file but cannot for the life of me get it work. Also when I try and change my AndroidManifest from:

android:name="com.a.a.MainActivity"

to

android:name="com.a.a.MainActivity_"

it states that class cannot be found.

I am using latest version of Gradle and latest version of ActiveAndroid.

Any help would be much appreciated.

Viv*_*eja 5

我知道已经晚了,但是可能会帮助别人。

当您修改applicationId时,会发生这种情况。示例中提供的脚本假定您已声明“ android.defaultConfig.applicationId”。在大多数情况下,它为null,因此生成null.R。您可以定义变量或将代码更改为以下内容:

defaultConfig {

    // Rest of Config

    javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["resourcePackageName": "<Original Package Name>"]
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,原始包名称应与活动中R的位置相同。

希望能帮助到你!


Lea*_*dro 3

我遇到了这个问题,所以我删除了这一行:

resourcePackageName android.defaultConfig.packageName
Run Code Online (Sandbox Code Playgroud)

它起作用了。