Android构建不考虑proguard规则
在我基于LibGdx的android应用程序中,我使用build.gradle文件和下面提到的progaurd文件。我在android项目文件夹中有progaurd-rules.pro文件,如下所示 问题: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
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt', 'proguard-rules.pro'
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());