2017-11-04 5 views
2

私のLibGdxベースのアンドロイドアプリでは、下記のprogaurdファイルでbuild.gradleファイルを使用しています。私は、以下に示すように、progaurd-rules.proファイルをアンドロイドプロジェクトフォルダに持っています。Android buildはproguard-rulesを考慮していません

質問:

  1. 私は、Playストアで私のAPKをリリースしています。私はprogaurd- ules.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のバイタル - >Deobfuscationコンソールのアプリケーションメニューのファイルセクションを開きます。このファイルは、プロジェクトをビルドするたびに新しく生成されるので、新しいバージョンのアプリケーションをアップロードした後は毎回これを行う必要があります。コードを変更して再ビルドする前に実行する必要があります。既存のスタックトレースはすべてあなたのために難読化されません。マッピングファイルをアップロードした後に報告されるもののみ。すでにリリースされているものを手動で破棄するには、use the retrace toolがあります。ただし、リリースバージョンをアップロードしてから別のビルドを行っていない場合に限ります。うまくいけばバージョンコントロールを使用しているので、問題はありません。

の設定に応じて、2番目の「android」の上には何かがある可能性があります。

あなたの質問1では、パート(a)またはパート(b)のいずれかが実行可能な解決策です。

+0

1.bはうまくいきます。 – iappmaker

1

ProGuardのは、未使用のコードを削除し、コードベース、より小さく、より効率的にする意味的に曖昧な名前でクラス、フィールド、メソッドの名前を変更することで、あなたのコードを難読化。その結果、リバースエンジニアリングが難しい.apkファイルのサイズが小さくなります。 ProguardはAndroidビルドシステムに統合されています。

問題が発生したファイルの行番号を取得する場合は、アプリケーションがクラッシュしたとき。このためには、Fabricや市場で入手可能なその他のクラッシュ・ミックスを統合する必要があります。私は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

私は他のサードパーティのライブラリに興味がありません。新しいサードパーティのライブラリがなくても、アンドロイドデベロッパーコンソール – iappmaker

+0

のみで私を助けてください。https://firebase.google.com/docs/crash/android – Dilip

+0

これは問題ありません。私の問題に対処してください。 – iappmaker

関連する問題