これは本当に良い質問です。私たちは、一部のクラスで難読化を無効にする必要がある理由を知っていますが、InAppBillingService
で無効にする必要がある理由については答えません。チェックアウトでInAppBillingService.class
が生成された場合、1回のリバースコールはなく、getClass().getName()
コールもないことがわかります。これは反射がそこで使用されないことを意味します。 IAB実装では、生成されたクラスを名前で直接参照するため、難読化者は最適化ステップでベンディングカルスを削除しません。したがって、まだ「なぜこれは必須であるのですか?」というものがあります。質問。
My appはすでに半年以上にわたってIAP V3を使用しています。難読化された請求パッケージであり、IABにはまったく問題はありません。私が見る唯一の潜在的な問題は、Androidが補助インタフェース用のJavaクラスを生成する方法を変更した場合です。それはリフレクションを使い始めるところですが、そのクラスを難読化しないようにする必要があります。しかし、これはおそらくaidlを使って他の多くのアプリでコーディングを中断する可能性があるため、起こりそうもありません。
@AlexWienが指摘しているように、xmlデシリアライズと関係がありますか?私は本当にGoogleがこれに関する詳細を提供すべきだと思う。アプリ内課金ランタイムエラーが発生した場合は、難読化につながる可能性のある原因について知っておくとよいでしょう。 – l33t
Android AIDLは、直列化および逆シリアル化に 'android.os.Bundle'クラスを使用します。難読化されたコードで使用することは安全です。私が認識している唯一のXML関連の問題は、AndroidManifest.xmlにサービスを登録して難読化する状況です。この場合、サービスの名前も難読化され、システムはもう古い名前の下にそれを見つけることができません。彼らが難読化する必要があるのは本当に奇妙です。多分ちょうどの場合;) –
パラノイアモード:「Googleスパイエンジンが課金クラスへのすべてのアクセスを追跡したいからかもしれません;-)」、パノニアモードはオフです。 – AlexWien