web-dev-qa-db-ja.com

Android Studio&ProGuard:シンボルgetDefaultProguardFileを解決できませんか?

[〜#〜] ide [〜#〜]:Android Studio 1.1.0

被験者:ProGuard

問題:ProGuardファイルまたはツールがAndroid Studio、getDefaultProguardFileで認識されない)を解決できませんそして、アプリにはproguard-Android.txtおよびproguard-rules.txtファイルがありません。下の画像を参照してください:(build.gradleから)

build.gradle screenshot

これを修正し、アプリのProGuard保護を実現する方法?

27
Fadi Obaji

に変更してみてください-

proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
6
Amit K. Saha

ここに示されているのと同じトラブルがありました:

enter image description here

このエラーメッセージは、ファイルが見つからないように見えるため、読み取れません。しかし、sdk/tools/proguardフォルダーに移動してファイルを見つけ、上部にファイルが実際に読み取られているかどうかをテストするステートメントを追加しました。私は一番上に「これはクラッシュするだろうか?」

enter image description here

エラーからわかるように、ファイルはビルドプロセス中に実際に検出され、追加したステートメントがクラッシュしました。したがって、「シンボルを解決できません」エラーが誤検知を与えているようです。

8
NameSpace

私は本当に同じ問題を抱えていました。だからここに私のプロジェクトが機能した理由があります:

release {
    minifyEnabled true
    proguardFile 'proguard-rules.pro'
}

このコードでテスト:

 Log.d(TAG, "TEST!");
 Log.i(TAG, "INFO!");
 Log.e(TAG, "ERROR!");

Proguard.proにこのスニペットを配置しました(すべてのLog.d-バイトコードのステートメント)

-assumenosideeffects class Android.util.Log {
    public static int d(...);
}

そして猫は言います:

MainAct﹕ INFO!
MainAct﹕ ERROR!

->まさに私が達成しようとしたこと:)

PS:これは、proguard.proモジュール(別名「アプリ」)フォルダー内のファイル。

4
Martin Pfeffer

試してください:

proguardFiles.add(file('proguard-Android.txt')) proguardFiles.add(file('proguard-rules.txt'))

この構造はgradle-experimentalプラグインで機能します。

1
IgorGanapolsky

Android Studioは、単一引用符の代わりに二重引用符を使用してメソッドを認識しないという問題を修正しました。以下は最終的に使用したものです。

    release{
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile("proguard-Android.txt"),
                "proguard-rules.pro"
    }
0
Marvin

これを試して、

{
  minifyEnabled false
  // proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro' 
  proguardFiles 'proguard-rules.pro'
}
0
Suman Dev