5

Package Explorer Export > Export Android Application の組み込みの Proguard サポートを介して Proguard を使用しようとしています。メイン プロジェクトは、Android 互換性ライブラリを使用するライブラリ プロジェクトを使用しており、この互換性ライブラリ自体も使用しています。基本的には次のようになります。

BaseLibraryProject BaseActivity libs:android-support-v4.jar MainProject はライブラリ BaseLibraryProject libs:android-support-v4.jar を使用します

このアプリは、デバイスとシミュレーターの両方で問題なく動作します。ただし、Proguard は多くの警告を発し、コード 1 で存在します。

これは、Proguard 関連のリストの最後のビットです。

[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView$OnQueryTextListener
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb$1: can't find referenced class android.widget.SearchView$OnQueryTextListener
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb$1: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: there were 131 unresolved references to classes or interfaces.
[2012-04-09 14:19:49 - MainProject]          You may need to specify additional library jars (using '-libraryjars').
[2012-04-09 14:19:49 - MainProject] Warning: there were 29 unresolved references to program class members.
[2012-04-09 14:19:49 - MainProject]          Your input classes appear to be inconsistent.
[2012-04-09 14:19:49 - MainProject]          You may need to recompile them and try again.
[2012-04-09 14:19:49 - MainProject]          Alternatively, you may have to specify the option 
[2012-04-09 14:19:49 - MainProject]          '-dontskipnonpubliclibraryclassmembers'.
[2012-04-09 14:19:49 - MainProject] java.io.IOException: Please correct the above warnings first.

ご覧のとおり、互換性ライブラリが見つかりません。

これは、-libraryjars と -dontskipnonpubliclibraryclassmembers の両方が含まれている proguard.cfg ファイルの先頭です。

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-libraryjars libs/android-support-v4.jar

違いはありません。ライブラリをBaseLibraryプロジェクト/ MainProject、完全修飾パス名に追加するあらゆる種類の組み合わせを試しました。何も役に立たないようです。

proguard に関するほとんどの stackoverflow の質問は、Ant のセットアップを扱っているようです。この問題の原因と、いくつかのライブラリを使用するこのプロジェクトで Proguard を動作させる方法について何か考えはありますか?

前もって感謝します、

4

1 に答える 1

17

ADT 17 のリリースにより、Proguard の動作方法が改善され、デフォルトが改善されました。これにより、サポート ライブラリの問題が解決されるはずです。

参照 - http://tools.android.com/recent/proguardimprovements

Eclipse (project.properties)

ADT 17 の時点で、デフォルトの project.properties ファイルには、標準の Proguard 構成ファイル (proguard-android.txt) とプロジェクト固有の Proguard 構成ファイル (proguard-project.txt) を参照する次の行が含まれています ...

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

新しい Android プロジェクトを作成して、それがどのようにレイアウトされているかを確認し、これらの新しいファイルを使用することをお勧めします。Proguard と既定の構成が改善されているため、アプリは長期的にメリットがあります。

アップデート

グラドル (build.gradle)

以下では、デフォルトの標準 proguard 構成とローカル プロジェクトの proguard ルールの両方を使用します。

android {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
 }
于 2012-04-09T12:55:32.987 に答える