【问题标题】:Identifying errors in Release build of Android application识别 Android 应用程序发布版本中的错误
【发布时间】:2017-07-26 05:45:18
【问题描述】:

我最近开始研究 Android 应用程序和 Proguard 的构建风格。所以我现在正在做的是创建我的应用程序的发布版本。为此,以下是我在 build.gradle 文件的 buildTypes 中所做的更改。

buildTypes {
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt')
    }
    release {
        minifyEnabled true
        zipAlignEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.chitchatReleaseConfig
    }
}

我已经通过引用以下链接为发布版本创建了一个 proguard-rules.pro 文件,如在各个地方提到的。

https://www.guardsquare.com/en/proguard/manual/examples

但是,除了我应该在 proguard-rules.pro 中实际包含的常规文件之外,我仍然对我的项目中哪些类型的文件感到困惑。因为显然由于发布版本,在我的应用程序的某些点,我不断收到 FileNotFoundException 并且我无法调试它。

那么我如何决定我的项目中的哪些文件应该包含在我的 proguard-rules.pro 中,以及如何在发布版本中调试我的应用程序中的 FileNotFoundException?

【问题讨论】:

标签: android proguard


【解决方案1】:

Proguard 有一些问题,但它非常适合缩小 apk 大小。我建议如果您在应用程序中使用第三方库,那么在 proguard-rules 文件中也使用他们的 proguard-rules。

要从签名的 apk 中获取错误,请使用 Fabric Crashlytic。它易于集成(最多 10 分钟),它将在您的结构控制台上显示完整的异常堆栈跟踪。

【讨论】:

    【解决方案2】:

    试试这个:

    android {
    signingConfigs {
        SignNAME {
            keyAlias 'yourKeyAliasName'
            keyPassword 'yourKeyAliasPassword'
            storeFile file('F:/ANDROID KEYSTORES/myKeystore.jks') // Give the Path of your Keystore here
            storePassword 'yourStorePassword'
        }
    }
    compileSdkVersion 24        // change depending upon your requirement
    buildToolsVersion "24.0.3" // change depending upon your requirement
    defaultConfig {
        applicationId "com.yourPackageName.yourAppName"
        minSdkVersion 18       // change depending upon your requirement
        targetSdkVersion 24    // change depending upon your requirement
        versionCode 1          // change depending upon your requirement
        versionName "1.0"      // change depending upon your requirement
        multiDexEnabled true
        signingConfig signingConfigs.SignNAME
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
    }
    

    在此之后,在左下角上方的 Android Studio 中,您将找到Build Variants。单击它并将Build Variantsdebug 更改为release。等到 gradle 构建。你们都设置为Run

    【讨论】:

    • 我真的不建议将您的签名信息放在您的 gradle 文件中。因为这将被检查到源代码控制中。这意味着任何拥有源代码控制的人都可以访问您的签名密钥,这是个坏主意。
    • 那么,你建议怎么做Gabe? Bcoz,这总是对我有用。
    • 如果你是一个做业余爱好节目的单人节目,那很好。如果您想从中开展业务,您不希望该密钥永远泄漏。对于一家小公司,它应该保留在您的笔记本电脑和异地(家、保险箱等)的物理备份设备上,并在构建时输入密码。对于一家公司来说,该密钥应该只能由 1 或 2 个发布版本的人访问。或者更好的是,它应该在只有经理或领导开发人员才能访问的服务器上,并通过构建命令(以及某处的远程备份设备或课程)完成构建。
    【解决方案3】:

    Fabric Crashlytic 将是最好的。我正在使用它,并且能够在发布构建版本中跟踪崩溃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-19
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 2015-07-04
      • 1970-01-01
      相关资源
      最近更新 更多