繁体   English   中英

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

[英]AndroidAnnotations + Instant App - The generated <applicationId>.R class cannot be found

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

在我的 Activity 上使用AndroidAnnotations之后,一切都按预期工作:

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

如果我想启动应用程序:installed ),一切正常,但对于即时应用程序:instant ),我收到以下错误:

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

附加信息:

如果我删除基础 build.gradle 中的application project(':installed') ,我可以启动即时应用程序,应用程序 ID错误(在:installed项目中配置)。

最后我得到了它,在这个问题跟踪器的帮助下(感谢 Kay-Uwe Janssen)。 也感谢杰斯。 总的来说,它是与 Manifest Finder 和annotationProcessorOptions相结合的设置。

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

根据:

构建.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>

安装:

构建.gradle:

android {
      ...
}

dependencies {
    implementation project(':base')
}

AndroidManifest.xml:

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

立即的:

构建.gradle:

android {
    defaultConfig {}
}

dependencies {
    implementation project(':base')
}

通过此设置,Instant App 与已安装的“com.test2”具有相同的 App-Id

基于此SO 相关帖子

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

 defaultConfig { // Rest of Config javaCompileOptions { annotationProcessorOptions { arguments = ["resourcePackageName": "<Original Package Name>"] } } }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM