この質問はすでに出されていると思いますが、彼らの回答に満足できず、ここに再度投稿します。
似たようなアプリを作ろうとする模倣者から私の Android アプリの資産を保護する方法を誰か教えてもらえますか?
いつものように、利便性とセキュリティの間にはトレードオフがあります。アプリのセキュリティを強化すればするほど、開発の利便性は低下します。
特にルート化された電話で逆コンパイルが容易なため、ソースコードは本質的に安全ではありません。ソース コードを保護するために、コードを難読化および/または暗号化して、逆コンパイルを防ぐことができます。Android で利用できるツールは正確にはわかりませんが、ビルド プロセスが複雑になることは間違いありません。難読化するだけでも逆コンパイルは可能ですが、非常に困難になり、強力なレベルの難読化が使用されている場合、コードを逆コンパイルしようとする人がバイトコードを知って理解する必要が生じる可能性があります。
資産を保護するには、暗号化を使用するしかないと思います。繰り返しますが、実装する場所によっては、アプリやビルド プロセスが複雑になります。
暗号化を使用して資産を保護する場合でも、ソース コード内の暗号化キーを保護する必要があります。明らかに、暗号化キーがソース コード内の平文である場合、使用する暗号化方式は問題ではなく、誰でもキーと資産を取得して復号化できます。これでできることは、飛び越えるための小さなフェンスをもう 1 つ追加することだけです。
ただし、暗号化キーを正しく保護し、優れた暗号化アルゴリズムを使用すれば、心配する必要は少なくなります。これはかなり複雑なプロセスですが、コード内で暗号化にキーを使用し、それを平文で保持することは困難です。コード内にプレーンテキストで保持しない場合でも、ある時点で復号化を実行するためにメモリ内にある必要があります。したがって、誰かが適切なタイミングでデバッガーを接続したり、メモリをダンプしたりできる場合、キーが危険にさらされます。もちろん、これにははるかに熟練した敵が必要です。
全体として、誰があなたの資産を盗むことを心配しているかを正確に判断する必要があります. 平均的なジョーがそれらをコピーすることを心配している場合は、問題ありません。プロのハッカーやスクリプトキディーなどがそれらにアクセスすることを心配している場合は、おそらく運が悪いでしょう.
似たようなアプリを作ろうとする模倣者から私の Android アプリの資産を保護する方法を誰か教えてもらえますか?
通常、できません。アプリ内であれば、誰でもアクセスできます。
独自の暗号化方式を使用するか、DexGuardなどのツールを使用してください。ただし、復号化エンジンとキーはアプリ自体に存在する必要があるため、アセットに到達するために必要な労力のレベルが上がるだけです。より困難にすることで、誰かがあなたの APK からアセットを取得する可能性を減らしますが、その可能性を防ぐことはできません。そしてもちろん、このようなものの多くを取得する方法は他にもあります (たとえば、スクリーンショットや画像エディター、アプリで再生されるオーディオの録音など)。