当前位置: 首页 > 知识库问答 >
问题:

如果不能依赖BuildConfig,如何区分发行版和调试版。调试

黄流觞
2023-03-14

考虑到你不能依赖BuildConfig,你如何区分Android开发中的发布版本和调试版本。DEBUG标志?

我使用Android Studio与Gradle和更喜欢产生释放/调试构建使用Gradle任务,我也需要它来产生那些在TeamCity。

例如,我需要使用不同的String值进行发布和调试。我要做的是将它们分别存储在maindebug文件夹中,以便根据构建选择合适的文件夹。这是可以的,但是如果我需要在中有一个标志来决定走哪条路呢?


共有3个答案

邢曦
2023-03-14

您可以检查是否进行了模糊处理:

package com.example.customandroid;

public abstract class DebugBuildChecker {
    public static boolean isDebugBuild() {
        //Log.d("~~~","class="+DebugBuildChecker.class.getName());
        return DebugBuildChecker.class.getName().endsWith(".DebugBuildChecker");
    }
}

混淆之后,类名将类似于com。实例a、 a,函数将返回false。当然,可以告诉proguard保留这个类的名称;只要别这么做,支票就行了。

房育
2023-03-14

您可以通过以下方式检查应用程序是否可调试

boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
祖利
2023-03-14

在您的build.gradle添加一个后缀来调试版本

android {
    signingConfigs {
        buildTypes {
            debug {
               versionNameSuffix = "-DEBUG"
            }
        }
    }
}

然后在运行时检查版本名称:

     PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
     mBuildVersion = pInfo.versionName;
     if(mBuildVersion.contains("DEBUG")){
          // DEBUG
     }
 类似资料:
  • Package dependencies are critical to the success of a package. When you develop the functionality of your package, you will very likely use existing code defined in other packages. Those packages then

  • 问题内容: 简短版的问题: 如何让gdb使用libc的调试符号? 较长的版本: 我正在使用gdb调试程序,我想查看有关libc使用的futex的信息。但是,在调试过程中的某个时刻,我得到如下输出: 当我在断点处在gdb中运行时,我看到: 当我跑步时,我看到: 我正在使用Ubuntu 10.04,我认为带有调试符号的libc版本在中。我尝试将变量设置为在路径的开头,但这似乎没有什么不同。 我尚不清楚

  • 我需要进行3个相关的WebClient API调用。最后,我想要一个最终响应对象的Mono。我需要使用第一个API响应中的值来调用第二个API(它将返回Purchase类的Mono)。Purchase类将包含2个成员变量 用户对象 现在,对于列表中的每个值,我需要进行第三次API调用。然后将最终的mono对象返回到控制器 目前,我一直在研究如何为列表中的每个值(由第二个API返回)异步调用第三个A

  • 我有一个Android项目,它依赖于纯Java项目。它们都依赖于另一个Java库,也在我在Android Studio中的多项目gradle集中。我有两个版本的库,希望Android和Java项目在调试模式下依赖其中一个,在发布模式下依赖另一个。 Android项目有可能吗?纯Java项目?怎样

  • 我需要为我的一个子项目构建一个jar,包括依赖项,以便它可以用作。 我有一个多模块的sbt项目,这个模块是最低级别的(也是纯Java)。 我可以(例如使用sbt-onejar、sbt-proGuard或sbt组件)覆盖最低级别模块的打包方式吗? 看起来这些工具真的被设计成发布后的步骤,但是我真的需要一个(替换或附加的)发布的人工制品来包含依赖项(但只适用于这一个模块)。 更新:发布sbt程序集是针

  • 我在IntelliJ IDEA community Edition上调试Java spring-boot应用程序时遇到了困难。主要的问题是,IDE不会在断点上停止,即使程序确实通过断点执行。我怎样才能使智能的想法停止在断点上? Maven配置,命令为:spring-boot:run。在启动之前,我构建项目。