2017-11-04 3 views
2

내 LibGdx 기반 안드로이드 앱에서 build.gradle 파일을 아래 언급 된 progaurd 파일과 함께 사용하고 있습니다. 아래 그림과 같이 progaurd- 룰ules.pro 파일이 안드로이드 프로젝트 폴더에 있습니다.안드로이드 빌드가 프로 가드 규칙을 고려하지 않음

질문 :

  1. 나는 Play 스토어에서 내 APK를 발표했다. 비록 내가 progaurd - rules.pro을 가지고 있지만, 내 애플이 추락했을 때 나는 문제가있는 파일의 라인 번호를 얻지 못했다. 2 가지를 알려주십시오.

    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' 
    

2. proguard-android.txt, proguard-project.txt 및 proguard-rules.pro는 무엇입니까? proguard-project.txt와 proguard-rules.pro를 클럽에 가입시킬 수 있습니까?

enter image description here

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

progaurd-rules.pro Android 기기, build.gradle

-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); 
} 

progaurd-android.txt

com/google/firebase/provider/FirebaseInitProvider.class 

답변

0

당신의 스택 트레이스를 deobfuscate하기 위해 Play 스토어 개발자 콘솔을 얻으려면, 당신이 필요로하는 당신의 MainActivity에 키트를 초기화 매니페스트 파일

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

에 API 키 추가 파일을 업로드하려면 Android Vitals ->Deobfuscation 콘솔에있는 응용 프로그램 메뉴의 파일 섹션. 이 파일은 프로젝트를 빌드 할 때마다 새로 생성되므로 새 버전의 앱을 업로드 한 후에는 항상이 작업을 수행해야하며 코드를 변경하고 다시 빌드하기 전에 수행해야합니다. 기존의 스택 트레이스는 당신의 난독성을 제거하지 않습니다. 매핑 파일을 업로드 한 후에보고되는 파일 만 이미 가지고있는 버전의 코드를 수동으로 deobfuscation하려면 use the retrace tool을 사용할 수 있습니다. 릴리스 버전을 업로드 한 이후에 다른 빌드를 수행하지 않았다면 제공됩니다. 버전 관리 기능을 사용하고 있기 때문에 문제가되지 않기를 바랍니다.

두 번째 "android"위에는 build.gradle의 설정에 따라 다른 것이있을 수 있습니다.

귀하의 질문 1에 대해 귀하의 파트 (a) 또는 파트 (b)가 실행 가능한 솔루션입니다.

+0

1.b가 잘 작동합니다. – iappmaker

1

Proguard와 사용하지 않는 코드를 제거하고 코드베이스, 더 작고 더 효율적으로 의미 상 모호한 이름으로 클래스, 필드, 메소드 이름을 변경하여 코드를 난독 화 . 그 결과 작은 크기의 .apk 파일이 리버스 엔지니어링하기가 더 어렵습니다. Proguard는 Android 빌드 시스템에 통합되었습니다.

문제가 발생한 파일의 줄 번호를 가져 오려는 경우 앱이 다운 된 경우. 이를 위해서는 패브릭 또는 시장에서 판매되는 다른 제품과 같은 크래시 틱스 (crashlytics)를 통합해야합니다. 나는 Fabric의 예를 든다.

빌드에 추가하십시오.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:[email protected]') { 
    transitive = true; 
    } 

Fabric.with(this, new Crashlytics()); 
+0

다른 제 3 자 라이브러리에 관심이 없습니다. 새로운 타사 라이브러리가 없어도 나를 도울 수 있지만 Android 개발자 콘솔에서만 가능합니다. – iappmaker

+0

https://firebase.google.com/docs/crash/android를 사용할 수 있습니다. – Dilip

+0

괜찮습니다. 내 문제를 해결해 주시겠습니까? – iappmaker

관련 문제