2017-08-08 7 views
0

私はアプリでいくつかのCommon DTOを持っている私のライブラリを難読化しようとしています。私のアプリはこのDTOを使います。 私は2つのproguard-rulesファイルを作成しました。これらのファイルには他の設定が含まれています。共通のDTOを持っているProguardのlibaryとAppの難読化

[OK]を、これは状況です:

  1. 私は、ビルドバリアントを持つアプリを実行すると - >「リリース」とlib->「デバッグ」、アプリのWeb APIと何から来た私のlib DTOを認識しないしロードする。アプリが小型化されていて、libがそうでないのが普通のようです。彼らは同じDTOで手を差し伸べることはできません。
  2. しかし、両方のビルドバリアント - > "リリース"を選択すると、コンパイル時にエラーが発生し、アプリケーションがライブラリDTOを認識しなくなります。メッセージはError:(23, 41) error: package com.testlib.model.DTO does not existですが、実際に存在します。

私は共通のプロガードルールを定義しなければなりませんでしたか?

+0

下記のコメントを削除しました。https://stackoverflow.com/a/38042098/229044あなたの記事を見に来るように他の人の質問または答えの下にコメントを残さないでください。これはあなたの最終的な警告です。次回この作業を行うときに中断されます。 – meagar

+0

@meagarなぜあなたのコメントを削除しますか?それでは?どこに私の質問にリンクを張ることができないと書かれていますか?その法則がスタックオーバーフローに存在する場合は、私に知らせてください。 – Kenji

+0

はい。 2番目の意見が欲しかったので、次のことを確認できます:他の人にあなたの質問や回答を見てもらうように投稿をコメントすることは迷惑メールとみなされます。ここでは歓迎されません。コメントは削除されますが、停止しないと中止が可能です。 –

答えて

0

このようにAndroidでProguardを使用することは想定されていません。

ライブラリを他の人にエクスポートする前に一部のライブラリを保護する場合(公開する前にGoogleサービスをproguardで処理するなど)、すべての公開APIを難読化しないようにする必要があります(ケースの公開DTOなど) 。しかし、あなたのライブラリモジュールは外からのものではないので、おそらくProguardを使ってそれを処理したくないかもしれません。

結果のアプリを保護したい場合は、結果のアプリにのみProguardを適用します。それを他のモジュールにまったく適用する必要はありません。アプリケーションモジュールのコンパイル時には、Androidビルドツールがすべての依存関係をまとめてまとめ、アプリケーションコードとライブラリコードの両方で同時にProguardをすべてのアプリケーションに適用します。つまり、あなたのアプリプロゴアルールには、アプリコードとそのすべての依存関係に関するルールが含まれます。

関連する問題