Android构建不考虑proguard规则

Android构建不考虑proguard规则,android,libgdx,obfuscation,Android,Libgdx,Obfuscation,在我基于LibGdx的android应用程序中,我使用build.gradle文件和下面提到的progaurd文件。我在android项目文件夹中有progaurd-rules.pro文件,如下所示 问题: 我已经在play store中发布了我的apk。虽然我有progaurd rules.pro,但当我的应用程序崩溃时,我没有得到它出现问题的文件的行号。请让我知道两件事 a。是否需要将progaurd-rules.pro内容复制到progaurd-project.txt b。我可以在andr

在我基于LibGdx的android应用程序中,我使用build.gradle文件和下面提到的progaurd文件。我在android项目文件夹中有progaurd-rules.pro文件,如下所示

问题:

  • 我已经在play store中发布了我的apk。虽然我有progaurd rules.pro,但当我的应用程序崩溃时,我没有得到它出现问题的文件的行号。请让我知道两件事

    a。是否需要将progaurd-rules.pro内容复制到progaurd-project.txt

    b。我可以在android-build.gradle中添加progaurd-rules.txt吗,如下面代码中所述

    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt', 'proguard-rules.pro'
    
  • 二,。什么是proguard-android.txt、proguard-project.txt和proguard-rules.pro。我可以加入俱乐部proguard-project.txt和proguard-rules.pro吗

    android-build.gradle

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }
    
    progoud规则.pro

    -keep class com.google.firebase.provider.FirebaseInitProvider
    -renamesourcefileattribute SourceFile
    -keepattributes SourceFile,LineNumberTable
    
    progaurd project.txt

    -verbose
    
    -dontwarn android.support.**
    -dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication
    -dontwarn com.badlogic.gdx.utils.GdxBuild
    -dontwarn com.badlogic.gdx.physics.box2d.utils.Box2DBuild
    -dontwarn com.badlogic.gdx.jnigen.BuildTarget*
    -dontwarn com.badlogic.gdx.graphics.g2d.freetype.FreetypeBuild
    
    -keep class com.badlogic.gdx.controllers.android.AndroidControllers
    
    -keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* {
    
    <init>(com.badlogic.gdx.Application, android.content.Context,    
    java.lang.Object,        
    
    com.badlogic.gdx.backends.android.AndroidApplicationConfiguration);
    }
    
    -keepclassmembers class com.badlogic.gdx.physics.box2d.World {
       boolean contactFilter(long, long);
       void    beginContact(long);
       void    endContact(long);
       void    preSolve(long, long);
       void    postSolve(long, long);
       boolean reportFixture(long);
       float   reportRayFixture(long, float, float, float, float, float);
    }
    
    com/google/firebase/provider/FirebaseInitProvider.class
    

    Proguard通过删除未使用的代码并使用语义模糊的名称重命名类、字段和方法来混淆代码,从而使代码库更小、效率更高。结果是一个较小的.apk文件,更难进行反向工程。Proguard集成到Android构建系统中

    当你的应用程序崩溃时,如果你想获取发生问题的文件的行号。为此,您需要集成crashlytics,如Fabric或市场上的任何其他产品。我举一个织物的例子

    添加您的build.gradle

    buildscript {
      repositories {
        maven { url 'https://maven.fabric.io/public' }
      }
    
      dependencies {
        // These docs use an open ended version so that our plugin
        // can be updated quickly in response to Android tooling updates
    
        // We recommend changing it to the latest version from our changelog:
        // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
        classpath 'io.fabric.tools:gradle:1.+'
      }
    }
    
    apply plugin: 'io.fabric'
    
    repositories {
      maven { url 'https://maven.fabric.io/public' }
    }
    
    
      compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
        transitive = true;
      }
    
    在清单文件中添加API密钥

     <meta-data
          android:name="io.fabric.ApiKey"
          android:value="<FABRIC_API_KEY>"
      /> 
    

    要让Play Store开发者控制台对堆栈跟踪进行除臭,您需要将文件
    android\build\outputs\mapping\android\release\mapping.txt
    上传到控制台中应用程序菜单的android Vitals->deobfousation files部分。此文件将在每次构建项目时新生成,因此每次上载应用程序的新版本后都需要执行此操作,并且必须在更改任何代码和再次构建之前执行此操作。任何现有的堆栈跟踪都不会为您解除休眠;仅在上载映射文件后报告的。如果在上传发布版本后没有进行另一次构建,则可以手动清除已存在的版本。希望您正在使用版本控制,这样就不会有问题了

    请注意,第二个“
    android
    ”上方可能还有其他内容,具体取决于您的
    build.gradle
    设置


    对于你的问题1,你的(a)部分或(b)部分都是可行的解决方案

    我对其他第三方库不感兴趣。。你能帮我一下吗,不需要任何新的第三方LIB,只需要android开发者控制台就行了。你能谈谈我的问题和解决办法吗
     Fabric.with(this, new Crashlytics());