Android app build会因发布而抛出错误,调试不会

时间:2016-08-16 09:55:05

标签: android

我正在尝试构建一个我一直在努力的Android应用程序(这是我采用的一个项目,因此大部分代码都不是我的 - 这没有帮助:P)而且我遇到了一个问题。

应用程序在调试模式下构建良好(在设备上构建和安装以进行测试)。但是当我尝试构建一个版本时,它失败了。

这是gradle控制台中的错误:

  

任务执行失败':app:lintVitalRelease'。

     
    

Lint在组装释放目标时发现致命错误。

  

这就是它在Messages Gradle Build中所说的:

  

错误:错误:此片段类应该是公共的([com.company.appname] .fragments.create_dilemma.CreateDilemmaFragment1_2.UploadDialogFragment)[ValidFragment]

这是违规行:

private class UploadDialogFragment extends DialogFragment implements View.OnClickListener

所以我将private更改为public然后它抱怨它应该是一个静态类。事实是,看起来这个类不应该是静态的,因为只要我将它静态化,AS就不会对任何代码感到满意。

所以我留下了几个问题:

  1. 这只是发布版本的问题,而不是调试问题?

  2. 构建发布时有没有办法忽略这个'错误'?

  3. 这个错误必定有原因,对吧?为什么在调试时忽略它而不是为了发布?解决这个问题的原因是什么?因为应用程序工作得很好,据我所知,所以我真的没有看到问题..?

  4. PS:我的java技能一般。我知道我的语言,但我知道什么是静态类确切是什么,什么是允许的,什么不是,为什么它(不是)等等,我有很多需要学习的东西。所以请温柔,我我试图学习这些东西:)

    更新:根据请求,这是我的build.gradle的相关部分:

    android {
        compileSdkVersion 24
        buildToolsVersion '24.0.1'
        useLibrary 'org.apache.http.legacy'
        defaultConfig {
            applicationId "[com.pany.appname]"
            minSdkVersion 15
            targetSdkVersion 22
            multiDexEnabled true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
        productFlavors {
        }
    }
    

2 个答案:

答案 0 :(得分:1)

您可以将此选项放在build.gradle部分的android块中

        lintOptions {
          checkReleaseBuilds false
        }

答案 1 :(得分:1)

Jay Shan的回答应该有效。但更好地了解问题所在。片段需要公开,因为系统会在方向更改时重新创建片段。另一个警告是因为非静态内部类保持对其outter类的引用,因此它会创建memmory泄漏。 最好的做法是将片段移动到他自己的班级。或者公开并忽略lint警告(这可能会造成内存泄漏,但保持私有可能会导致应用程序崩溃)