3

私は無料のアプリAを持っています。寄付アプリであるアプリBを持っています。私は人々がむしろコーヒーに4ドルを支払い、他のチャネルを介して私のアプリを無料で入手することを知っていますが、まあ。

アプリBが合法であり、市場に出回っていて有料の場合は、アプリAでより多くの機能を有効にしたいです。

そのため、アプリAが実行しているのに、アプリBをチェックするために、マーケットライセンスコードのパッケージ名を変更するだけでよいのではないかと思いました。

たとえば、この行はlvlライブラリコードからのものです。

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx,
new AESObfuscator(SALT, ctx.getPackageName(), deviceId)),
BASE64_PUBLIC_KEY);

ctx.getPackageName()をアプリBのパッケージ名に置き換えたいと思います。これはもちろん私のアプリであり、私は知っています。例えば:

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx,
new AESObfuscator(SALT, com.something.app.b, deviceId)),
BASE64_PUBLIC_KEY);

誰かがこれを経験したことがありますか?

4

1 に答える 1

1

難読化コンストラクターへの引数を変更しても、期待どおりの結果は得られません。チェックされるパッケージは、LicenseCheckerコンストラクターによって最初の引数から決定されます。パッケージBのパッケージ名とバージョンコードを取得するLicenseCheckerの新しいコンストラクターを定義すると機能する場合があります。

アプリAが独自のライセンスも確認する場合は、ServerManagedPolicyも拡張して、アプリAの設定ファイルにアプリごとに個別のキャッシュデータを保持する必要があります。

これが機能したとしても、特定のバージョンコードをアプリAに接続する必要があるため、市場でアプリBを更新すると機能しなくなることに注意してください。

于 2011-01-30T17:53:36.993 に答える