(57)【要約】デフォルトの圧縮レートと比較してより高い圧縮レートを有する圧縮アルゴリズムを用いて、ソースアプリケーション中の、ＳＯファイルなど、複数の被呼び出しファイルを圧縮することによって、ソースアプリケーションのサイズが縮小される。ソースアプリケーション自体が、圧縮アルゴリズムを用いて圧縮された被呼び出しファイルを伸張することができるように、圧縮アルゴリズムと対応する伸張ファイルが、ソースアプリケーション中の複数の呼び出しファイルに挿入される。
2020504882.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを圧縮するための方法であって、
圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも１つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成するステップと、
修正された呼び出しファイルを形成するために少なくとも１つの呼び出しファイルを修正するステップであって、前記修正された呼び出しファイルは、前記圧縮アルゴリズムに対応する伸張機能ファイルを呼び出し、前記伸張機能ファイルは、前記圧縮された呼び出しファイルを伸張し且つ伸張された被呼び出しファイルをロードする、ステップと、
前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップと
を含む、方法。
【請求項２】
前記少なくとも１つの被呼び出しファイルを圧縮するステップの前に、前記圧縮アルゴリズムを使用して圧縮可能である前記ソースアプリケーション中の被呼び出しファイルを探索するステップをさらに含む
請求項１に記載の方法。
【請求項３】
前記少なくとも１つの被呼び出しファイルは、ダイナミックリンクライブラリファイルであり、
前記少なくとも１つの呼び出しファイルは、前記ダイナミックリンクライブラリファイルを呼び出す実行可能ファイルであり、
前記圧縮アルゴリズムを使用して圧縮可能である前記ソースアプリケーション中の被呼び出しファイルを探索する前記ステップは、前記ソースアプリケーション中の複数のタイプのファイルから前記ダイナミックリンクライブラリファイルを探索するステップを含む
請求項２に記載の方法。
【請求項４】
伸張機能ファイルを、前記少なくとも１つの呼び出しファイルの初期化オブジェクトに追加するステップをさらに含む
請求項１に記載の方法。
【請求項５】
前記伸張機能ファイルを、前記アプリケーションのメインフレームワークに属する呼び出しファイルに追加するステップをさらに含む
請求項１に記載の方法。
【請求項６】
前記伸張機能ファイルを、前記アプリケーションのメインフレームワークに属する呼び出しファイルに追加するステップをさらに含む
請求項４に記載の方法。
【請求項７】
伸張機能ファイルを、前記呼び出しファイルの初期化オブジェクトに追加するステップは、
前記呼び出しファイルのプログラムエントリロケーションにある第１の動作機能を探索するステップと、
前記第１の圧縮アルゴリズムに対応する伸張機能ファイルを、前記第１の機能の呼び出しオブジェクトに追加するステップと
を含む
請求項４に記載の方法。
【請求項８】
伸張機能ファイルを、前記呼び出しファイルの初期化オブジェクトに追加するステップの前に、前記ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名を、前記ソースアプリケーションのグローバルアプリケーション設定ファイルから抽出するステップをさらに含む
請求項４に記載の方法。
【請求項９】
前記対応する呼び出しファイルを逆コンパイルするステップをさらに含む
請求項１に記載の方法。
【請求項１０】
前記対応する呼び出しファイルを逆コンパイルするステップをさらに含む
請求項５に記載の方法。
【請求項１１】
前記被呼び出しファイル間の依存関係を判定するステップと、
前記依存関係を記録する依存ファイルを生成するステップと
をさらに含む
請求項１に記載の方法。
【請求項１２】
前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップは、前記依存ファイル、前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、前記圧縮されたアプリケーションを取得するステップを含む
請求項１１に記載の方法。
【請求項１３】
前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップは、
前記修正された呼び出しファイルを圧縮し、それらを、修正の前の前記少なくとも１つの呼び出しファイルのロケーションに置き換えるステップと、
前記圧縮された被呼び出しファイル及び前記伸張機能ファイルを圧縮し、それらを、前記ソースアプリケーションに追加し、前記圧縮されたアプリケーションを取得するステップと
を含む
請求項１に記載の方法。
【請求項１４】
前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップは、
前記アプリケーションのメインフレームワークに属する呼び出しファイルを抽出及び圧縮し、圧縮されたメインフレームワークファイルを取得するステップであって、前記伸張機能ファイルは、前記メインフレームワーク呼び出しファイルに追加されている、ステップと、
前記ソースアプリケーションのオリジナルのメインフレームワークファイルを、前記圧縮されたメインフレームワークファイルと置き換えるステップと
をさらに含む
請求項１３に記載の方法。
【請求項１５】
前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップの後、前記アプリケーション中の前記少なくとも１つの呼び出しファイルに属する機能コンポーネントに再署名するステップをさらに含む
請求項１に記載の方法。
【請求項１６】
前記アプリケーション中の前記少なくとも１つの呼び出しファイルに属する機能コンポーネントに再署名するステップの前に、前記方法は、前記アプリケーション中の前記少なくとも１つの呼び出しファイルに属する前記機能コンポーネントが、オリジナルの署名を有すると判定するステップをさらに含む
請求項１５に記載の方法。
【請求項１７】
圧縮アルゴリズムを使用して、ソースアプリケーション中の被呼び出しファイルを圧縮するステップの前に、
前記ソースアプリケーションを伸張するステップと、
前記少なくとも１つの呼び出しファイル及び前記少なくとも１つの被呼び出しファイルを探索するステップと
をさらに含む
請求項１に記載の方法。
【請求項１８】
前記圧縮されたアプリケーションに署名するステップをさらに含み、
前記圧縮アルゴリズムは、ＬＺＭＡアルゴリズムである
請求項１に記載の方法。
【請求項１９】
前記圧縮アルゴリズムは、デフォルトの圧縮アルゴリズムよりも高い圧縮のレートを有する
請求項１に記載の方法。
【請求項２０】
アプリケーションを伸張するための方法であって、
第１の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、前記予め設定された圧縮アルゴリズムに対応する第２の伸張アルゴリズムを使用する伸張機能ファイルとを取得するステップであって、前記呼び出しファイルは、前記伸張機能ファイルを呼び出すように修正される、ステップと、
前記呼び出しファイルによる前記被呼び出しファイルの呼び出し中に、前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップであって、前記第１の伸張アルゴリズムは、前記予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第１の圧縮アルゴリズムに対応する、ステップと
を含む、方法。
【請求項２１】
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、メインフレームワークの呼び出しファイルを呼び出し、前記圧縮されたアプリケーション中の前記伸張機能ファイルを初期化するステップをさらに含む
請求項２０に記載の方法。
【請求項２２】
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、前記呼び出しファイルによって呼び出されるべき被呼び出しファイルが、前記圧縮された被呼び出しファイル中に存在するかどうかを判定するステップをさらに含む
請求項２０に記載の方法。
【請求項２３】
前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルが存在しない場合、前記被呼び出しファイルを現在のオペレーティングシステムにおいて探索するか、又は前記被呼び出しファイルをネットワークからダウンロードするステップをさらに含む
請求項２２に記載の方法。
【請求項２４】
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、前記方法は、
前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルが、別の被呼び出しファイルに依存すると判定するステップと、
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記別の被呼び出しファイルを伸張するステップと、
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルを伸張するステップと
を含む
請求項２０に記載の方法。
【請求項２５】
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、前記方法は、
前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルが、別の被呼び出しファイルに依存すると判定するステップと、
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記別の被呼び出しファイルを伸張するステップと、
前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルを伸張するステップと
を含む
請求項２２に記載の方法。
【請求項２６】
プロセッサによって実行され、アプリケーションを圧縮するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体であって、前記方法は、
圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも１つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成するステップと、
修正された呼び出しファイルを形成するために少なくとも１つの呼び出しファイルを修正するステップであって、前記修正された呼び出しファイルは、前記圧縮アルゴリズムに対応する伸張機能ファイルを呼び出し、前記伸張機能ファイルは、前記圧縮された呼び出しファイルを伸張し且つ伸張された被呼び出しファイルをロードする、ステップと、
前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップと
を含む、非一時的コンピュータ可読媒体。
【請求項２７】
プロセッサによって実行され、アプリケーションを伸張するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体であって、前記方法は、
第１の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、前記予め設定された圧縮アルゴリズムに対応する第２の伸張アルゴリズムを使用する伸張機能ファイルとを取得するステップであって、前記呼び出しファイルは、前記伸張機能ファイルを呼び出すように修正される、ステップと、
前記呼び出しファイルによる前記被呼び出しファイルの呼び出し中に、前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップであって、前記第１の伸張アルゴリズムは、前記予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第１の圧縮アルゴリズムに対応する、ステップと
を備える非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その全体が参照により本明細書に組み込まれる、２０１６年１２月３１日に出願された、中国特許出願第２０１６１１２６６０８８．７号の優先権を主張する。
【０００２】
本出願は、アプリケーション圧縮技術の分野に関し、特に、アプリケーションを圧縮するための方法及び装置に関する。
【背景技術】
【０００３】
例えば、Ａｎｄｒｏｉｄオペレーティングシステムにおいて使用されるＡＰＫアプリケーションの場合。ＡＰＫ（Ａｎｄｒｏｉｄアプリケーションパッケージ）は、モバイルアプリケーション及びミドルウェアを配信及びインストールするためにＡｎｄｒｏｉｄオペレーティングシステムによって使用されるアプリケーションファイルフォーマットである。Ａｎｄｒｏｉｄデバイス上でＡｎｄｒｏｉｄアプリケーションのコードを動作させるために、コードは、最初にコンパイルされ、次いでＡｎｄｒｏｉｄシステムによって認識可能なファイルにパックされなければならない。Ａｎｄｒｏｉｄシステムによって認識及び動作され得るそのようなファイルフォーマットは「ＡＰＫ」である。ＡＰＫファイルは、コンパイルされたコードファイル、ファイルリソース、証明書、及びマニフェストファイルを含む。
【０００４】
ＡＰＫファイルサイズの縮小は、商用アプリケーションの絶え間ない最適化の目標の１つである。ＡＰＫアプリケーションのサイズを縮小することは、主に、アプリケーション自体の機能及び論理フレームワークを修正することによって達成される。しかしながら、ＡＰＫアプリケーションがそれ自体のサービス論理の選定を最適化した場合、サイズは、生成されたＡＰＫアプリケーションを再圧縮すること、又はそのビデオ、オーディオ、及び画像リソースのサイズを変更することによってさらに縮小され得る。
【０００５】
ＡＰＫアプリケーション中の共有オブジェクト（ＳＯ）ファイルのために使用されるデフォルトの圧縮アルゴリズムは、ＡＰＫアプリケーションの生成中に使用されるデフレートアルゴリズムである。しかしながら、ＡＰＫアプリケーションがＡｎｄｒｏｉｄモバイルフォンにインストールされた後、モバイルフォンがＡＰＫアプリケーションを動作させるとき、ＡＰＫアプリケーション中のＳＯファイルは、ＳＯファイルがロードされるとき、最初に伸張される必要がある。また、Ａｎｄｒｏｉｄシステムに組み込まれた伸張アルゴリズムは、デフレートアルゴリズムを通してローディングを実装する。
【０００６】
何らかのオペレーションシステムの限界により、そのオリジナルのデフォルトの圧縮アルゴリズムは変更されることはできず、より高い圧縮レートを有するアルゴリズムを直接使用し、圧縮を実施することが不可能である。
【発明の概要】
【０００７】
本発明は、ソースアプリケーションのサイズを縮小するための方法及び媒体を提供する。本発明は、ソースアプリケーションを圧縮する方法を提供する。本方法は、圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも１つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成する。加えて、本方法はまた、少なくとも１つの呼び出しファイルを修正し、修正された呼び出しファイルを形成する。修正された呼び出しファイルは、圧縮アルゴリズムに対応する伸張機能ファイルを呼び出す。伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードする。さらに、本方法は、追加として、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得する。
【０００８】
加えて、本発明はまた、ソースアプリケーションを伸張するための方法を提供する。本方法は、第１の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する第２の伸張アルゴリズムを使用する伸張機能ファイルとを取得する。呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。さらに、呼び出しファイルによる被呼び出しファイルの呼び出し中に、本方法は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする。第１の伸張アルゴリズムは、予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第１の圧縮アルゴリズムに対応する。
【０００９】
さらに、本発明は、プロセッサによって実行され、アプリケーションを圧縮するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体をも提供する。本方法は、圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも１つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成するステップを含む。本方法は、少なくとも１つの呼び出しファイルを修正し、修正された呼び出しファイルを形成するステップをも含む。修正された呼び出しファイルは、圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すためのものである。伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードするためのものである。本方法は、追加として、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップを含む。
【００１０】
加えて、本発明は、プロセッサによって実行され、アプリケーションを伸張するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体を提供する。本方法は、第１の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する第２の伸張アルゴリズムを使用する伸張機能ファイルとを取得するステップを含む。呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。本方法は、呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードするステップをさらに含む。第１の伸張アルゴリズムは、予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第１の圧縮アルゴリズムに対応する。
【００１１】
本発明の原理が利用される例示的な実施形態を示す、以下の発明を実施するための形態及び添付の図面を参照することによって、本発明の特徴及び利点のより良い理解が得られるであろう。本明細書の内容に従って本出願を実装するように本出願の技術的手段のより良い説明を提供し、本出願の上記及び他の目的、特徴、及び利点をより理解しやすくするために、本出願の特定の実施形態が以下で与えられる。
【図面の簡単な説明】
【００１２】
以下の本文中の好ましい実施形態の詳細な説明を読むことによって、様々な他の利点及び利益が当業者に明らかになろう。図面は、好ましい実施形態を示すためのものであるにすぎず、本出願を限定するものと解釈されない。また、同じ参照符号が、図面全体にわたって同じ部分を示すために使用される。
【００１３】
【図１Ａ】本発明による、ソースアプリケーションを圧縮する方法１００の例を示すフローチャートである。
【図１Ｂ】本発明の代替実施形態による、ソースアプリケーションを圧縮する方法１２０の例を示すフローチャートである。
【図１Ｃ】本発明の実施形態による、ファイルをカプセル化する方法１４０の例を示すフローチャートである。
【図２Ａ】本発明による、ソースアプリケーションを圧縮する方法２００の例を示すフローチャートである。
【図２Ｂ】本発明による、伸張機能ファイルを、呼び出しファイルの初期化オブジェクトに追加する方法２２０の例を示すフローチャートである。
【図２Ｃ】本発明による、方法２４０を示すフローチャートである。
【図３】本発明による、ソースアプリケーションを伸張する方法３００の例を示すフローチャートである。
【図４】本発明による、ソースアプリケーションを伸張するための方法４００の例を示すフローチャートである。
【図５】本発明の実施形態による、圧縮プロセス５００の例を示す図である。
【図６】本発明の実施形態による、伸張プロセス６００の例を示す図である。
【図７Ａ】本発明の実施形態による、アプリケーションを圧縮するためのいくつかのモジュールを含む装置７００の例を示す図である。
【図７Ｂ】本発明の実施形態による、アプリケーションを圧縮するためのいくつかのモジュールを含む装置７００の例を示す図である。
【図８】本発明の実施形態による、アプリケーションを伸張するためのいくつかのモジュールを含む装置８００の例を示す図である。
【発明を実施するための形態】
【００１４】
本開示の例示的な実施形態が、図面を参照しながらより詳細に説明される。本開示の例示的な実施形態が図面に示されているが、本開示は、様々な形態で実装されることができ、ここで記載される実施形態によって限定されるべきではないことを理解されたい。代わりに、これらの実施形態は、本開示のより完全な理解を与えるために、及び本開示の範囲を当業者に十分に伝えるために提供される。
【００１５】
本出願は、アプリケーションの圧縮及びアプリケーションの伸張に適用され得る。アプリケーションの開発中に、全ての側面からできる限りアプリケーション及びアプリケーションのサイズを最適化することが要求される。例えば、Ａｎｄｒｏｉｄオペレーティングシステムにおいて使用されるＡＰＫアプリケーションの場合、ＡＰＫアプリケーションの生成中に、ＡＰＫアプリケーション中の共有オブジェクト（ＳＯ）ファイルは、圧縮アルゴリズムを使用して圧縮され得、次いで、圧縮ファイルはＡＰＫアプリケーションにカプセル化され得、従って、ＡＰＫアプリケーションの圧縮が行われ得、ＡＰＫアプリケーションのサイズは縮小され得る。
【００１６】
本出願では、ソースアプリケーションは、呼び出しファイルによって被呼び出しファイルを呼び出すことを通して１つ又は複数の特定のタスクを完遂する必要があるコンピュータプログラムである。例えば、Ａｎｄｒｏｉｄオペレーティングシステム中のＡＰＫアプリケーションは、ソースアプリケーション（コンピュータプログラム）である。呼び出しファイルは、ソースアプリケーション（コンピュータプログラム）から抽出された実行可能コードファイルである。例えば、ＡＰＫアプリケーションから抽出された実行可能コードファイルであるｄｅｘファイルが、呼び出しファイルである。
【００１７】
被呼び出しファイルは、ソースアプリケーション（コンピュータプログラム）から抽出され、プログラム動作中に呼び出しファイル（実行可能コードファイル）によってロードされる必要があるコードファイルである。例えば、ＡＰＫアプリケーションから抽出されたＳＯファイルが、被呼び出しファイルである。呼び出しファイル（実行可能コードファイル）中の機能が呼び出され、呼び出しファイル（実行可能コードファイル）のコードを実行することによって、被呼び出しファイル（例えば、ＳＯファイル）をロードすることができる。
【００１８】
本出願では、予め設定された圧縮アルゴリズムは、データ圧縮アルゴリズムであり、詳細には、任意の適切な圧縮アルゴリズムであり得、好ましくは、望ましい技術的効果を達成するための高い圧縮レートを有する圧縮アルゴリズムであり、これは、本出願において限定されない。
【００１９】
図１Ａは、本発明による、ソースアプリケーションを圧縮する方法１００の例を示すフローチャートを示す。図１Ａに示されているように、方法１００は、予め設定された圧縮アルゴリズムを使用してソースアプリケーション中の被呼び出しファイル（例えば、ＳＯファイル）を圧縮し、圧縮された被呼び出しファイルを形成することによって、ステップ１０１において始まる。任意選択で、２つ以上の圧縮された被呼び出しファイルが形成され得る。少なくとも１つの被呼び出しファイルがソースアプリケーション中に存在し、予め設定された圧縮アルゴリズムを使用して全部又は一部の被呼び出しファイルを圧縮することは、詳細には、被呼び出しファイルを、１つ又は複数の圧縮された被呼び出しファイルに圧縮することであってもよく、これは、本出願において限定されなくてよい。例えば、全てのＳＯファイルは、ＡＰＫアプリケーションから抽出され、次いで、（レンペルジブマルコフ連鎖アルゴリズムの省略である）ＬＺＭＡアルゴリズムを使用して、１つの圧縮されたＳＯファイル、即ち、圧縮された被呼び出しファイルに圧縮され得る。
【００２０】
被呼び出しファイルが、予め設定された圧縮アルゴリズムを使用して、圧縮された被呼び出しファイルに圧縮された後、方法１００はステップ１０２に移り、被呼び出しファイル（例えば、ＳＯファイル）を呼び出す呼び出しファイル（実行可能コードファイル）を、呼び出しファイル（実行可能コードファイル）が、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正する。
【００２１】
伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードするために使用される。予め設定された圧縮アルゴリズムのためのプレコンパイルされたファイルを参照する伸張機能ファイルは、圧縮された被呼び出しファイルを伸張し、被呼び出しファイルのコードをロードすることが可能である。伸張機能ファイルはまた、呼び出しファイル（実行可能コードファイル）によって呼び出され得る被呼び出しファイルである。
【００２２】
被呼び出しファイルは、今や、予め設定された圧縮アルゴリズムによって圧縮されているので、呼び出しファイル（実行可能コードファイル）によって被呼び出しファイルを呼び出すためのオリジナルのステップは、もはや成功裏に実行され得ない。従って、呼び出しファイル（実行可能コードファイル）のオリジナルの論理は、修正される必要がある。呼び出しファイル（実行可能コードファイル）によって被呼び出しファイルを呼び出すためのプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正される。
【００２３】
そのような修正の後、呼び出しファイル（実行可能コードファイル）のコードが実行されたとき、（予め設定された圧縮アルゴリズムによって圧縮された）被呼び出しファイルを伸張することが可能な伸張機能ファイルがロードされ得、次いで、オリジナルの被呼び出しファイルが取得され得る。例えば、ＡＰＫアプリケーションのメインｄｅｘ（実行可能）ファイルの場合、ＳＯファイルの全てを呼び出すためのオリジナルのステップは、ＳＯファイル伸張及びローディングを呼び出すように修正され、ここで、ＳＯファイルは、ＬＺＭＡアルゴリズムによって圧縮された。
【００２４】
呼び出しファイル（実行可能コードファイル）が修正された後、方法１００はステップ１０３に移り、デフォルトの圧縮アルゴリズムを使用して、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得する。圧縮されたアプリケーションは、予め設定された圧縮アルゴリズムによって部分的に圧縮され、対応する修正を受けたアプリケーションである。
【００２５】
修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、新しいアプリケーションにリパック及びカプセル化され、圧縮されたアプリケーションを取得する。例えば、修正されたｄｅｘ（実行可能）ファイル、ＬＺＭＡアルゴリズムによって圧縮された全てのＳＯファイル、及びＬＺＭＡアルゴリズムを処理することが可能なプレコンパイルされたＳＯファイルが、ＡＰＫアプリケーションにリパックされ、取得されたＡＰＫアプリケーションは、圧縮されたアプリケーションである。
【００２６】
本出願のこの実施形態によれば、ソースアプリケーション中の被呼び出しファイルは、オリジナルの圧縮アルゴリズムのものよりも高い圧縮レートを有するアルゴリズムなど、予め設定された圧縮アルゴリズムを使用して圧縮される。その結果、従って、アプリケーションを圧縮するための圧縮レートが改善され得、より小さいサイズのアプリケーションが取得され得る。
【００２７】
さらに、呼び出しファイル（実行可能コードファイル）は、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正される。修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、次いで、カプセル化され、アプリケーションが、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができるような、圧縮されたアプリケーションを取得する。
【００２８】
このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張する機能を有し、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
【００２９】
図１Ｂは、本発明の代替実施形態による、ソースアプリケーションを圧縮する方法１２０の例を示すフローチャートを示す。方法１００及び方法１２０は同様であり、その結果、同じ参照番号を利用して、両方の方法に共通であるステップを指定する。
【００３０】
図１Ｂに示されているように、方法１２０は、予め設定された圧縮アルゴリズムを使用して圧縮可能であるソースアプリケーション中の被呼び出しファイルを最初に探索することによって、方法１２０がステップ１２２において始まるという点で方法１００とは異なる。ソースアプリケーションは、複数のタイプのファイルを有し得る。予め設定された圧縮アルゴリズムを使用して圧縮可能である被呼び出しファイルは、予め設定された圧縮アルゴリズムがそれに適用可能であり、アプリケーションの正常な動作を不能にしない被呼び出しファイルである。予め設定された圧縮アルゴリズムを使用して圧縮可能である被呼び出しファイルは、ソースアプリケーションの様々なファイル中で見つけられる。例えば、全てのタイプのファイルは、ソースアプリケーション中で見つけられ得、見つけられたファイル中のＳＯファイルの全ては、予め設定された圧縮アルゴリズムを使用して圧縮可能であるファイルである。
【００３１】
本出願の好ましい実施形態では、被呼び出しファイルはダイナミックリンクライブラリファイルであり、呼び出しファイルは、ダイナミックリンクライブラリファイルを呼び出す実行可能ファイルである。加えて、ステップ１２２において予め設定された圧縮アルゴリズムを使用して圧縮可能であるソースアプリケーション中の被呼び出しファイルを探索することは、詳細には、ソースアプリケーション中に含まれる複数のタイプのファイルからダイナミックリンクライブラリファイルを探索することを含み得る。
【００３２】
ダイナミックリンクライブラリファイルは、プログラムが、特殊タスクを実行するために要求されるコード及び他のリソースを共有することを可能にする非実行可能バイナリプログラムファイルである。実行可能ファイルは、オペレーティングシステムによってロード及び実行され得るファイルを指す。実行可能ファイルは、異なるオペレーティングシステム環境では異なる様式で提示される。ダイナミックリンクライブラリファイルは、予め設定された圧縮アルゴリズムを使用して圧縮可能である被呼び出しファイルであり、ダイナミックリンクライブラリファイルは、ソースアプリケーション中に含まれる複数のタイプのファイルから探索される。
【００３３】
図１Ｃは、本発明の実施形態による、ファイルをカプセル化する方法１４０の例を示すフローチャートを示す。方法１４０は、図１Ａ中のステップ１０３を実装するために利用され得る。図１Ｃに示されているように、方法１４０は、修正された呼び出しファイルを圧縮し、次いで、いくつかのファイルロケーションにあるオリジナルの呼び出しファイルを、ファイルロケーションにある圧縮された修正された呼び出しファイルと置き換えることによって、ステップ１４２において始まる。
【００３４】
これに続いて、方法１４０はステップ１４４に移り、ステップ１０１で生成された圧縮された被呼び出しファイル及び伸張機能ファイルを圧縮し、それらをソースアプリケーションに追加し、圧縮されたアプリケーションを取得する。その場合、圧縮された修正された呼び出しファイルを、修正の前の呼び出しファイルのファイルロケーションに配置することは、詳細には、修正の前の呼び出しファイルを削除し、次いで、圧縮された修正された呼び出しファイルを、修正の前の呼び出しファイルのファイルロケーションに配置することであり得る。
【００３５】
修正された呼び出しファイルは、詳細には、本出願において限定されない任意の適切な圧縮方法を使用して圧縮され得るが、被呼び出しファイルは、修正された呼び出しファイル及び圧縮された被呼び出しファイルを圧縮するために使用される圧縮のレートよりも高い圧縮のレートを用いて圧縮される。
【００３６】
アプリケーションがプラグインを含む場合、修正された呼び出しファイルは、圧縮され、そのオリジナルのプラグインに配置される。例えば、全ての修正されたｄｅｘファイルは、圧縮され、そのオリジナルのプラグインに配置される。圧縮された被呼び出しファイル及び伸張機能ファイルは、ソースアプリケーションに圧縮され、圧縮されたアプリケーションを取得する。詳細には、本出願において限定されない任意の適切な圧縮方法が使用され得る。
【００３７】
好ましい実施形態では、メインフレームワークに属する呼び出しファイルは、ステップ１４２において抽出及び圧縮され、次いで、ソースアプリケーションのオリジナルのメインフレームワークファイルを、圧縮されたメインフレームワークファイルと置き換えるために使用され得る。アプリケーションがただ１つの呼び出しファイルを有する場合、呼び出しファイルはメインフレームワーク呼び出しファイルである。アプリケーションが複数の呼び出しファイルに分割される場合、開始関連コンポーネントが１つの呼び出しファイルに入れられ、呼び出しファイルはメインフレームワーク呼び出しファイルと呼ばれる。他の呼び出しファイルは、２次呼び出しファイルと呼ばれることがあり、開始すると動的にロードされ得る。
【００３８】
本出願では、伸張機能ファイルは、メインフレームワーク呼び出しファイルに追加される。アプリケーションのメインフレームワークに属する呼び出しファイルは、圧縮のために抽出され、圧縮されたメインフレームワークファイルを取得する。ソースアプリケーションのオリジナルのメインフレームワークファイルを、圧縮されたメインフレームワークファイルと置き換えることは、圧縮されたメインフレームワークファイルをアプリケーションパッケージのルートディレクトリに配置することによって実装され得る。
【００３９】
本出願の好ましい実施形態では、予め設定された圧縮アルゴリズムはＬＺＭＡアルゴリズムである。（レンペルジブマルコフ連鎖アルゴリズムの省略である）ＬＺＭＡは、２００１年以降開発されたデータ圧縮アルゴリズムであり、７−Ｚｉｐアーカイバにおける７ｚフォーマット又はＵｎｉｘライクにおけるｘｚフォーマットで使用される。ＬＺＭＡは、ＬＺ７７のような辞書符号化機構を使用し、概して、ｂｚｉｐ２のものよりも高い圧縮レートを有する。例えば、圧縮のための辞書ファイルのサイズは４ＧＢであり得る。ＬＺＭＡアルゴリズムは、Ａｎｄｒｏｉｄシステムのデフォルトのデフレートアルゴリズムのものよりも高い圧縮レートを有するアルゴリズムである。アルゴリズムの使用は、より高い圧縮レートをＡＰＫアプリケーションにもたらすことができる。
【００４０】
図２Ａは、本発明による、ソースアプリケーションを圧縮する方法２００の例を示すフローチャートを示す。図２Ａに示されているように、方法２００は、ソースアプリケーションを伸張し、呼び出しファイル及び被呼び出しファイルを探索することによって、ステップ２０１において始まる。ソースアプリケーションは、圧縮されたプログラムパッケージであり、ソースアプリケーションは、対応する伸張方法を使用して伸張され、プログラムパッケージ中の全てのファイルを取得し、全ての呼び出しファイル及び被呼び出しファイルを見つける。例えば、ＡＰＫアプリケーションが伸張され、全てのｄｅｘファイル及びＳＯファイルが見つけられる。
【００４１】
これに続いて、方法２００はステップ２０２に移り、被呼び出しファイル間の依存関係を判定し、依存関係を記録する依存ファイルを生成する。被呼び出しファイル間の依存関係は、見つけられた被呼び出しファイルに従って判定され、各被呼び出しファイルの依存関係は、依存ファイルに記録される。依存ファイルは、全ての被呼び出しファイルの依存関係を記録するファイルである。
【００４２】
詳細には、各被呼び出しファイルによって実行される動的依存テーブルが読み取られ得る。動的依存テーブルは、被呼び出しファイルが依存関係を相互に呼び出すためのテーブルである。各被呼び出しファイルの動的依存テーブルが記録され、全ての被呼び出しファイルのローディングのための依存テーブルが生成される。例えば、パースすることによって見つけられるＡＰＫアプリケーションのＳＯファイルの場合、各ＳＯファイルによって実行される動的依存テーブルが読み取られ、各ＳＯファイルの動的依存テーブルが記録され、ＳＯローディングのための依存テーブルファイルが生成される。
【００４３】
次に、方法２００はステップ２０３に移り、予め設定された圧縮アルゴリズムを使用してソースアプリケーション中の被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成する。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
【００４４】
被呼び出しファイルが圧縮された後、方法２００はステップ２０４に移り、伸張機能ファイルを、アプリケーションのメインフレームワークに属する呼び出しファイルに追加する。伸張機能ファイルを、アプリケーションのメインフレームワークに属する呼び出しファイルに追加するための複数の方法があり得る。
【００４５】
例えば、呼び出しファイルが伸張機能ファイルを外部で呼び出すことができるように、外部呼び出し側コードがメインフレームワーク呼び出しファイルに追加され得る。或いは、伸張機能ファイルのコードが、アプリケーションのメインフレームワークに属する呼び出しファイルに追加され得、従って、圧縮された被呼び出しファイルを伸張及びロードする伸張機能ファイルの機能は、呼び出しファイルの実行中により迅速に実行され得る。
【００４６】
アプリケーションがただ１つの呼び出しファイルを有する場合、呼び出しファイルはメインフレームワーク呼び出しファイルである。アプリケーションが複数の呼び出しファイルに分割される場合、開始関連コンポーネントが１つの呼び出しファイルに入れられ、呼び出しファイルはメインフレームワーク呼び出しファイルと呼ばれる。例えば、初期化コード、ＬＺＭＡアルゴリズムによって圧縮されたファイルを伸張するための自己定義ＳＯファイル、及びローディングコードが、ＡＰＫアプリケーションのメインｄｅｘファイルに追加され得る。
【００４７】
図２Ｂは、本発明による、方法２２０の例を示すフローチャートを示す。方法２２０は、ステップ２０４を実装するために利用され得る。図２Ｂに示されているように、方法２２０は、ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名を、ソースアプリケーションのグローバルアプリケーション設定ファイルから抽出することによって、２２２において始まる。
【００４８】
グローバルアプリケーション設定ファイルは、アプリケーション中に含まれるコンポーネントを記述し、アプリケーションの動作プロセスを定義し、他のプログラムによってこのプログラムのコンポーネントにアクセスするために要求されるパーミッションを宣言し、アプリケーションを動作させるために接続されるべきライブラリをリストするアプリケーション全体の情報記述ファイルを指す。ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名が、グローバルアプリケーション設定ファイルから抽出される。例えば、ＡＰＫアプリケーション中のＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌファイルが、プログラムエントリポイントを獲得するためにパースされる。
【００４９】
これに続いて、方法２２０はステップ２２４に移り、対応する呼び出しファイルを逆コンパイルする。伸張機能ファイルの、アプリケーションのメインフレームワークに属する呼び出しファイルへの追加中に、最初に、対応する呼び出しファイルが逆コンパイルされる必要があり、次いで、伸張機能ファイルが呼び出しファイルに追加される。しかも、全ての呼び出しファイルによる被呼び出しファイルの呼び出しの、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルの呼び出しへの修正中に、最初に、対応する呼び出しファイルが逆コンパイルされる必要があり、次いで、呼び出しが修正される。
【００５０】
例えば、全てのｄｅｘファイルが逆コンパイルされ、ＡＰＫアプリケーションのｄｅｘファイル中のＳＯファイルローディングに関連する全ての機能が見つけられ、機能は、ＬＺＭＡ圧縮ファイルを伸張する追加された自己定義ＳＯファイルのコードをロードすることに、統一された様式で修正される。この後、方法２２０はステップ２２６に移り、伸張機能ファイルを、逆コンパイルされた呼び出しファイルに挿入する。
【００５１】
再び図２Ａを参照すると、方法２００が、ステップ２０４において伸張機能ファイルを呼び出しファイルに追加した後、方法２００はステップ２０５に移り、伸張機能ファイルを呼び出しファイルの初期化オブジェクトに追加する。呼び出しファイルの初期化オブジェクトは、呼び出しファイルの実行中に初めに作成されるべきインスタンスを指し、伸張機能ファイルは、呼び出しファイルの初期化オブジェクトに追加される。
【００５２】
図２Ｃは、本発明による、伸張機能ファイルを、呼び出しファイルの初期化オブジェクトに追加する方法２４０の例を示すフローチャートを示す。方法２４０は、図２Ａ中のステップ２０５を実装するために利用され得る。図２Ｃに示されているように、方法２４０は、呼び出しファイルのプログラムエントリロケーションにある第１の動作機能を探索することによって、２４２において始まる。
【００５３】
これに続いて、方法２４０はステップ２４４に移り、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを、第１の機能の呼び出しオブジェクトに追加する。第１の動作機能は、呼び出しファイルのプログラムエントリから探索され、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルは、第１の機能の呼び出しオブジェクトに追加される。伸張機能ファイルは、予め設定された圧縮アルゴリズムについてプレコンパイルされたファイルであり、圧縮された被呼び出しファイルを伸張し、被呼び出しファイルのコードをロードすることが可能である。
【００５４】
再び図２Ａを参照すると、方法２００が、ステップ２０５において伸張機能ファイルを呼び出しファイルの初期化オブジェクトに追加した後、方法２００はステップ２０６に移り、呼び出しファイルによって被呼び出しファイルを呼び出すステップを、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正する。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
【００５５】
この後、方法２４０はステップ２０７に移り、呼び出しファイルに属するアプリケーション中の機能コンポーネントに再署名する。署名することは、アプリケーションにデジタル署名することを指す。インストールされるべき全てのプログラムが、何らかのオペレーティングシステムについて署名されなければならないので、システムは、全てのアプリケーションが、インストールされる前に証明書によってデジタル署名されることを必要とする。例えば、Ａｎｄｒｏｉｄシステムは証明書を通してアプリケーションのオーサーを確認し、証明書は機関によって証明される必要がない。
【００５６】
概して、アプリケーションは、開発者の自己署名証明書を使用し、証明書は、信用関係がアプリケーションとアプリケーションのオーサーとの間で確立されたことを保証し、ユーザがどのアプリケーションをインストールすることができるかを判定するために使用されない。機能コンポーネントは、アプリケーション中のいくつかの機能又はモジュールを指し、通常、プラグインの形態で存在し、修正された呼び出しファイルがそれに属するアプリケーション中の機能コンポーネントは、再署名される。
【００５７】
任意選択で、機能コンポーネントに再署名する前に、方法２００は、呼び出しファイルに属するアプリケーション中の機能コンポーネントが、オリジナルの署名を有するかどうかをステップ２０７において判定することができる。呼び出しファイルに属するアプリケーション中の機能コンポーネントが、オリジナルの署名を有するかどうかを判定することは、詳細には、機能コンポーネントが署名を有するかどうかを検査し、アプリケーション中の呼び出しファイルに属する機能コンポーネントがオリジナルの署名を有すると判定することであり得る。
【００５８】
次に、方法２００はステップ２０８に移り、依存ファイル、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得する。依存ファイル、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、新しいアプリケーションにリパック及びカプセル化され、圧縮されたアプリケーションを取得する。特定のカプセル化方法は、この実施形態において限定されない任意の適切な方法であり得る。
【００５９】
例えば、ＳＯファイルをロードするための依存テーブルファイル、修正されたｄｅｘファイル、ＬＺＭＡアルゴリズムによって圧縮された全てのＳＯファイル、及びＬＺＭＡアルゴリズムを処理することが可能なプレコンパイルされたＳＯファイルが、ＡＰＫアプリケーションにリパックされ、取得されたＡＰＫアプリケーションは、圧縮されたアプリケーションである。
【００６０】
次に、ファイルがステップ２０８においてカプセル化された後、方法２００はステップ２０９に移り、圧縮されたアプリケーションに署名する。インストールされるべき全てのプログラムが、何らかのオペレーティングシステムについて署名されなければならないので、システムは、全てのアプリケーションが、インストールされる前に証明書によってデジタル署名されることを必要とする。圧縮されたアプリケーションは署名され、アプリケーションが、正常にインストールされ、動作することができることを保証する。
【００６１】
本出願のこの実施形態によれば、最初に、ソースアプリケーションが伸張され、次いで、呼び出しファイル及び被呼び出しファイルが、探索され、見つけられる。この後、被呼び出しファイル間の依存関係が判定され、依存関係を記録する依存ファイルが生成される。
【００６２】
次に、ソースアプリケーション中の被呼び出しファイルが、圧縮された被呼び出しファイルを形成するための予め設定された圧縮アルゴリズムを使用して、例えば、オリジナルの圧縮アルゴリズムのものよりも高い圧縮レートを有するアルゴリズムを使用して圧縮される。その結果、従って、アプリケーションを圧縮するための圧縮レートが改善され得、より小さいサイズのアプリケーションが取得され得る。
【００６３】
圧縮された被呼び出しファイルの形成に続いて、伸張機能ファイルは、アプリケーションのメインフレームワークに属する呼び出しファイルに追加される。加えて、伸張機能ファイルは、呼び出しファイルの初期化オブジェクトに追加される。さらに、呼び出しファイルによって被呼び出しファイルを呼び出すプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルの呼び出しに修正される。この後、呼び出しファイルに属するアプリケーション中の機能コンポーネントが再署名される。
【００６４】
次に、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルがカプセル化され、圧縮されたアプリケーションを取得し、圧縮されたアプリケーションは、アプリケーションが、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができるように署名される。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張する機能を有することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
【００６５】
図３は、本発明による、ソースアプリケーションを伸張する方法３００の例を示すフローチャートを示す。図３に示されているように、方法３００は、デフォルトの伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除（伸張）することによって、ステップ３０１において始まり、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する予め設定された伸張アルゴリズムを使用する伸張機能ファイルとを取得する。デフォルトの伸張アルゴリズムは、予め設定された圧縮アルゴリズムの圧縮のレートよりも低い圧縮のレートを有するデフォルトの圧縮アルゴリズムと一致する。
【００６６】
圧縮されたアプリケーションは、予め設定された圧縮アルゴリズムによって部分的に圧縮され、対応する修正を受けたアプリケーションである。圧縮されたアプリケーションは、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを含む。呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。詳細には、アプリケーションの圧縮中に、呼び出しファイルによって被呼び出しファイルを呼び出すために使用されるプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正される。
【００６７】
圧縮されたアプリケーションはカプセル化解除（伸張）され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。例えば、ＡＰＫアプリケーションは、圧縮されたアプリケーションであり、ＡＰＫアプリケーションは伸張され、修正されたｄｅｘファイルと、ＬＺＭＡアルゴリズムによって圧縮されたＳＯファイルの全てと、ＬＺＭＡアルゴリズムを処理することが可能なプレコンパイルされたＳＯファイル（伸張機能ファイル）とを取得する。
【００６８】
圧縮されたアプリケーションがカプセル化解除（伸張）された後、方法３００は、ステップ３０１からステップ３０２に移り、伸張機能ファイルを呼び出すことによって、呼び出しファイルによって被呼び出しファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする。呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルが呼び出され、圧縮された被呼び出しファイルを伸張及びロードするために、伸張機能ファイルのコードが実行される。
【００６９】
例えば、ＬＺＭＡアルゴリズムを処理するためのＳＯファイル（伸張機能ファイル）がロードされ、ＬＺＭＡアルゴリズムを処理するためのＳＯファイルのコードが実行され、圧縮されたＳＯファイルを伸張する。これに続いて、伸張されたＳＯファイルがロードされ、圧縮されたアプリケーションの伸張を完了する。
【００７０】
本出願のこの実施形態によれば、圧縮されたアプリケーションはカプセル化解除（伸張）され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルは呼び出され、圧縮されたアプリケーションが、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができるように、圧縮された被呼び出しファイルを伸張及びロードする。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。その場合は、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張することができる。その結果、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
【００７１】
図４は、本発明による、アプリケーションを伸張するための方法４００の例を示すフローチャートを示す。図４に示されているように、方法４００は、圧縮されたアプリケーションをカプセル化解除（伸張）し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得することによって、ステップ４０１において始まる。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
【００７２】
これに続いて、方法４００はステップ４０２に移り、メインフレームワークの呼び出しファイルを呼び出し、圧縮されたアプリケーション中の伸張機能ファイルを初期化する。メインフレームワーク呼び出しファイルの初期化オブジェクトは伸張機能ファイルを含み、圧縮されたアプリケーション中の伸張機能ファイルを初期化するために、メインフレームワークの呼び出しファイルが呼び出される。
【００７３】
例えば、ＡＰＫアプリケーションの動作中に、メインｄｅｘファイルが実行され、呼び出し機能はアプリケーション圧縮段階において修正されたので、ＬＺＭＡアルゴリズムを処理するためのＳＯファイルをロードする機能が呼び出され、ＬＺＭＡアルゴリズムを処理するためのＳＯファイルをロードする。
【００７４】
次に、方法４００はステップ４０３に移り、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかを判定する。呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかが判定される。
【００７５】
呼び出しファイルによって呼び出されるべき被呼び出しファイルが存在しない場合、方法４００はステップ４０４に移り、現在のオペレーティングシステムにおいて被呼び出しファイルを探索するか、又はネットワークから被呼び出しファイルをダウンロードする。一方、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在する場合、方法４００はステップ４０５に移る。例えば、ロードされるべきＳＯファイルが、ＬＺＭＡアルゴリズムによって圧縮されたファイル中に存在するかどうかがステップ４０３において判定される。
【００７６】
本出願のこの実施形態では、呼び出しファイルによって呼び出される被呼び出しファイルについて、いくつかは圧縮された被呼び出しファイル中にあり、いくつかはオペレーティングシステム中にあり、いくつかはネットワーク上にあり、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在しない場合、被呼び出しファイルは、現在のオペレーティングシステムから探索され得るか、又は被呼び出しファイルは、ネットワークからダウンロードされ得る。
【００７７】
ステップ４０５において、呼び出しファイルによる被呼び出しファイルの呼び出し中に、方法４００は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の被呼び出しファイルに依存するかどうかを判定する。呼び出しファイルによる被呼び出しファイルの呼び出し中に、呼び出しファイルによって呼び出されるべき被呼び出しファイルが別の被呼び出しファイルに依存するかどうかが判定され、これは、詳細には、圧縮されたアプリケーションをカプセル化解除（伸張）することによって取得された依存ファイルに従って実施され得、ここで、依存ファイルは、被呼び出しファイル間の依存関係を記録する。その結果、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の（第２の）被呼び出しファイルに依存するかどうかが判定される。
【００７８】
被呼び出しファイルが別の（第２の）被呼び出しファイルに依存するとき、方法４００はステップ４０６に移り、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルから別の（第２の）被呼び出しファイルを伸張する。伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルから別の（第２の）被呼び出しファイルを伸張することは、詳細には、伸張機能ファイル中の対応する伸張アルゴリズムを使用して、予め設定された圧縮アルゴリズムによって圧縮されたファイルを伸張し、被呼び出しファイルがそれに依存する別の（第２の）被呼び出しファイルを取得することであり得る。
【００７９】
これに続いて、方法４００は、ステップ４０５からステップ４０７に、又はステップ４０６からステップ４０７に移り、伸張機能ファイルを呼び出し、呼び出しファイルによって呼び出されるべき被呼び出しファイルを、圧縮された被呼び出しファイルから伸張する。伸張機能ファイルを呼び出し、要求される被呼び出しファイルを、圧縮された被呼び出しファイルから伸張することは、詳細には、伸張機能ファイル中の対応する伸張アルゴリズムを使用して、予め設定された圧縮アルゴリズムによって圧縮されたファイルを伸張し、呼び出されるべき被呼び出しファイルを取得することであり得る。
【００８０】
この後、方法４００はステップ４０８に移り、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
【００８１】
本出願のこの実施形態によれば、圧縮されたアプリケーションはカプセル化解除（伸張）され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。加えて、圧縮されたアプリケーション中の伸張機能ファイルを初期化するために、メインフレームワークの呼び出しファイルが呼び出される。さらに、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかが判定される。
【００８２】
呼び出しファイルによって呼び出されるべき被呼び出しファイルが存在しない場合、被呼び出しファイルは、現在のオペレーティングシステムにおいて探索されるか、又は被呼び出しファイルは、ネットワークからダウンロードされる。一方、被呼び出しファイルが存在する場合、呼び出しファイルによる被呼び出しファイルの呼び出し中に、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の被呼び出しファイルに依存するかどうかが判定される。被呼び出しファイルが別のファイルに依存する場合、別の被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するために、伸張機能ファイルが呼び出される。
【００８３】
加えて、呼び出しファイルによって呼び出されるべき被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するために、伸張機能ファイルが呼び出される。さらに、圧縮された被呼び出しファイルを伸張及びロードするために、伸張機能ファイルが呼び出される。次いで、圧縮されたアプリケーションは、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができる。
【００８４】
このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
【００８５】
当業者が本出願をより良く理解することを可能にするために、本出願の検証方法が、特定の例を通して以下で説明される。
【００８６】
図５は、本発明の実施形態による、圧縮プロセス５００の例を示す図である。図５に示されているように、プロセス５００は、入ってくるＡｎｄｒｏｉｄアプリケーションパッケージ（ＡＰＫ）を伸張することで、５０１において始まる。この後、プロセス５００はステップ５０２Ａに移り、ファイルをパースし、圧縮されたパッケージ中のＳＯファイルの全てを見つけ、ステップ５０２Ｂに移り、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌファイルをパースする。
【００８７】
次に、プロセス５００はステップ５０３に移り、ＳＯ依存テーブルを生成する。ＳＯファイルをロードすることは、対応する依存関係を要求するので、ＡＰＫアプリケーション中の全てのＳＯファイルの依存関係テーブルが生成される。これに続いて、プロセス５００はステップ５０４に移り、ＳＯファイルの全てを圧縮する。サイズを縮小するために、ＳＯファイルの全ては、ＬＺＭＡアルゴリズムを使用して１つの圧縮ファイルに圧縮され、圧縮された被呼び出しファイルを形成する。一方、ＬＺＭＡアルゴリズムを処理することが可能なプレコンパイルされたＳＯファイル（伸張機能ファイル）が追加される。
【００８８】
ＳＯファイルが圧縮された後、プロセス５００はステップ５０５に移り、ｄｅｘ（実行可能）ファイルを修正する。オリジナルのプログラム中のＳＯファイルの全ては、１つのＳＯファイルに圧縮されるので、Ｊａｖａレイヤ上のＳＯファイルをロードするための機能は、動作中に呼び出されるとき、インターセプトされ、ＳＯファイル依存関係テーブルを通して変換されなければならない。
【００８９】
次に、プロセス５００は、ステップ５０６Ａ、ステップ５０６Ｂ、及びステップ５０６Ｃに移り、ファイルをパックする。ＬＺＭＡアルゴリズムを処理することが可能なプレコンパイルされたＳＯファイルと、ＳＯ依存関係テーブルと、ＬＺＭＡアルゴリズムによって圧縮されたＳＯファイルの全てと、修正されたｄｅｘファイルとが、Ａｎｄｒｏｉｄアプリケーションにリパックされる。一方、オリジナルのＳＯファイルは削除される。この後、プロセス５００はステップ５０７に移り、再署名する。リパックされたＡｎｄｒｏｉｄアプリケーションは、オリジナルのプログラムの署名ファイルを使用して再署名される。
【００９０】
図６は、本発明の実施形態による、伸張プロセス６００の例を示す図である。図６に示されているように、プロセス６００は、ＬＺＭＡアルゴリズムによって圧縮されたファイルを伸張することが可能なＳＯファイルをロードすることで、６０１において始まり、従って、ＡＰＫアプリケーションは、ＬＺＭＡ圧縮ファイルを伸張する機能を有する。
【００９１】
この後、プロセス６００はステップ６０２に移る。６０２において、アプリケーションがＳＯファイルをロードする、即ち、ＳＯファイルローディング論理を実行する必要があるとき、呼び出し機能はパッキング段階において修正されたので、ＳＯファイルをロードするための自己定義機能が呼び出される。次に、プロセス６００はステップ６０３に移り、ロードされるべきＳＯファイルが、ＬＺＭＡ圧縮ファイル中に存在するかどうかを判定する。
【００９２】
ＳＯファイルが、ＬＺＭＡ圧縮ファイル中に存在しない場合、プロセス６００はステップ６０４に移り、伸張なしに、システム機能を直接呼び出し、ＳＯファイルをロードする。ステップ６０４は、システムのＳＯファイルがロードされるか、又はＳＯファイルがネットワークから動的にダウンロードされ、ＳＯファイルは、伸張なしに、システム機能を呼び出すことによって、直接ロードされることを示す。
【００９３】
ＳＯファイルが存在する場合、プロセス６００は、代わりに、ステップ６０５に移り、ロードされるべきＳＯファイルが別のＳＯファイルに依存するかどうかを判定する。ロードされるべきＳＯファイルが別のＳＯファイルに依存しない場合、プロセス６００はステップ６０６に移り、ロードされるべきＳＯファイルを直接伸張する。
【００９４】
ＳＯファイルが別のＳＯファイルに依存する場合、プロセス６００は、代わりに、ステップ６０７に移り、最初に、依存ＳＯファイルを伸張し、次いで、ロードされるべきＳＯファイルを伸張する。プロセス６００は、入ってくるＳＯファイルの名前に従って、ＳＯファイルを、予め組み込まれたＬＺＭＡ圧縮ファイルから伸張する。ＳＯファイルのローディングが他のＳＯファイルに依存する必要がある場合、他のＳＯファイルも伸張される必要がある。
【００９５】
この後、プロセス６００は、ステップ６０７からステップ６０８に、又はステップ６０６からステップ６０８に移り、伸張されたＳＯファイルのパスを取得し、ＳＯファイルをロードするためのシステムインターフェースを呼び出し、ローディングを完了する。プロセスは、次いで、ステップ６０９に移り、プログラムサービス論理を実行することに進む。
【００９６】
図７Ａ及び図７Ｂは、本発明の実施形態による、アプリケーションを圧縮するためのいくつかのモジュールを含む装置７００の例を示す図である。モジュールは、例えば、ソフトウェアモジュールであり得、装置７００はソフトウェアモジュールを実行するプロセッサである。
【００９７】
図７Ａ及び図７Ｂに示されているように、装置７００は、ソースアプリケーションを伸張し、呼び出しファイル及び被呼び出しファイルを探索するように構成された、ソースアプリケーション伸張モジュール７０２を含む。装置７００は、予め設定された圧縮アルゴリズムを使用して圧縮可能であるソースアプリケーション中の被呼び出しファイルを探索するように構成された、被呼び出しファイル探索モジュール７０４をも含む。
【００９８】
実施形態では、被呼び出しファイルはダイナミックリンクライブラリファイルであり、呼び出しファイルは、ダイナミックリンクライブラリファイルを呼び出す実行可能ファイルである。加えて、被呼び出しファイル探索モジュール７０４は、詳細には、ダイナミックリンクライブラリファイルを、ソースアプリケーション中に含まれる複数のタイプのファイルから探索するように構成される。
【００９９】
図７Ａ及び図７Ｂにさらに示されているように、装置７００は、被呼び出しファイル間の依存関係を判定し、依存関係を記録する依存ファイルを生成するように構成された、依存ファイル生成モジュール７０６を含む。装置７００は、予め設定された圧縮アルゴリズムを使用してソースアプリケーション中の被呼び出しファイルを圧縮するように構成された、被呼び出しファイル圧縮モジュール７０８を追加として含む。ソースアプリケーション伸張モジュール７０２及び被呼び出しファイル探索モジュール７０４は、両方とも、被呼び出しファイルがモジュール７０８によって圧縮される前に探索する。
【０１００】
さらに、装置７００は、伸張機能ファイルを、アプリケーションのメインフレームワークに属する呼び出しファイルに追加するように構成された、機能ファイル追加モジュール７１０と、ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名を、ソースアプリケーションのグローバルアプリケーション設定ファイルから抽出するように構成された、エントリクラス名抽出サブモジュール７１２とを含む。
【０１０１】
加えて、装置７００は、対応する呼び出しファイルを逆コンパイルするように構成された、呼び出しファイル逆コンパイルモジュール７１４と、伸張機能ファイルを呼び出しファイルの初期化オブジェクトに追加するように構成された、機能ファイル増加モジュール７１６とを含む。実施形態では、機能ファイル増加モジュール７１６は、呼び出しファイルのプログラムエントリロケーションにある第１の動作機能を探索するように構成された、機能探索サブモジュール７１６Ａと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを、第１の機能の呼び出しオブジェクトに追加するように構成された、機能ファイル増加サブモジュール７１６Ｂとを含む。
【０１０２】
図７Ａ及び図７Ｂにさらに示されているように、装置７００は、呼び出しファイルによって被呼び出しファイルを呼び出すプロセスを、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すことに修正するように構成された、呼び出し側修正モジュール７１８をも含み、ここで、伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードするために使用される。
【０１０３】
装置７００は、アプリケーション中の呼び出しファイルに属する機能コンポーネントがオリジナルの署名を有するかどうかを判定するように構成された、オリジナル署名判定モジュール７２０を追加として含む。
【０１０４】
実施形態では、装置７００は、呼び出しファイルに属するアプリケーション中の機能コンポーネントに再署名するように構成された、コンポーネント署名モジュール７２２をさらに含む。オリジナル署名判定モジュール７２０は、機能コンポーネントが再署名される前に、オリジナルの署名を判定する。
【０１０５】
加えて、装置７００は、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するように構成された、アプリケーションカプセル化モジュール７２４を含む。コンポーネント署名モジュール７２２は、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルがカプセル化され、圧縮されたアプリケーションを取得する前に、機能コンポーネントに再署名する。
【０１０６】
実施形態では、アプリケーションカプセル化モジュール７２４は、詳細には、依存ファイル、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化（圧縮）し、圧縮されたアプリケーションを取得するように構成される。実施形態では、アプリケーションカプセル化モジュール７２４は、修正された呼び出しファイルを圧縮し、それらを修正の前の呼び出しファイルのロケーションに置き換えるように構成された、呼び出しファイル圧縮サブモジュール７２４Ａを含む。
【０１０７】
アプリケーションカプセル化モジュール７２４は、圧縮された被呼び出しファイル及び伸張機能ファイルを圧縮し、それらをソースアプリケーションに追加し、圧縮されたアプリケーションを取得するように構成された、圧縮及び追加サブモジュール７２４Ｂをも含む。
【０１０８】
実施形態では、アプリケーションカプセル化モジュール７２４は、アプリケーションのメインフレームワークに属する呼び出しファイルを抽出及び圧縮し、圧縮されたメインフレームワークファイルを取得するように構成された、メインフレームワークファイル圧縮サブモジュール７２４Ｃをさらに含み、ここで、伸張機能ファイルは、メインフレームワーク呼び出しファイルに追加された。
【０１０９】
アプリケーションカプセル化モジュール７２４は、ソースアプリケーションのオリジナルのメインフレームワークファイルを、圧縮されたメインフレームワークファイルと置き換えるように構成された、メインフレームワークファイル代入サブモジュール７２４Ｄをも含む。
【０１１０】
実施形態では、装置７００は、圧縮されたアプリケーションに署名するように構成された、アプリケーション署名モジュール７２６をさらに含む。実施形態では、予め設定された圧縮アルゴリズムはＬＺＭＡアルゴリズムである。
【０１１１】
本出願のこの実施形態によれば、最初に、ソースアプリケーション中の被呼び出しファイルが、予め設定された圧縮アルゴリズムを使用して、例えば、オリジナルの圧縮アルゴリズムのものよりも高い圧縮レートを有するアルゴリズムを使用して圧縮される。その結果、従って、アプリケーションを圧縮するための圧縮レートが改善され得、より小さいサイズのアプリケーションが取得され得る。
【０１１２】
さらに、呼び出しファイルによって被呼び出しファイルを呼び出すプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すことに修正される。次に、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルがカプセル化（圧縮）され、圧縮されたアプリケーションを取得する。修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、被呼び出しファイルを、圧縮された被呼び出しファイルに圧縮するために使用される予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有するアルゴリズムを用いて圧縮される。
【０１１３】
次いで、アプリケーションは、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができる。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張する機能を有することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
【０１１４】
図８は、本発明の実施形態による、アプリケーションを伸張するためのいくつかのモジュールを含む装置８００の例を示す図である。モジュールは、例えば、ソフトウェアモジュールであり得、装置８００はソフトウェアモジュールを実行するプロセッサである。
【０１１５】
図８に示されているように、装置８００は、圧縮されたアプリケーションをカプセル化解除（伸張）し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得するように構成された、アプリケーションカプセル化解除モジュール８０２を含み、ここで、呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。
【０１１６】
図８にさらに示されているように、装置８００は、メインフレームワークの呼び出しファイルを呼び出し、圧縮されたアプリケーション中の伸張機能ファイルを初期化するように構成された、機能ファイル初期化モジュール８０４をも含む。実施形態では、装置８００は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかを判定するように構成された、被呼び出しファイル存在判定モジュール８０６を追加として含む。
【０１１７】
実施形態では、装置８００は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが存在しない場合、被呼び出しファイルを現在のオペレーティングシステムにおいて探索するか、又は被呼び出しファイルをネットワークからダウンロードするように構成された、探索／ダウンロードモジュール８０８をさらに含む。
【０１１８】
実施形態では、装置８００は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の被呼び出しファイルに依存するかどうかを判定するように構成された、依存判定モジュール８１０をも含む。装置８００は、伸張機能ファイルを呼び出し、別の被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するように構成された、依存ファイル伸張モジュール８１２を追加として含む。
【０１１９】
実施形態では、装置８００は、呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードするように構成された、伸張及びローディングモジュール８１４をさらに含む。加えて、装置８００は、伸張機能ファイルを呼び出し、呼び出しファイルによって呼び出されるべき被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するように構成された、ファイル伸張モジュール８１６を含む。
【０１２０】
機能ファイル初期化モジュール８０４は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする前に、メインフレームワークの呼び出しファイルを呼び出す。被呼び出しファイル存在判定モジュール８０６は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする前に存在を判定する。依存判定モジュール８１０は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする前に依存関係を判定する。
【０１２１】
本出願のこの実施形態によれば、圧縮されたアプリケーションはカプセル化解除（伸張）され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。呼び出しファイルによる被呼び出しファイルの呼び出し中に、圧縮された被呼び出しファイルを伸張及びロードするために、伸張機能ファイルが呼び出される。
【０１２２】
次いで、圧縮されたアプリケーションは、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができる。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
【０１２３】
装置実施形態は、基本的に、図１、図２、図３、及び図４に示されている上記の方法実施形態に対応するので、それらの詳細が繰返しを避けるために省略される、この実施形態では詳述されない部分については、上記の実施形態における関連する説明に対する参照が行われ得る。
【０１２４】
本明細書で提供されるアルゴリズム及び表示は、任意の特定のコンピュータ、仮想システム、又は他のデバイスに本質的に関連しない。様々な汎用システムが、本明細書の教示とともに使用され得る。上記の説明によれば、そのようなシステムを構成するためにどのような構造が必要とされるかがわかることは明らかである。その上、本出願は、任意の特定のプログラム言語に基づかない。本明細書で説明される本出願の内容を実装するために、様々なプログラミング言語が使用され得ることを理解されたい。特定の言語の上記の説明は、本出願の最良の実装形態を開示することを目的とする。
【０１２５】
多数の具体的な詳細が、ここに提供されている本明細書で説明される。しかしながら、本出願の実施形態は、これらの具体的な詳細なしに実装され得ることが理解され得る。いくつかの例では、よく知られている方法、構造、及び技法は、本明細書を理解する際に困難を生じないように、詳しくは提供されない。
【０１２６】
同様に、本開示を簡略化し、様々な適用態様のうちの１つ又は複数の理解を容易にするために、本出願の様々な特徴は、場合によっては、本出願の例示的な実施形態の上記の説明中のそれらの単一の実施形態、図又は説明において組み合わせられることを理解されたい。しかしながら、本開示の方法は、以下の趣旨、即ち、保護がそれについて求められる本出願が、各請求項に明確に記載されているものよりも多くの特徴を要求するということを表すものと解釈されるべきではない。より詳細には、以下の請求項が表すように、適用例は、単一の開示された実施形態の全ての特徴よりも少ない特徴を有し得る。従って、特定の実施形態に従う請求項は、本明細書によって明示的に特定の実施形態に組み込まれ、各請求項は、本出願の別個の実施形態として独立している。
【０１２７】
当業者は、実施形態におけるデバイス中のモジュールが、適応的に変更され、実施形態とは異なる１つ又は複数のデバイス中に配置され得ることを理解することができる。実施形態におけるモジュール、ユニット、又はコンポーネントは、組み合わせられて１つのモジュール、ユニット又はコンポーネントになり得、それらはまた、複数のサブモジュール、サブユニット、又はサブコンポーネントに分割され得る。（添付の請求項、要約書及び図面を含む）本明細書に開示されている特徴の全て、及びそのように開示された任意の方法又はデバイスのプロセス又はユニットの全ては、そのような特徴及び／又はプロセス又はユニットのうちの少なくともいくつかが、相互排他的である組合せを除いて、任意の組合せで組み合わせられ得る。（添付の請求項、要約書及び図面を含む）本明細書に開示されている各特徴は、別段に明記されていない限り、同じ、等価な又は同様の目的を果たす代替的特徴によって置き換えられ得る。
【０１２８】
その上、当業者は、本明細書で説明されるいくつかの実施形態は、他の実施形態の他の特徴を含まないがいくつかを含むが、異なる実施形態の特徴の組合せが、本出願の範囲内にあり、異なる実施形態を形成するものであることを理解することができる。例えば、以下の請求項では、請求される実施形態のうちのいずれか１つが、任意の組合せで使用され得る。
【０１２９】
本出願の各構成要素実施形態は、ハードウェアによって実装され得るか、又は１つもしくは複数のプロセッサ上で動作するソフトウェアモジュールによって実装され得るか、又はハードウェアモジュール及びソフトウェアモジュールの組合せによって実装され得る。当業者は、本出願の実施形態に従ってデータ分析に基づいてサーバ侵入を識別するためのデバイス中のコンポーネントの一部又は全部の機能の一部又は全部が、実際にはマイクロプロセッサ又はデジタル信号プロセッサ（ＤＳＰ）を使用することによって実装され得ることを理解すべきである。本出願は、さらに、ここで説明される方法の一部又は全部を実施するためのデバイス又は（コンピュータプログラム及びコンピュータプログラム製品などの）装置プログラムとして実装され得る。本出願を実装するためのそのようなプログラムは、コンピュータ可読媒体に記憶され得るか、又は１つもしくは複数の信号の形態であり得る。そのような信号は、インターネットサイトからダウンロードすることによって取得され得るか、又はキャリア信号上で提供され得るか、又は任意の他の形態で提供され得る。
【０１３０】
上述の実施形態は、本出願を限定するのではなく、本出願を説明し、当業者は、添付の請求項の範囲から逸脱することなく、代替的実施形態を設計することができることに留意されたい。請求項中の丸括弧中の任意の参照符号は、請求項を限定するものと解釈されるべきではない。「含む」又は「備える」という単語は、請求項中でリストされていない構成要素又はステップを除外しない。構成要素の前の「ａ（１つの）」又は「ａｎ（１つの）」という単語は、複数のそのような構成要素がある状況を除外しない。本出願は、いくつかの異なる構成要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装され得る。いくつかの装置がリストされるユニット請求項では、装置のうちのいくつかは、詳細には、同じハードウェアによって実装され得る。「第１の」、「第２の」、「第３の」などという単語は、いかなる順序も示さない。これらの単語は、名前として解釈され得る。
【図１Ａ】
2020504882.tif 000003
【図１Ｂ】
2020504882.tif 000004
【図１Ｃ】
2020504882.tif 000005
【図２Ａ】
2020504882.tif 000006
【図２Ｂ】
2020504882.tif 000007
【図２Ｃ】
2020504882.tif 000008
【図３】
2020504882.tif 000009
【図４】
2020504882.tif 000010
【図５】
2020504882.tif 000011
【図６】
2020504882.tif 000012
【図７Ａ】
2020504882.tif 000013
【図７Ｂ】
2020504882.tif 000014
【図８】
2020504882.tif 000015
【国際調査報告】
2020504882.tif 000016