【问题标题】:Android annotations and applicationIdSuffixAndroid注解和applicationIdSuffix
【发布时间】:2015-06-29 13:11:34
【问题描述】:

我最近一直在尝试Android annotations,一切都运行良好,直到我决定在我的buildTypes 文件中添加applicationIdSuffix 到我的build.gradle 文件中。目前它看起来像这样:

buildTypes {
    debug {
        applicationIdSuffix '.debug'
    }

    ...
}

编译后,我在 gradle 控制台中得到以下日志:

:app:preDebugBuild 最新版本
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:pre_testBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72220Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42220Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl 最新
:app:compileDebugRenderscript 最新
:app:generateDebugBuildConfig 最新
:app:generateDebugAssets 最新
:app:mergeDebugAssets 最新
:app:generateDebugResValues 最新
:app:processDebugGoogleServices
找不到与包名称“org.me.myapp.debug”匹配的客户端
:app:generateDebugResources
:app:mergeDebugResources 最新
:app:processDebugManifest 最新
:app:processDebugResources 最新
:app:generateDebugSources 最新
:app:processDebugJavaRes 最新
:app:compileDebugJavaWithJavac
注意:将日志文件解析为 /dir/myapp/app/build/generated/source/apt/androidannotations.log
注意:使用选项初始化 AndroidAnnotations 3.3.1 {androidManifestFile=/dir/myapp/app/build/intermediates/manifests/full/debug/AndroidManifest.xml}
注意:开始处理 18 个元素上的 4 个注释
注意:找到指定路径的 AndroidManifest.xml 文件:/dir/myapp/app/build/intermediates/manifests/full/debug/AndroidManifest.xml 注意:AndroidManifest.xml 找到:AndroidManifest [applicationPackage=org.me.myapp.debug, componentQualifiedNames=[org.me.myapp.ui.MainActivity_, net.hockeyapp.android.UpdateActivity], permissionQualifiedNames=[android.permission.ACCESS_WIFI_STATE, android.permission.ACCESS_NETWORK_STATE], applicationClassName=null, libraryProject=false, debugabble=false, minSdkVersion=15, maxSdkVersion=-1, targetSdkVersion=22]
错误:找不到生成的 org.me.myapp.debug.R 类
注意:找到 Android 类:android.R
注意:时间测量:[整个处理 = 15 毫秒]、[提取清单 = 4 毫秒]、[提取注释 = 3 毫秒]、
注意:完成处理
注意:开始处理 0 个元素上的 0 个注释
注意:时间测量:[整个处理 = 0 ms],
注意:完成处理
1 个错误
失败
FAILURE:构建失败并出现异常。
* 出了什么问题:
任务 ':app:compileDebugJavaWithJavac' 执行失败。

我尝试再次清理和重建,从项目中删除 generated 目录,但没有任何帮助。如果我从build.gradle 文件中删除applicationIdsuffix,一切正常。我该如何解决这个问题?

【问题讨论】:

    标签: android android-gradle-plugin android-annotations


    【解决方案1】:

    对我来说,这是因为google-services.json 指的是我的生产包名称。在撰写本文时,最好的解决方案似乎是编写自己的 gradle 任务以在文件的 releasedebug 版本之间切换,或者在文件中包含两个包名称:

    google-services.json for different productFlavors

    【讨论】:

      【解决方案2】:

      从您的 build.gradle 文件中删除此行:

      resourcePackageName android.variant.applicationId
      

      编辑:尝试将此行添加到您的 apt 块中:

      resourcePackageName "org.me.myapp"
      

      【讨论】:

      • 我没有这条线。
      • 或“resourcePackageName android.defaultConfig.applicationId”以避免使用硬编码值
      • 但是我的问题是通过在应用级别 build.gradle 的 defaultConfig 中为 applicationId 提供正确的值来解决的
      • 是的,你需要默认的app id,不管你怎么传。这里的原始问题是使用了每个变体应用程序 ID。其实AA需要manifest包,而不是app id,但是大部分时候manifest包和默认app id是一样的。
      • @WonderCsabo 你知道如何配置它,但要使用新的 annotationProcessor。我没有使用 apt
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2019-07-14
      相关资源
      最近更新 更多