ユースケースはこちらです。私は企業向けのカスタムアプリケーションを作成します。これらのアプリケーションはプロプライエタリであり、様々な理由からAndroidマーケットには不適切です。一部の顧客は、アプリケーションが定期的に社内サーバーに定期的に連絡して更新をチェックし、必要に応じて自動的にダウンロードしてインストールすることを要求しています。私はこれを行うための働く仕組みを持っていますが、私が望むほど堅牢ではありません。最善の解決策は、Android versionCode(およびおそらくVersionName)をサーバーに渡して、サーバー上の潜在的なアップグレード.apkのversionCodeと比較する、アプリケーションをデバイス上で実行することです。サーバー上の.apkがアップグレードを表す場合にのみ、デバイスにアップロードされてインストールされます。アンドロイド環境外の.apkファイルからAndroidのversionCode&versionNameを取得するにはどうすればよいですか?
多くの提案されたソリューションが掲載されています。 1つの一般的な方法は、versionCodeとversionNameを含む別のテキストファイルをサーバーに配置することですが、このテキストファイルが.apkファイルの値と同期しないように管理エラーが発生する可能性があります。結果は、一定で不必要なダウンロードになります。 apktoolやそのラッパーを使用するなど、実行可能なさまざまなソリューションには別の欠点があります。
私が追求している回避策がありますが、最近ダウンロードされてインストールされた.apkファイル(チェックサムなど)についての追加情報が一部残っているようです。この情報をサーバーに渡して比較することができます。これは仕事にすることができます、それはちょうど私が好きなクリーンssではないです。
私は、.apkファイルからversionCodeとversionNameを取得できるライブラリ.jarファイルを探しています。基本的に、.apkファイルの場所を表すFileオブジェクトが渡され、versionCodeとversionNameを取得するメソッドが提供されます。
他の提案を歓迎します。