AndroidAnnotations + Instant App-找不到生成的<applicationid> .R类

时间:2018-10-24 15:23:20

标签: android android-annotations android-instant-apps

我目前正在使用android-topeka示例项目来开发Android即时应用。

在“活动”中使用AndroidAnnotations后,一切都按预期进行:

@EActivity(resName = "activity_start")
public class StartActivity extends AppCompatActivity {
...
}

如果我要启动应用:installed),则一切正常,但是对于 instant-app :instant),我收到以下错误:

:base:javaPreCompileDebugFeature UP-TO-DATE
error: The generated <applicationId>.R class cannot be found
1 error
:base:compileDebugFeatureJavaWithJavac FAILED

其他信息:

  

如果我移除了基座中的application project(':installed')   build.gradle我可以启动即时应用,但是输入错误    application-id (在:installed项目中配置)。

2 个答案:

答案 0 :(得分:1)

最后,借助此issue跟踪器(对Kay-Uwe Janssen表示感谢),我明白了。也要杰西。总体而言,是结合了清单查找器和annotationProcessorOptions的设置。

这是我的gradle / Manifest设置的样子:

基础

build.gradle:

android {
    ...

    baseFeature true

    defaultConfig {
        ...

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["resourcePackageName": "com.test.base"]
            }
        }
    }

    buildTypes {
        release {
        }
    }
}
dependencies {
    application project(':installed')
    ...
}

AndroidManifest.xml:

<manifest ...
    package="com.test.base">
    ...
</manifest>

已安装:

build.gradle:

android {
      ...
}

dependencies {
    implementation project(':base')
}

AndroidManifest.xml:

<manifest package="com.test2">
</manifest>

即时

build.gradle:

android {
    defaultConfig {}
}

dependencies {
    implementation project(':base')
}
  

使用此设置,即时应用程序具有与已安装的一个“ com.test2”相同的应用程序ID。

答案 1 :(得分:0)

基于此SO related post

修改applicationId时会发生此错误。示例中提供的脚本假定您已声明android.defaultConfig.applicationId。如果未声明,则该值为 null 或生成 null.R

defaultConfig {

    // Rest of Config

    javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["resourcePackageName": "<Original Package Name>"]
            }
    }
}

注意:原始Package Name应该与R在您的活动中的位置相同。