問題タブ [proguard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - AndroidProguardは外部jarをスキップします
AndroidプロジェクトでProguardを使用しようとしましたが、コマンドライン「androidupdateproject / path / to / project」を使用してProguardをセットアップし、ファイルproguard.cfgがプロジェクトのルートディレクトリに作成されました。(Android 2.3 SDKを使用するEclipseでは、新しいプロジェクトを作成するときに、proguard.cfgファイルが自動的に作成されないため、コマンドラインを使用して手動で追加する必要があります)。
プロジェクトをエクスポートすると、次のエラーが発生しました
これらのエラーメッセージは、私のプロジェクトで使用されている4つの外部jarを示しています
(.classpath)
これが私のproguard.cfgファイルです
'-libraryjars'オプションを追加して、Webで見つかったいくつかの解決策を試しました。例:
しかし、それは役に立ちません。
解決策はありますか?
java - jar ファイルに関するプロガードの問題、見つからない jar を見つける方法は?
Proguard で apk をエクスポートしようとすると、次のような多くのエラー (400 以上) が表示されます。
と
Jackson Json ライブラリを使用していますが、エラーはそれに関連しているようです。
このエラーを調査したところ、Proguards FAQから次のことがわかりました。
クラスまたはインターフェイスへの未解決の参照がある場合は、必須ライブラリを指定するのを忘れている可能性があります。適切に処理するには、Java ランタイム ライブラリを含め、コードで参照されるすべてのライブラリを指定する必要があります。ライブラリを指定するには、-libraryjars オプションを使用します。
SO を検索すると、これに関連する多くの未回答の質問が見つかりましたが、一般的な意味では、使用している jar ファイル (この場合は Jackon JSON) はより多くのライブラリに依存しており、それらを Proguard の構成ファイルに追加する必要があります。どうやって。
ただし、必要なjarファイルとその場所を特定する方法がわかりません。警告には、javax.ws.rs.ext、org.joda.time、org.codehaus.stax2、javax.xml.stream などのさまざまなパッケージが含まれています。
- これらのパッケージが含まれている jar ファイルを特定するにはどうすればよいですか? たとえば、javax.ws.rs.ext.** クラスにはどの jar が必要ですか?
- それらの jar がどこにあり、どのパスが Proguard の -libraryjars で使用されるかを知るにはどうすればよいですか?
どうもありがとう
編集: Android ライブラリ プロジェクトのセットアップ を使用していることにも言及する必要があります。jar はメインの Library プロジェクトにあり、実際の作業プロジェクトには、Library プロジェクトの jar を含むビルド パスがあります。それが違いを生むかどうかはわかりませんが、言及する必要があると思いました。
更新 テストのために、ビルドパスとコードからジャクソンを完全に削除したところ、Proguard が正常に完了しました。問題はまだ残っています...これらのエラーを処理するための正しいアプローチは何ですか?
Eclipse の Android エクスポート ウィザードは自動的に /lib/ jar を proguard に追加しますか、それとも次のように proguard 構成ファイルにすべて手動で追加する必要がありますか?
私はジャクソンのもののためにそれを試しましたが、違いはありませんでした. これは、警告に記載されているクラスに必要なすべての jar ファイルを見つけて追加する必要があるということですか? それらはsdkにありますか、それともJavaインストールにありますか?
これらがばかげた質問である場合は申し訳ありませんが、私はこの数時間これを理解しようとしてきましたが、どうすればよいかわかりません.
再度、感謝します
再更新
ベンジャミンの提案と組み合わせてさらに検索すると、欠落しているクラスのいくつかが、jdk の lib フォルダーにある rt.jar にあることがわかりました。だから私は最終的に追加しました
proguard.cfg ファイルに移動し、警告を 485 から 204 に下げました。それは何かだと思います...残りの警告は、まったく見つからないクラスについて説明しています。アプリはプロガードを実行しなくても問題なく動作するため、これらのクラスは正しい場所にあるはずです。それとも、これらの警告と一緒に使用-dontwarnする必要がありますか?
残りのクラスは次のパッケージに含まれています。
だから今、私は理解する方法が必要です:
- これらのクラスを持つ jar ファイル
- これらのjarはどこにあるので、proguard構成ファイルに含めることができます
java - ProGuardはJavaアプリケーションを壊します-テキストも画像もありません
ProGuardを使用してJavaアプリケーションを難読化しようとしています。すべてのテキストと画像がGUI(Swing)フォームから消えるという問題が発生しています。最適化を無効にしてライブラリを追加しようとしましたが、何も機能していないようです。
難読化ツールによって生成された出力を逆コンパイラーで調べましたが、リソースパスはまだ正しいようです。
- jre / lib / rt.jarの外部にコアJavaライブラリを追加する必要がありますか?
- 無効にする必要のある設定は他にもありますか?
- ...他の提案?
ありがとう。
java - Proguard によって削除された Android Java アプリにログを追加するにはどうすればよいですか?
デバッグを容易にするためにアプリに広範なログを記録しますが、実稼働アプリケーションには最小限のログのみを記録したいと考えています。私の理解では、コンパイラは未使用のコードを削除しません。Android では条件付きコンパイルはありませんが、Proguard は未使用のコードを削除します。トレース クラスの例を次に示します。
次に、アプリケーション自体で次のようにログに記録します。
これは、Proguard が未使用のステートメントを識別して削除できるようにすることに成功しますか? このステートメントはかなり醜いですが、私が見ることができる最短のものです。
Android アプリにログを含めるより簡潔な方法はありますが、本番ビルドでは自動的に削除されますか? コードの特定の側面を削除するように Proguard 自体を構成することは可能だと思いますが、それがこれよりも優れた解決策であるかどうかはわかりません。
jar - プロガードがインジャーを再パッケージ化するのを防ぐには?
以下のパラメータを与えると、
proguard は、処理済みの a.jar と b.jar を C:\Temp に生成します。非常に知的ですが、必要でない場合もあります。*.jar のパッケージ化から proguard を無効にして、実際のクラスを C:\Temp にコピーする方法はありますか?
android - メソッド シグネチャのプロガード エラー
Android アプリの Proguard バージョンを作成しようとすると、奇妙なエラーが発生します。エラーは次のとおりです。
メソッド「setGpsLocation」には次の署名があります。
メソッドを次のように変更することで、エラーを取り除くことができました。
そしてエラーは消えます。これで問題は解決しましたが、最初のメソッド シグネチャの何が問題だったのかわかりません。私の proguard.cfg には -optimizationpasses 2 があります。この値を 3 以上に増やすと、コードの他の領域で同様のエラーが発生し始めます。3 を使用すると、次のようになります。
このエラーの意味に関する情報を見つけるのに苦労しています。
他の誰かが似たようなものを見たことがありますか?
アップデート
署名を変更すると問題が解決するように見えましたが、ランタイム クラッシュが発生していました。
Proguard のマニュアルをさらに読み始め、-dontoptimize を追加すると、ビルド時のエラーとランタイムのクラッシュがなくなることがわかりました。Proguard を使用する目的に反するようなものですね。
-ケビン
java - Proguardで依存する.jarを難読化する方法は?
BizLogic.jar という Jar ライブラリがあり、UI プロジェクトで参照しています。難読化するときは、最初に BizLogic.jar を難読化してから、それらの間の参照を壊さずに UI を難読化しますか?
これは Proguard で可能ですか? そうでない場合、これをサポートできる他の製品はありますか?
ありがとう
android - Antを使用してAndroidプロジェクトをビルドするにはどうすればよいですか?(IntelliJ IDE)
IntelliJ IDEA IDEにプロジェクトがあり、時間の経過とともに拡張できる並列の本番Antビルドプロセスをセットアップしたいと考えています。
IntelliJの機能を使用してAntビルドファイルを作成しました。これは[ビルド]メニューにあるため、Antビルドプロセスが実行され、IDE内で機能しています。すべて良い。
しかし、IntelliJが作成したAntスクリプトは、クラスファイルにコンパイルするだけであり、APKまでの完全なAndroidビルドプロセスを実行していません(私が知る限り)。
Androidプロジェクトのフルビルドを実行するANTスクリプトを取得する方法を理解するのに役立つリファレンスソース(または例)を教えていただけますか?
知っている場合は、Proguard、本番署名、本番マップキーの挿入を含めるように拡張する方法を知っておくと便利です:)
java - Android で Proguard を使用し、アプリの機能的整合性を保護する方法は?
以下の Proguard 構成を使用して Ant をビルドしました。これは、「android」コマンド ライン ツールによって生成されたものです。しかし、このスクリプトを使用してアプリをビルドすると、アプリがデバイス上で実行されると、一連の null ポインター例外が発生して、アプリが異常終了します (難読化プロセスにより、何らかの形でコードにバグが追加されます)。アプリを修正するには、Proguard を介して実行せずに再構築するだけです。
Android アプリで Proguard を使用している人に、a) アプリが最適化され、妥当な程度に難読化され、b) 機能の完全性が損なわれないようにするために、どのようなアドバイスをしますか?
android - Android 開発用の Eclipse で Proguard を使用する場合、Proguard のバージョンを確認/アップグレードするにはどうすればよいですか?
これに関するドキュメントは非常に貧弱です。プロジェクトの rot ディレクトリにある「default.properties」を手動で編集することで、ProGuard を有効にできることを理解しています。そして、すべての設定は同じ場所の「proguard.cfg」ファイルに入りますが、どのバージョンの ProGuard が使用されているか知りたいです (私は Eclise Indigo を使用しています)。また、リリースされるたびに最新バージョンにアップグレードできるようにしたいと考えています。しかし、私はそれを行う方法についての参照を見つけることができません。