JP2020504882A - アプリケーションを圧縮するための方法及び装置 - Google Patents

アプリケーションを圧縮するための方法及び装置 Download PDF

Info

Publication number
JP2020504882A
JP2020504882A JP2019536025A JP2019536025A JP2020504882A JP 2020504882 A JP2020504882 A JP 2020504882A JP 2019536025 A JP2019536025 A JP 2019536025A JP 2019536025 A JP2019536025 A JP 2019536025A JP 2020504882 A JP2020504882 A JP 2020504882A
Authority
JP
Japan
Prior art keywords
file
called
compressed
application
calling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019536025A
Other languages
English (en)
Inventor
スン ゾードゥオ
スン ゾードゥオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2020504882A publication Critical patent/JP2020504882A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • H03M7/702Software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44584Portable applications, i.e. making applications self-contained, e.g. U3 standard
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6052Synchronisation of encoder and decoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

デフォルトの圧縮レートと比較してより高い圧縮レートを有する圧縮アルゴリズムを用いて、ソースアプリケーション中の、SOファイルなど、複数の被呼び出しファイルを圧縮することによって、ソースアプリケーションのサイズが縮小される。ソースアプリケーション自体が、圧縮アルゴリズムを用いて圧縮された被呼び出しファイルを伸張することができるように、圧縮アルゴリズムと対応する伸張ファイルが、ソースアプリケーション中の複数の呼び出しファイルに挿入される。

Description

関連出願の相互参照
本出願は、その全体が参照により本明細書に組み込まれる、2016年12月31日に出願された、中国特許出願第201611266088.7号の優先権を主張する。
本出願は、アプリケーション圧縮技術の分野に関し、特に、アプリケーションを圧縮するための方法及び装置に関する。
例えば、Androidオペレーティングシステムにおいて使用されるAPKアプリケーションの場合。APK(Androidアプリケーションパッケージ)は、モバイルアプリケーション及びミドルウェアを配信及びインストールするためにAndroidオペレーティングシステムによって使用されるアプリケーションファイルフォーマットである。Androidデバイス上でAndroidアプリケーションのコードを動作させるために、コードは、最初にコンパイルされ、次いでAndroidシステムによって認識可能なファイルにパックされなければならない。Androidシステムによって認識及び動作され得るそのようなファイルフォーマットは「APK」である。APKファイルは、コンパイルされたコードファイル、ファイルリソース、証明書、及びマニフェストファイルを含む。
APKファイルサイズの縮小は、商用アプリケーションの絶え間ない最適化の目標の1つである。APKアプリケーションのサイズを縮小することは、主に、アプリケーション自体の機能及び論理フレームワークを修正することによって達成される。しかしながら、APKアプリケーションがそれ自体のサービス論理の選定を最適化した場合、サイズは、生成されたAPKアプリケーションを再圧縮すること、又はそのビデオ、オーディオ、及び画像リソースのサイズを変更することによってさらに縮小され得る。
APKアプリケーション中の共有オブジェクト(SO)ファイルのために使用されるデフォルトの圧縮アルゴリズムは、APKアプリケーションの生成中に使用されるデフレートアルゴリズムである。しかしながら、APKアプリケーションがAndroidモバイルフォンにインストールされた後、モバイルフォンがAPKアプリケーションを動作させるとき、APKアプリケーション中のSOファイルは、SOファイルがロードされるとき、最初に伸張される必要がある。また、Androidシステムに組み込まれた伸張アルゴリズムは、デフレートアルゴリズムを通してローディングを実装する。
何らかのオペレーションシステムの限界により、そのオリジナルのデフォルトの圧縮アルゴリズムは変更されることはできず、より高い圧縮レートを有するアルゴリズムを直接使用し、圧縮を実施することが不可能である。
本発明は、ソースアプリケーションのサイズを縮小するための方法及び媒体を提供する。本発明は、ソースアプリケーションを圧縮する方法を提供する。本方法は、圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも1つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成する。加えて、本方法はまた、少なくとも1つの呼び出しファイルを修正し、修正された呼び出しファイルを形成する。修正された呼び出しファイルは、圧縮アルゴリズムに対応する伸張機能ファイルを呼び出す。伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードする。さらに、本方法は、追加として、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得する。
加えて、本発明はまた、ソースアプリケーションを伸張するための方法を提供する。本方法は、第1の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する第2の伸張アルゴリズムを使用する伸張機能ファイルとを取得する。呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。さらに、呼び出しファイルによる被呼び出しファイルの呼び出し中に、本方法は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする。第1の伸張アルゴリズムは、予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第1の圧縮アルゴリズムに対応する。
さらに、本発明は、プロセッサによって実行され、アプリケーションを圧縮するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体をも提供する。本方法は、圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも1つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成するステップを含む。本方法は、少なくとも1つの呼び出しファイルを修正し、修正された呼び出しファイルを形成するステップをも含む。修正された呼び出しファイルは、圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すためのものである。伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードするためのものである。本方法は、追加として、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップを含む。
加えて、本発明は、プロセッサによって実行され、アプリケーションを伸張するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体を提供する。本方法は、第1の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する第2の伸張アルゴリズムを使用する伸張機能ファイルとを取得するステップを含む。呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。本方法は、呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードするステップをさらに含む。第1の伸張アルゴリズムは、予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第1の圧縮アルゴリズムに対応する。
本発明の原理が利用される例示的な実施形態を示す、以下の発明を実施するための形態及び添付の図面を参照することによって、本発明の特徴及び利点のより良い理解が得られるであろう。本明細書の内容に従って本出願を実装するように本出願の技術的手段のより良い説明を提供し、本出願の上記及び他の目的、特徴、及び利点をより理解しやすくするために、本出願の特定の実施形態が以下で与えられる。
以下の本文中の好ましい実施形態の詳細な説明を読むことによって、様々な他の利点及び利益が当業者に明らかになろう。図面は、好ましい実施形態を示すためのものであるにすぎず、本出願を限定するものと解釈されない。また、同じ参照符号が、図面全体にわたって同じ部分を示すために使用される。
本発明による、ソースアプリケーションを圧縮する方法100の例を示すフローチャートである。 本発明の代替実施形態による、ソースアプリケーションを圧縮する方法120の例を示すフローチャートである。 本発明の実施形態による、ファイルをカプセル化する方法140の例を示すフローチャートである。 本発明による、ソースアプリケーションを圧縮する方法200の例を示すフローチャートである。 本発明による、伸張機能ファイルを、呼び出しファイルの初期化オブジェクトに追加する方法220の例を示すフローチャートである。 本発明による、方法240を示すフローチャートである。 本発明による、ソースアプリケーションを伸張する方法300の例を示すフローチャートである。 本発明による、ソースアプリケーションを伸張するための方法400の例を示すフローチャートである。 本発明の実施形態による、圧縮プロセス500の例を示す図である。 本発明の実施形態による、伸張プロセス600の例を示す図である。 本発明の実施形態による、アプリケーションを圧縮するためのいくつかのモジュールを含む装置700の例を示す図である。 本発明の実施形態による、アプリケーションを圧縮するためのいくつかのモジュールを含む装置700の例を示す図である。 本発明の実施形態による、アプリケーションを伸張するためのいくつかのモジュールを含む装置800の例を示す図である。
本開示の例示的な実施形態が、図面を参照しながらより詳細に説明される。本開示の例示的な実施形態が図面に示されているが、本開示は、様々な形態で実装されることができ、ここで記載される実施形態によって限定されるべきではないことを理解されたい。代わりに、これらの実施形態は、本開示のより完全な理解を与えるために、及び本開示の範囲を当業者に十分に伝えるために提供される。
本出願は、アプリケーションの圧縮及びアプリケーションの伸張に適用され得る。アプリケーションの開発中に、全ての側面からできる限りアプリケーション及びアプリケーションのサイズを最適化することが要求される。例えば、Androidオペレーティングシステムにおいて使用されるAPKアプリケーションの場合、APKアプリケーションの生成中に、APKアプリケーション中の共有オブジェクト(SO)ファイルは、圧縮アルゴリズムを使用して圧縮され得、次いで、圧縮ファイルはAPKアプリケーションにカプセル化され得、従って、APKアプリケーションの圧縮が行われ得、APKアプリケーションのサイズは縮小され得る。
本出願では、ソースアプリケーションは、呼び出しファイルによって被呼び出しファイルを呼び出すことを通して1つ又は複数の特定のタスクを完遂する必要があるコンピュータプログラムである。例えば、Androidオペレーティングシステム中のAPKアプリケーションは、ソースアプリケーション(コンピュータプログラム)である。呼び出しファイルは、ソースアプリケーション(コンピュータプログラム)から抽出された実行可能コードファイルである。例えば、APKアプリケーションから抽出された実行可能コードファイルであるdexファイルが、呼び出しファイルである。
被呼び出しファイルは、ソースアプリケーション(コンピュータプログラム)から抽出され、プログラム動作中に呼び出しファイル(実行可能コードファイル)によってロードされる必要があるコードファイルである。例えば、APKアプリケーションから抽出されたSOファイルが、被呼び出しファイルである。呼び出しファイル(実行可能コードファイル)中の機能が呼び出され、呼び出しファイル(実行可能コードファイル)のコードを実行することによって、被呼び出しファイル(例えば、SOファイル)をロードすることができる。
本出願では、予め設定された圧縮アルゴリズムは、データ圧縮アルゴリズムであり、詳細には、任意の適切な圧縮アルゴリズムであり得、好ましくは、望ましい技術的効果を達成するための高い圧縮レートを有する圧縮アルゴリズムであり、これは、本出願において限定されない。
図1Aは、本発明による、ソースアプリケーションを圧縮する方法100の例を示すフローチャートを示す。図1Aに示されているように、方法100は、予め設定された圧縮アルゴリズムを使用してソースアプリケーション中の被呼び出しファイル(例えば、SOファイル)を圧縮し、圧縮された被呼び出しファイルを形成することによって、ステップ101において始まる。任意選択で、2つ以上の圧縮された被呼び出しファイルが形成され得る。少なくとも1つの被呼び出しファイルがソースアプリケーション中に存在し、予め設定された圧縮アルゴリズムを使用して全部又は一部の被呼び出しファイルを圧縮することは、詳細には、被呼び出しファイルを、1つ又は複数の圧縮された被呼び出しファイルに圧縮することであってもよく、これは、本出願において限定されなくてよい。例えば、全てのSOファイルは、APKアプリケーションから抽出され、次いで、(レンペルジブマルコフ連鎖アルゴリズムの省略である)LZMAアルゴリズムを使用して、1つの圧縮されたSOファイル、即ち、圧縮された被呼び出しファイルに圧縮され得る。
被呼び出しファイルが、予め設定された圧縮アルゴリズムを使用して、圧縮された被呼び出しファイルに圧縮された後、方法100はステップ102に移り、被呼び出しファイル(例えば、SOファイル)を呼び出す呼び出しファイル(実行可能コードファイル)を、呼び出しファイル(実行可能コードファイル)が、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正する。
伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードするために使用される。予め設定された圧縮アルゴリズムのためのプレコンパイルされたファイルを参照する伸張機能ファイルは、圧縮された被呼び出しファイルを伸張し、被呼び出しファイルのコードをロードすることが可能である。伸張機能ファイルはまた、呼び出しファイル(実行可能コードファイル)によって呼び出され得る被呼び出しファイルである。
被呼び出しファイルは、今や、予め設定された圧縮アルゴリズムによって圧縮されているので、呼び出しファイル(実行可能コードファイル)によって被呼び出しファイルを呼び出すためのオリジナルのステップは、もはや成功裏に実行され得ない。従って、呼び出しファイル(実行可能コードファイル)のオリジナルの論理は、修正される必要がある。呼び出しファイル(実行可能コードファイル)によって被呼び出しファイルを呼び出すためのプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正される。
そのような修正の後、呼び出しファイル(実行可能コードファイル)のコードが実行されたとき、(予め設定された圧縮アルゴリズムによって圧縮された)被呼び出しファイルを伸張することが可能な伸張機能ファイルがロードされ得、次いで、オリジナルの被呼び出しファイルが取得され得る。例えば、APKアプリケーションのメインdex(実行可能)ファイルの場合、SOファイルの全てを呼び出すためのオリジナルのステップは、SOファイル伸張及びローディングを呼び出すように修正され、ここで、SOファイルは、LZMAアルゴリズムによって圧縮された。
呼び出しファイル(実行可能コードファイル)が修正された後、方法100はステップ103に移り、デフォルトの圧縮アルゴリズムを使用して、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得する。圧縮されたアプリケーションは、予め設定された圧縮アルゴリズムによって部分的に圧縮され、対応する修正を受けたアプリケーションである。
修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、新しいアプリケーションにリパック及びカプセル化され、圧縮されたアプリケーションを取得する。例えば、修正されたdex(実行可能)ファイル、LZMAアルゴリズムによって圧縮された全てのSOファイル、及びLZMAアルゴリズムを処理することが可能なプレコンパイルされたSOファイルが、APKアプリケーションにリパックされ、取得されたAPKアプリケーションは、圧縮されたアプリケーションである。
本出願のこの実施形態によれば、ソースアプリケーション中の被呼び出しファイルは、オリジナルの圧縮アルゴリズムのものよりも高い圧縮レートを有するアルゴリズムなど、予め設定された圧縮アルゴリズムを使用して圧縮される。その結果、従って、アプリケーションを圧縮するための圧縮レートが改善され得、より小さいサイズのアプリケーションが取得され得る。
さらに、呼び出しファイル(実行可能コードファイル)は、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正される。修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、次いで、カプセル化され、アプリケーションが、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができるような、圧縮されたアプリケーションを取得する。
このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張する機能を有し、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
図1Bは、本発明の代替実施形態による、ソースアプリケーションを圧縮する方法120の例を示すフローチャートを示す。方法100及び方法120は同様であり、その結果、同じ参照番号を利用して、両方の方法に共通であるステップを指定する。
図1Bに示されているように、方法120は、予め設定された圧縮アルゴリズムを使用して圧縮可能であるソースアプリケーション中の被呼び出しファイルを最初に探索することによって、方法120がステップ122において始まるという点で方法100とは異なる。ソースアプリケーションは、複数のタイプのファイルを有し得る。予め設定された圧縮アルゴリズムを使用して圧縮可能である被呼び出しファイルは、予め設定された圧縮アルゴリズムがそれに適用可能であり、アプリケーションの正常な動作を不能にしない被呼び出しファイルである。予め設定された圧縮アルゴリズムを使用して圧縮可能である被呼び出しファイルは、ソースアプリケーションの様々なファイル中で見つけられる。例えば、全てのタイプのファイルは、ソースアプリケーション中で見つけられ得、見つけられたファイル中のSOファイルの全ては、予め設定された圧縮アルゴリズムを使用して圧縮可能であるファイルである。
本出願の好ましい実施形態では、被呼び出しファイルはダイナミックリンクライブラリファイルであり、呼び出しファイルは、ダイナミックリンクライブラリファイルを呼び出す実行可能ファイルである。加えて、ステップ122において予め設定された圧縮アルゴリズムを使用して圧縮可能であるソースアプリケーション中の被呼び出しファイルを探索することは、詳細には、ソースアプリケーション中に含まれる複数のタイプのファイルからダイナミックリンクライブラリファイルを探索することを含み得る。
ダイナミックリンクライブラリファイルは、プログラムが、特殊タスクを実行するために要求されるコード及び他のリソースを共有することを可能にする非実行可能バイナリプログラムファイルである。実行可能ファイルは、オペレーティングシステムによってロード及び実行され得るファイルを指す。実行可能ファイルは、異なるオペレーティングシステム環境では異なる様式で提示される。ダイナミックリンクライブラリファイルは、予め設定された圧縮アルゴリズムを使用して圧縮可能である被呼び出しファイルであり、ダイナミックリンクライブラリファイルは、ソースアプリケーション中に含まれる複数のタイプのファイルから探索される。
図1Cは、本発明の実施形態による、ファイルをカプセル化する方法140の例を示すフローチャートを示す。方法140は、図1A中のステップ103を実装するために利用され得る。図1Cに示されているように、方法140は、修正された呼び出しファイルを圧縮し、次いで、いくつかのファイルロケーションにあるオリジナルの呼び出しファイルを、ファイルロケーションにある圧縮された修正された呼び出しファイルと置き換えることによって、ステップ142において始まる。
これに続いて、方法140はステップ144に移り、ステップ101で生成された圧縮された被呼び出しファイル及び伸張機能ファイルを圧縮し、それらをソースアプリケーションに追加し、圧縮されたアプリケーションを取得する。その場合、圧縮された修正された呼び出しファイルを、修正の前の呼び出しファイルのファイルロケーションに配置することは、詳細には、修正の前の呼び出しファイルを削除し、次いで、圧縮された修正された呼び出しファイルを、修正の前の呼び出しファイルのファイルロケーションに配置することであり得る。
修正された呼び出しファイルは、詳細には、本出願において限定されない任意の適切な圧縮方法を使用して圧縮され得るが、被呼び出しファイルは、修正された呼び出しファイル及び圧縮された被呼び出しファイルを圧縮するために使用される圧縮のレートよりも高い圧縮のレートを用いて圧縮される。
アプリケーションがプラグインを含む場合、修正された呼び出しファイルは、圧縮され、そのオリジナルのプラグインに配置される。例えば、全ての修正されたdexファイルは、圧縮され、そのオリジナルのプラグインに配置される。圧縮された被呼び出しファイル及び伸張機能ファイルは、ソースアプリケーションに圧縮され、圧縮されたアプリケーションを取得する。詳細には、本出願において限定されない任意の適切な圧縮方法が使用され得る。
好ましい実施形態では、メインフレームワークに属する呼び出しファイルは、ステップ142において抽出及び圧縮され、次いで、ソースアプリケーションのオリジナルのメインフレームワークファイルを、圧縮されたメインフレームワークファイルと置き換えるために使用され得る。アプリケーションがただ1つの呼び出しファイルを有する場合、呼び出しファイルはメインフレームワーク呼び出しファイルである。アプリケーションが複数の呼び出しファイルに分割される場合、開始関連コンポーネントが1つの呼び出しファイルに入れられ、呼び出しファイルはメインフレームワーク呼び出しファイルと呼ばれる。他の呼び出しファイルは、2次呼び出しファイルと呼ばれることがあり、開始すると動的にロードされ得る。
本出願では、伸張機能ファイルは、メインフレームワーク呼び出しファイルに追加される。アプリケーションのメインフレームワークに属する呼び出しファイルは、圧縮のために抽出され、圧縮されたメインフレームワークファイルを取得する。ソースアプリケーションのオリジナルのメインフレームワークファイルを、圧縮されたメインフレームワークファイルと置き換えることは、圧縮されたメインフレームワークファイルをアプリケーションパッケージのルートディレクトリに配置することによって実装され得る。
本出願の好ましい実施形態では、予め設定された圧縮アルゴリズムはLZMAアルゴリズムである。(レンペルジブマルコフ連鎖アルゴリズムの省略である)LZMAは、2001年以降開発されたデータ圧縮アルゴリズムであり、7−Zipアーカイバにおける7zフォーマット又はUnixライクにおけるxzフォーマットで使用される。LZMAは、LZ77のような辞書符号化機構を使用し、概して、bzip2のものよりも高い圧縮レートを有する。例えば、圧縮のための辞書ファイルのサイズは4GBであり得る。LZMAアルゴリズムは、Androidシステムのデフォルトのデフレートアルゴリズムのものよりも高い圧縮レートを有するアルゴリズムである。アルゴリズムの使用は、より高い圧縮レートをAPKアプリケーションにもたらすことができる。
図2Aは、本発明による、ソースアプリケーションを圧縮する方法200の例を示すフローチャートを示す。図2Aに示されているように、方法200は、ソースアプリケーションを伸張し、呼び出しファイル及び被呼び出しファイルを探索することによって、ステップ201において始まる。ソースアプリケーションは、圧縮されたプログラムパッケージであり、ソースアプリケーションは、対応する伸張方法を使用して伸張され、プログラムパッケージ中の全てのファイルを取得し、全ての呼び出しファイル及び被呼び出しファイルを見つける。例えば、APKアプリケーションが伸張され、全てのdexファイル及びSOファイルが見つけられる。
これに続いて、方法200はステップ202に移り、被呼び出しファイル間の依存関係を判定し、依存関係を記録する依存ファイルを生成する。被呼び出しファイル間の依存関係は、見つけられた被呼び出しファイルに従って判定され、各被呼び出しファイルの依存関係は、依存ファイルに記録される。依存ファイルは、全ての被呼び出しファイルの依存関係を記録するファイルである。
詳細には、各被呼び出しファイルによって実行される動的依存テーブルが読み取られ得る。動的依存テーブルは、被呼び出しファイルが依存関係を相互に呼び出すためのテーブルである。各被呼び出しファイルの動的依存テーブルが記録され、全ての被呼び出しファイルのローディングのための依存テーブルが生成される。例えば、パースすることによって見つけられるAPKアプリケーションのSOファイルの場合、各SOファイルによって実行される動的依存テーブルが読み取られ、各SOファイルの動的依存テーブルが記録され、SOローディングのための依存テーブルファイルが生成される。
次に、方法200はステップ203に移り、予め設定された圧縮アルゴリズムを使用してソースアプリケーション中の被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成する。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
被呼び出しファイルが圧縮された後、方法200はステップ204に移り、伸張機能ファイルを、アプリケーションのメインフレームワークに属する呼び出しファイルに追加する。伸張機能ファイルを、アプリケーションのメインフレームワークに属する呼び出しファイルに追加するための複数の方法があり得る。
例えば、呼び出しファイルが伸張機能ファイルを外部で呼び出すことができるように、外部呼び出し側コードがメインフレームワーク呼び出しファイルに追加され得る。或いは、伸張機能ファイルのコードが、アプリケーションのメインフレームワークに属する呼び出しファイルに追加され得、従って、圧縮された被呼び出しファイルを伸張及びロードする伸張機能ファイルの機能は、呼び出しファイルの実行中により迅速に実行され得る。
アプリケーションがただ1つの呼び出しファイルを有する場合、呼び出しファイルはメインフレームワーク呼び出しファイルである。アプリケーションが複数の呼び出しファイルに分割される場合、開始関連コンポーネントが1つの呼び出しファイルに入れられ、呼び出しファイルはメインフレームワーク呼び出しファイルと呼ばれる。例えば、初期化コード、LZMAアルゴリズムによって圧縮されたファイルを伸張するための自己定義SOファイル、及びローディングコードが、APKアプリケーションのメインdexファイルに追加され得る。
図2Bは、本発明による、方法220の例を示すフローチャートを示す。方法220は、ステップ204を実装するために利用され得る。図2Bに示されているように、方法220は、ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名を、ソースアプリケーションのグローバルアプリケーション設定ファイルから抽出することによって、222において始まる。
グローバルアプリケーション設定ファイルは、アプリケーション中に含まれるコンポーネントを記述し、アプリケーションの動作プロセスを定義し、他のプログラムによってこのプログラムのコンポーネントにアクセスするために要求されるパーミッションを宣言し、アプリケーションを動作させるために接続されるべきライブラリをリストするアプリケーション全体の情報記述ファイルを指す。ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名が、グローバルアプリケーション設定ファイルから抽出される。例えば、APKアプリケーション中のAndroidManifest.xmlファイルが、プログラムエントリポイントを獲得するためにパースされる。
これに続いて、方法220はステップ224に移り、対応する呼び出しファイルを逆コンパイルする。伸張機能ファイルの、アプリケーションのメインフレームワークに属する呼び出しファイルへの追加中に、最初に、対応する呼び出しファイルが逆コンパイルされる必要があり、次いで、伸張機能ファイルが呼び出しファイルに追加される。しかも、全ての呼び出しファイルによる被呼び出しファイルの呼び出しの、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルの呼び出しへの修正中に、最初に、対応する呼び出しファイルが逆コンパイルされる必要があり、次いで、呼び出しが修正される。
例えば、全てのdexファイルが逆コンパイルされ、APKアプリケーションのdexファイル中のSOファイルローディングに関連する全ての機能が見つけられ、機能は、LZMA圧縮ファイルを伸張する追加された自己定義SOファイルのコードをロードすることに、統一された様式で修正される。この後、方法220はステップ226に移り、伸張機能ファイルを、逆コンパイルされた呼び出しファイルに挿入する。
再び図2Aを参照すると、方法200が、ステップ204において伸張機能ファイルを呼び出しファイルに追加した後、方法200はステップ205に移り、伸張機能ファイルを呼び出しファイルの初期化オブジェクトに追加する。呼び出しファイルの初期化オブジェクトは、呼び出しファイルの実行中に初めに作成されるべきインスタンスを指し、伸張機能ファイルは、呼び出しファイルの初期化オブジェクトに追加される。
図2Cは、本発明による、伸張機能ファイルを、呼び出しファイルの初期化オブジェクトに追加する方法240の例を示すフローチャートを示す。方法240は、図2A中のステップ205を実装するために利用され得る。図2Cに示されているように、方法240は、呼び出しファイルのプログラムエントリロケーションにある第1の動作機能を探索することによって、242において始まる。
これに続いて、方法240はステップ244に移り、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを、第1の機能の呼び出しオブジェクトに追加する。第1の動作機能は、呼び出しファイルのプログラムエントリから探索され、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルは、第1の機能の呼び出しオブジェクトに追加される。伸張機能ファイルは、予め設定された圧縮アルゴリズムについてプレコンパイルされたファイルであり、圧縮された被呼び出しファイルを伸張し、被呼び出しファイルのコードをロードすることが可能である。
再び図2Aを参照すると、方法200が、ステップ205において伸張機能ファイルを呼び出しファイルの初期化オブジェクトに追加した後、方法200はステップ206に移り、呼び出しファイルによって被呼び出しファイルを呼び出すステップを、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正する。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
この後、方法240はステップ207に移り、呼び出しファイルに属するアプリケーション中の機能コンポーネントに再署名する。署名することは、アプリケーションにデジタル署名することを指す。インストールされるべき全てのプログラムが、何らかのオペレーティングシステムについて署名されなければならないので、システムは、全てのアプリケーションが、インストールされる前に証明書によってデジタル署名されることを必要とする。例えば、Androidシステムは証明書を通してアプリケーションのオーサーを確認し、証明書は機関によって証明される必要がない。
概して、アプリケーションは、開発者の自己署名証明書を使用し、証明書は、信用関係がアプリケーションとアプリケーションのオーサーとの間で確立されたことを保証し、ユーザがどのアプリケーションをインストールすることができるかを判定するために使用されない。機能コンポーネントは、アプリケーション中のいくつかの機能又はモジュールを指し、通常、プラグインの形態で存在し、修正された呼び出しファイルがそれに属するアプリケーション中の機能コンポーネントは、再署名される。
任意選択で、機能コンポーネントに再署名する前に、方法200は、呼び出しファイルに属するアプリケーション中の機能コンポーネントが、オリジナルの署名を有するかどうかをステップ207において判定することができる。呼び出しファイルに属するアプリケーション中の機能コンポーネントが、オリジナルの署名を有するかどうかを判定することは、詳細には、機能コンポーネントが署名を有するかどうかを検査し、アプリケーション中の呼び出しファイルに属する機能コンポーネントがオリジナルの署名を有すると判定することであり得る。
次に、方法200はステップ208に移り、依存ファイル、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得する。依存ファイル、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、新しいアプリケーションにリパック及びカプセル化され、圧縮されたアプリケーションを取得する。特定のカプセル化方法は、この実施形態において限定されない任意の適切な方法であり得る。
例えば、SOファイルをロードするための依存テーブルファイル、修正されたdexファイル、LZMAアルゴリズムによって圧縮された全てのSOファイル、及びLZMAアルゴリズムを処理することが可能なプレコンパイルされたSOファイルが、APKアプリケーションにリパックされ、取得されたAPKアプリケーションは、圧縮されたアプリケーションである。
次に、ファイルがステップ208においてカプセル化された後、方法200はステップ209に移り、圧縮されたアプリケーションに署名する。インストールされるべき全てのプログラムが、何らかのオペレーティングシステムについて署名されなければならないので、システムは、全てのアプリケーションが、インストールされる前に証明書によってデジタル署名されることを必要とする。圧縮されたアプリケーションは署名され、アプリケーションが、正常にインストールされ、動作することができることを保証する。
本出願のこの実施形態によれば、最初に、ソースアプリケーションが伸張され、次いで、呼び出しファイル及び被呼び出しファイルが、探索され、見つけられる。この後、被呼び出しファイル間の依存関係が判定され、依存関係を記録する依存ファイルが生成される。
次に、ソースアプリケーション中の被呼び出しファイルが、圧縮された被呼び出しファイルを形成するための予め設定された圧縮アルゴリズムを使用して、例えば、オリジナルの圧縮アルゴリズムのものよりも高い圧縮レートを有するアルゴリズムを使用して圧縮される。その結果、従って、アプリケーションを圧縮するための圧縮レートが改善され得、より小さいサイズのアプリケーションが取得され得る。
圧縮された被呼び出しファイルの形成に続いて、伸張機能ファイルは、アプリケーションのメインフレームワークに属する呼び出しファイルに追加される。加えて、伸張機能ファイルは、呼び出しファイルの初期化オブジェクトに追加される。さらに、呼び出しファイルによって被呼び出しファイルを呼び出すプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルの呼び出しに修正される。この後、呼び出しファイルに属するアプリケーション中の機能コンポーネントが再署名される。
次に、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルがカプセル化され、圧縮されたアプリケーションを取得し、圧縮されたアプリケーションは、アプリケーションが、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができるように署名される。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張する機能を有することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
図3は、本発明による、ソースアプリケーションを伸張する方法300の例を示すフローチャートを示す。図3に示されているように、方法300は、デフォルトの伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除(伸張)することによって、ステップ301において始まり、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する予め設定された伸張アルゴリズムを使用する伸張機能ファイルとを取得する。デフォルトの伸張アルゴリズムは、予め設定された圧縮アルゴリズムの圧縮のレートよりも低い圧縮のレートを有するデフォルトの圧縮アルゴリズムと一致する。
圧縮されたアプリケーションは、予め設定された圧縮アルゴリズムによって部分的に圧縮され、対応する修正を受けたアプリケーションである。圧縮されたアプリケーションは、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを含む。呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。詳細には、アプリケーションの圧縮中に、呼び出しファイルによって被呼び出しファイルを呼び出すために使用されるプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すように修正される。
圧縮されたアプリケーションはカプセル化解除(伸張)され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。例えば、APKアプリケーションは、圧縮されたアプリケーションであり、APKアプリケーションは伸張され、修正されたdexファイルと、LZMAアルゴリズムによって圧縮されたSOファイルの全てと、LZMAアルゴリズムを処理することが可能なプレコンパイルされたSOファイル(伸張機能ファイル)とを取得する。
圧縮されたアプリケーションがカプセル化解除(伸張)された後、方法300は、ステップ301からステップ302に移り、伸張機能ファイルを呼び出すことによって、呼び出しファイルによって被呼び出しファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする。呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルが呼び出され、圧縮された被呼び出しファイルを伸張及びロードするために、伸張機能ファイルのコードが実行される。
例えば、LZMAアルゴリズムを処理するためのSOファイル(伸張機能ファイル)がロードされ、LZMAアルゴリズムを処理するためのSOファイルのコードが実行され、圧縮されたSOファイルを伸張する。これに続いて、伸張されたSOファイルがロードされ、圧縮されたアプリケーションの伸張を完了する。
本出願のこの実施形態によれば、圧縮されたアプリケーションはカプセル化解除(伸張)され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルは呼び出され、圧縮されたアプリケーションが、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができるように、圧縮された被呼び出しファイルを伸張及びロードする。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。その場合は、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張することができる。その結果、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
図4は、本発明による、アプリケーションを伸張するための方法400の例を示すフローチャートを示す。図4に示されているように、方法400は、圧縮されたアプリケーションをカプセル化解除(伸張)し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得することによって、ステップ401において始まる。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
これに続いて、方法400はステップ402に移り、メインフレームワークの呼び出しファイルを呼び出し、圧縮されたアプリケーション中の伸張機能ファイルを初期化する。メインフレームワーク呼び出しファイルの初期化オブジェクトは伸張機能ファイルを含み、圧縮されたアプリケーション中の伸張機能ファイルを初期化するために、メインフレームワークの呼び出しファイルが呼び出される。
例えば、APKアプリケーションの動作中に、メインdexファイルが実行され、呼び出し機能はアプリケーション圧縮段階において修正されたので、LZMAアルゴリズムを処理するためのSOファイルをロードする機能が呼び出され、LZMAアルゴリズムを処理するためのSOファイルをロードする。
次に、方法400はステップ403に移り、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかを判定する。呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかが判定される。
呼び出しファイルによって呼び出されるべき被呼び出しファイルが存在しない場合、方法400はステップ404に移り、現在のオペレーティングシステムにおいて被呼び出しファイルを探索するか、又はネットワークから被呼び出しファイルをダウンロードする。一方、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在する場合、方法400はステップ405に移る。例えば、ロードされるべきSOファイルが、LZMAアルゴリズムによって圧縮されたファイル中に存在するかどうかがステップ403において判定される。
本出願のこの実施形態では、呼び出しファイルによって呼び出される被呼び出しファイルについて、いくつかは圧縮された被呼び出しファイル中にあり、いくつかはオペレーティングシステム中にあり、いくつかはネットワーク上にあり、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在しない場合、被呼び出しファイルは、現在のオペレーティングシステムから探索され得るか、又は被呼び出しファイルは、ネットワークからダウンロードされ得る。
ステップ405において、呼び出しファイルによる被呼び出しファイルの呼び出し中に、方法400は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の被呼び出しファイルに依存するかどうかを判定する。呼び出しファイルによる被呼び出しファイルの呼び出し中に、呼び出しファイルによって呼び出されるべき被呼び出しファイルが別の被呼び出しファイルに依存するかどうかが判定され、これは、詳細には、圧縮されたアプリケーションをカプセル化解除(伸張)することによって取得された依存ファイルに従って実施され得、ここで、依存ファイルは、被呼び出しファイル間の依存関係を記録する。その結果、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の(第2の)被呼び出しファイルに依存するかどうかが判定される。
被呼び出しファイルが別の(第2の)被呼び出しファイルに依存するとき、方法400はステップ406に移り、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルから別の(第2の)被呼び出しファイルを伸張する。伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルから別の(第2の)被呼び出しファイルを伸張することは、詳細には、伸張機能ファイル中の対応する伸張アルゴリズムを使用して、予め設定された圧縮アルゴリズムによって圧縮されたファイルを伸張し、被呼び出しファイルがそれに依存する別の(第2の)被呼び出しファイルを取得することであり得る。
これに続いて、方法400は、ステップ405からステップ407に、又はステップ406からステップ407に移り、伸張機能ファイルを呼び出し、呼び出しファイルによって呼び出されるべき被呼び出しファイルを、圧縮された被呼び出しファイルから伸張する。伸張機能ファイルを呼び出し、要求される被呼び出しファイルを、圧縮された被呼び出しファイルから伸張することは、詳細には、伸張機能ファイル中の対応する伸張アルゴリズムを使用して、予め設定された圧縮アルゴリズムによって圧縮されたファイルを伸張し、呼び出されるべき被呼び出しファイルを取得することであり得る。
この後、方法400はステップ408に移り、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする。本出願のこの実施形態では、特定の実装は、前の実施形態において説明されたものに合致し、その詳細は、繰返しを避けるために省略される。
本出願のこの実施形態によれば、圧縮されたアプリケーションはカプセル化解除(伸張)され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。加えて、圧縮されたアプリケーション中の伸張機能ファイルを初期化するために、メインフレームワークの呼び出しファイルが呼び出される。さらに、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかが判定される。
呼び出しファイルによって呼び出されるべき被呼び出しファイルが存在しない場合、被呼び出しファイルは、現在のオペレーティングシステムにおいて探索されるか、又は被呼び出しファイルは、ネットワークからダウンロードされる。一方、被呼び出しファイルが存在する場合、呼び出しファイルによる被呼び出しファイルの呼び出し中に、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の被呼び出しファイルに依存するかどうかが判定される。被呼び出しファイルが別のファイルに依存する場合、別の被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するために、伸張機能ファイルが呼び出される。
加えて、呼び出しファイルによって呼び出されるべき被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するために、伸張機能ファイルが呼び出される。さらに、圧縮された被呼び出しファイルを伸張及びロードするために、伸張機能ファイルが呼び出される。次いで、圧縮されたアプリケーションは、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができる。
このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
当業者が本出願をより良く理解することを可能にするために、本出願の検証方法が、特定の例を通して以下で説明される。
図5は、本発明の実施形態による、圧縮プロセス500の例を示す図である。図5に示されているように、プロセス500は、入ってくるAndroidアプリケーションパッケージ(APK)を伸張することで、501において始まる。この後、プロセス500はステップ502Aに移り、ファイルをパースし、圧縮されたパッケージ中のSOファイルの全てを見つけ、ステップ502Bに移り、AndroidManifest.xmlファイルをパースする。
次に、プロセス500はステップ503に移り、SO依存テーブルを生成する。SOファイルをロードすることは、対応する依存関係を要求するので、APKアプリケーション中の全てのSOファイルの依存関係テーブルが生成される。これに続いて、プロセス500はステップ504に移り、SOファイルの全てを圧縮する。サイズを縮小するために、SOファイルの全ては、LZMAアルゴリズムを使用して1つの圧縮ファイルに圧縮され、圧縮された被呼び出しファイルを形成する。一方、LZMAアルゴリズムを処理することが可能なプレコンパイルされたSOファイル(伸張機能ファイル)が追加される。
SOファイルが圧縮された後、プロセス500はステップ505に移り、dex(実行可能)ファイルを修正する。オリジナルのプログラム中のSOファイルの全ては、1つのSOファイルに圧縮されるので、Javaレイヤ上のSOファイルをロードするための機能は、動作中に呼び出されるとき、インターセプトされ、SOファイル依存関係テーブルを通して変換されなければならない。
次に、プロセス500は、ステップ506A、ステップ506B、及びステップ506Cに移り、ファイルをパックする。LZMAアルゴリズムを処理することが可能なプレコンパイルされたSOファイルと、SO依存関係テーブルと、LZMAアルゴリズムによって圧縮されたSOファイルの全てと、修正されたdexファイルとが、Androidアプリケーションにリパックされる。一方、オリジナルのSOファイルは削除される。この後、プロセス500はステップ507に移り、再署名する。リパックされたAndroidアプリケーションは、オリジナルのプログラムの署名ファイルを使用して再署名される。
図6は、本発明の実施形態による、伸張プロセス600の例を示す図である。図6に示されているように、プロセス600は、LZMAアルゴリズムによって圧縮されたファイルを伸張することが可能なSOファイルをロードすることで、601において始まり、従って、APKアプリケーションは、LZMA圧縮ファイルを伸張する機能を有する。
この後、プロセス600はステップ602に移る。602において、アプリケーションがSOファイルをロードする、即ち、SOファイルローディング論理を実行する必要があるとき、呼び出し機能はパッキング段階において修正されたので、SOファイルをロードするための自己定義機能が呼び出される。次に、プロセス600はステップ603に移り、ロードされるべきSOファイルが、LZMA圧縮ファイル中に存在するかどうかを判定する。
SOファイルが、LZMA圧縮ファイル中に存在しない場合、プロセス600はステップ604に移り、伸張なしに、システム機能を直接呼び出し、SOファイルをロードする。ステップ604は、システムのSOファイルがロードされるか、又はSOファイルがネットワークから動的にダウンロードされ、SOファイルは、伸張なしに、システム機能を呼び出すことによって、直接ロードされることを示す。
SOファイルが存在する場合、プロセス600は、代わりに、ステップ605に移り、ロードされるべきSOファイルが別のSOファイルに依存するかどうかを判定する。ロードされるべきSOファイルが別のSOファイルに依存しない場合、プロセス600はステップ606に移り、ロードされるべきSOファイルを直接伸張する。
SOファイルが別のSOファイルに依存する場合、プロセス600は、代わりに、ステップ607に移り、最初に、依存SOファイルを伸張し、次いで、ロードされるべきSOファイルを伸張する。プロセス600は、入ってくるSOファイルの名前に従って、SOファイルを、予め組み込まれたLZMA圧縮ファイルから伸張する。SOファイルのローディングが他のSOファイルに依存する必要がある場合、他のSOファイルも伸張される必要がある。
この後、プロセス600は、ステップ607からステップ608に、又はステップ606からステップ608に移り、伸張されたSOファイルのパスを取得し、SOファイルをロードするためのシステムインターフェースを呼び出し、ローディングを完了する。プロセスは、次いで、ステップ609に移り、プログラムサービス論理を実行することに進む。
図7A及び図7Bは、本発明の実施形態による、アプリケーションを圧縮するためのいくつかのモジュールを含む装置700の例を示す図である。モジュールは、例えば、ソフトウェアモジュールであり得、装置700はソフトウェアモジュールを実行するプロセッサである。
図7A及び図7Bに示されているように、装置700は、ソースアプリケーションを伸張し、呼び出しファイル及び被呼び出しファイルを探索するように構成された、ソースアプリケーション伸張モジュール702を含む。装置700は、予め設定された圧縮アルゴリズムを使用して圧縮可能であるソースアプリケーション中の被呼び出しファイルを探索するように構成された、被呼び出しファイル探索モジュール704をも含む。
実施形態では、被呼び出しファイルはダイナミックリンクライブラリファイルであり、呼び出しファイルは、ダイナミックリンクライブラリファイルを呼び出す実行可能ファイルである。加えて、被呼び出しファイル探索モジュール704は、詳細には、ダイナミックリンクライブラリファイルを、ソースアプリケーション中に含まれる複数のタイプのファイルから探索するように構成される。
図7A及び図7Bにさらに示されているように、装置700は、被呼び出しファイル間の依存関係を判定し、依存関係を記録する依存ファイルを生成するように構成された、依存ファイル生成モジュール706を含む。装置700は、予め設定された圧縮アルゴリズムを使用してソースアプリケーション中の被呼び出しファイルを圧縮するように構成された、被呼び出しファイル圧縮モジュール708を追加として含む。ソースアプリケーション伸張モジュール702及び被呼び出しファイル探索モジュール704は、両方とも、被呼び出しファイルがモジュール708によって圧縮される前に探索する。
さらに、装置700は、伸張機能ファイルを、アプリケーションのメインフレームワークに属する呼び出しファイルに追加するように構成された、機能ファイル追加モジュール710と、ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名を、ソースアプリケーションのグローバルアプリケーション設定ファイルから抽出するように構成された、エントリクラス名抽出サブモジュール712とを含む。
加えて、装置700は、対応する呼び出しファイルを逆コンパイルするように構成された、呼び出しファイル逆コンパイルモジュール714と、伸張機能ファイルを呼び出しファイルの初期化オブジェクトに追加するように構成された、機能ファイル増加モジュール716とを含む。実施形態では、機能ファイル増加モジュール716は、呼び出しファイルのプログラムエントリロケーションにある第1の動作機能を探索するように構成された、機能探索サブモジュール716Aと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを、第1の機能の呼び出しオブジェクトに追加するように構成された、機能ファイル増加サブモジュール716Bとを含む。
図7A及び図7Bにさらに示されているように、装置700は、呼び出しファイルによって被呼び出しファイルを呼び出すプロセスを、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すことに修正するように構成された、呼び出し側修正モジュール718をも含み、ここで、伸張機能ファイルは、圧縮された被呼び出しファイルを伸張及びロードするために使用される。
装置700は、アプリケーション中の呼び出しファイルに属する機能コンポーネントがオリジナルの署名を有するかどうかを判定するように構成された、オリジナル署名判定モジュール720を追加として含む。
実施形態では、装置700は、呼び出しファイルに属するアプリケーション中の機能コンポーネントに再署名するように構成された、コンポーネント署名モジュール722をさらに含む。オリジナル署名判定モジュール720は、機能コンポーネントが再署名される前に、オリジナルの署名を判定する。
加えて、装置700は、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するように構成された、アプリケーションカプセル化モジュール724を含む。コンポーネント署名モジュール722は、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルがカプセル化され、圧縮されたアプリケーションを取得する前に、機能コンポーネントに再署名する。
実施形態では、アプリケーションカプセル化モジュール724は、詳細には、依存ファイル、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルをカプセル化(圧縮)し、圧縮されたアプリケーションを取得するように構成される。実施形態では、アプリケーションカプセル化モジュール724は、修正された呼び出しファイルを圧縮し、それらを修正の前の呼び出しファイルのロケーションに置き換えるように構成された、呼び出しファイル圧縮サブモジュール724Aを含む。
アプリケーションカプセル化モジュール724は、圧縮された被呼び出しファイル及び伸張機能ファイルを圧縮し、それらをソースアプリケーションに追加し、圧縮されたアプリケーションを取得するように構成された、圧縮及び追加サブモジュール724Bをも含む。
実施形態では、アプリケーションカプセル化モジュール724は、アプリケーションのメインフレームワークに属する呼び出しファイルを抽出及び圧縮し、圧縮されたメインフレームワークファイルを取得するように構成された、メインフレームワークファイル圧縮サブモジュール724Cをさらに含み、ここで、伸張機能ファイルは、メインフレームワーク呼び出しファイルに追加された。
アプリケーションカプセル化モジュール724は、ソースアプリケーションのオリジナルのメインフレームワークファイルを、圧縮されたメインフレームワークファイルと置き換えるように構成された、メインフレームワークファイル代入サブモジュール724Dをも含む。
実施形態では、装置700は、圧縮されたアプリケーションに署名するように構成された、アプリケーション署名モジュール726をさらに含む。実施形態では、予め設定された圧縮アルゴリズムはLZMAアルゴリズムである。
本出願のこの実施形態によれば、最初に、ソースアプリケーション中の被呼び出しファイルが、予め設定された圧縮アルゴリズムを使用して、例えば、オリジナルの圧縮アルゴリズムのものよりも高い圧縮レートを有するアルゴリズムを使用して圧縮される。その結果、従って、アプリケーションを圧縮するための圧縮レートが改善され得、より小さいサイズのアプリケーションが取得され得る。
さらに、呼び出しファイルによって被呼び出しファイルを呼び出すプロセスは、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルを呼び出すことに修正される。次に、修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルがカプセル化(圧縮)され、圧縮されたアプリケーションを取得する。修正された呼び出しファイル、圧縮された被呼び出しファイル、及び伸張機能ファイルは、被呼び出しファイルを、圧縮された被呼び出しファイルに圧縮するために使用される予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有するアルゴリズムを用いて圧縮される。
次いで、アプリケーションは、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができる。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張する機能を有することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
図8は、本発明の実施形態による、アプリケーションを伸張するためのいくつかのモジュールを含む装置800の例を示す図である。モジュールは、例えば、ソフトウェアモジュールであり得、装置800はソフトウェアモジュールを実行するプロセッサである。
図8に示されているように、装置800は、圧縮されたアプリケーションをカプセル化解除(伸張)し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得するように構成された、アプリケーションカプセル化解除モジュール802を含み、ここで、呼び出しファイルは、伸張機能ファイルを呼び出すように修正される。
図8にさらに示されているように、装置800は、メインフレームワークの呼び出しファイルを呼び出し、圧縮されたアプリケーション中の伸張機能ファイルを初期化するように構成された、機能ファイル初期化モジュール804をも含む。実施形態では、装置800は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、圧縮された被呼び出しファイル中に存在するかどうかを判定するように構成された、被呼び出しファイル存在判定モジュール806を追加として含む。
実施形態では、装置800は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが存在しない場合、被呼び出しファイルを現在のオペレーティングシステムにおいて探索するか、又は被呼び出しファイルをネットワークからダウンロードするように構成された、探索/ダウンロードモジュール808をさらに含む。
実施形態では、装置800は、呼び出しファイルによって呼び出されるべき被呼び出しファイルが、別の被呼び出しファイルに依存するかどうかを判定するように構成された、依存判定モジュール810をも含む。装置800は、伸張機能ファイルを呼び出し、別の被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するように構成された、依存ファイル伸張モジュール812を追加として含む。
実施形態では、装置800は、呼び出しファイルによる被呼び出しファイルの呼び出し中に、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードするように構成された、伸張及びローディングモジュール814をさらに含む。加えて、装置800は、伸張機能ファイルを呼び出し、呼び出しファイルによって呼び出されるべき被呼び出しファイルを、圧縮された被呼び出しファイルから伸張するように構成された、ファイル伸張モジュール816を含む。
機能ファイル初期化モジュール804は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする前に、メインフレームワークの呼び出しファイルを呼び出す。被呼び出しファイル存在判定モジュール806は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする前に存在を判定する。依存判定モジュール810は、伸張機能ファイルを呼び出し、圧縮された被呼び出しファイルを伸張及びロードする前に依存関係を判定する。
本出願のこの実施形態によれば、圧縮されたアプリケーションはカプセル化解除(伸張)され、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、予め設定された圧縮アルゴリズムに対応する伸張機能ファイルとを取得する。呼び出しファイルによる被呼び出しファイルの呼び出し中に、圧縮された被呼び出しファイルを伸張及びロードするために、伸張機能ファイルが呼び出される。
次いで、圧縮されたアプリケーションは、動作中に伸張のために、予め設定された圧縮アルゴリズムを伸張することが可能なアルゴリズムを呼び出すことができる。このようにして、高い圧縮レートを有するアルゴリズムに元来適合しないという問題は解決され得る。この場合、アプリケーション自体が、高い圧縮レートを有する圧縮アルゴリズムを伸張することができ、より高い圧縮レートを採用するアプリケーションの正常な動作が保証される。
装置実施形態は、基本的に、図1、図2、図3、及び図4に示されている上記の方法実施形態に対応するので、それらの詳細が繰返しを避けるために省略される、この実施形態では詳述されない部分については、上記の実施形態における関連する説明に対する参照が行われ得る。
本明細書で提供されるアルゴリズム及び表示は、任意の特定のコンピュータ、仮想システム、又は他のデバイスに本質的に関連しない。様々な汎用システムが、本明細書の教示とともに使用され得る。上記の説明によれば、そのようなシステムを構成するためにどのような構造が必要とされるかがわかることは明らかである。その上、本出願は、任意の特定のプログラム言語に基づかない。本明細書で説明される本出願の内容を実装するために、様々なプログラミング言語が使用され得ることを理解されたい。特定の言語の上記の説明は、本出願の最良の実装形態を開示することを目的とする。
多数の具体的な詳細が、ここに提供されている本明細書で説明される。しかしながら、本出願の実施形態は、これらの具体的な詳細なしに実装され得ることが理解され得る。いくつかの例では、よく知られている方法、構造、及び技法は、本明細書を理解する際に困難を生じないように、詳しくは提供されない。
同様に、本開示を簡略化し、様々な適用態様のうちの1つ又は複数の理解を容易にするために、本出願の様々な特徴は、場合によっては、本出願の例示的な実施形態の上記の説明中のそれらの単一の実施形態、図又は説明において組み合わせられることを理解されたい。しかしながら、本開示の方法は、以下の趣旨、即ち、保護がそれについて求められる本出願が、各請求項に明確に記載されているものよりも多くの特徴を要求するということを表すものと解釈されるべきではない。より詳細には、以下の請求項が表すように、適用例は、単一の開示された実施形態の全ての特徴よりも少ない特徴を有し得る。従って、特定の実施形態に従う請求項は、本明細書によって明示的に特定の実施形態に組み込まれ、各請求項は、本出願の別個の実施形態として独立している。
当業者は、実施形態におけるデバイス中のモジュールが、適応的に変更され、実施形態とは異なる1つ又は複数のデバイス中に配置され得ることを理解することができる。実施形態におけるモジュール、ユニット、又はコンポーネントは、組み合わせられて1つのモジュール、ユニット又はコンポーネントになり得、それらはまた、複数のサブモジュール、サブユニット、又はサブコンポーネントに分割され得る。(添付の請求項、要約書及び図面を含む)本明細書に開示されている特徴の全て、及びそのように開示された任意の方法又はデバイスのプロセス又はユニットの全ては、そのような特徴及び/又はプロセス又はユニットのうちの少なくともいくつかが、相互排他的である組合せを除いて、任意の組合せで組み合わせられ得る。(添付の請求項、要約書及び図面を含む)本明細書に開示されている各特徴は、別段に明記されていない限り、同じ、等価な又は同様の目的を果たす代替的特徴によって置き換えられ得る。
その上、当業者は、本明細書で説明されるいくつかの実施形態は、他の実施形態の他の特徴を含まないがいくつかを含むが、異なる実施形態の特徴の組合せが、本出願の範囲内にあり、異なる実施形態を形成するものであることを理解することができる。例えば、以下の請求項では、請求される実施形態のうちのいずれか1つが、任意の組合せで使用され得る。
本出願の各構成要素実施形態は、ハードウェアによって実装され得るか、又は1つもしくは複数のプロセッサ上で動作するソフトウェアモジュールによって実装され得るか、又はハードウェアモジュール及びソフトウェアモジュールの組合せによって実装され得る。当業者は、本出願の実施形態に従ってデータ分析に基づいてサーバ侵入を識別するためのデバイス中のコンポーネントの一部又は全部の機能の一部又は全部が、実際にはマイクロプロセッサ又はデジタル信号プロセッサ(DSP)を使用することによって実装され得ることを理解すべきである。本出願は、さらに、ここで説明される方法の一部又は全部を実施するためのデバイス又は(コンピュータプログラム及びコンピュータプログラム製品などの)装置プログラムとして実装され得る。本出願を実装するためのそのようなプログラムは、コンピュータ可読媒体に記憶され得るか、又は1つもしくは複数の信号の形態であり得る。そのような信号は、インターネットサイトからダウンロードすることによって取得され得るか、又はキャリア信号上で提供され得るか、又は任意の他の形態で提供され得る。
上述の実施形態は、本出願を限定するのではなく、本出願を説明し、当業者は、添付の請求項の範囲から逸脱することなく、代替的実施形態を設計することができることに留意されたい。請求項中の丸括弧中の任意の参照符号は、請求項を限定するものと解釈されるべきではない。「含む」又は「備える」という単語は、請求項中でリストされていない構成要素又はステップを除外しない。構成要素の前の「a(1つの)」又は「an(1つの)」という単語は、複数のそのような構成要素がある状況を除外しない。本出願は、いくつかの異なる構成要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装され得る。いくつかの装置がリストされるユニット請求項では、装置のうちのいくつかは、詳細には、同じハードウェアによって実装され得る。「第1の」、「第2の」、「第3の」などという単語は、いかなる順序も示さない。これらの単語は、名前として解釈され得る。

Claims (27)

  1. アプリケーションを圧縮するための方法であって、
    圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも1つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成するステップと、
    修正された呼び出しファイルを形成するために少なくとも1つの呼び出しファイルを修正するステップであって、前記修正された呼び出しファイルは、前記圧縮アルゴリズムに対応する伸張機能ファイルを呼び出し、前記伸張機能ファイルは、前記圧縮された呼び出しファイルを伸張し且つ伸張された被呼び出しファイルをロードする、ステップと、
    前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップと
    を含む、方法。
  2. 前記少なくとも1つの被呼び出しファイルを圧縮するステップの前に、前記圧縮アルゴリズムを使用して圧縮可能である前記ソースアプリケーション中の被呼び出しファイルを探索するステップをさらに含む
    請求項1に記載の方法。
  3. 前記少なくとも1つの被呼び出しファイルは、ダイナミックリンクライブラリファイルであり、
    前記少なくとも1つの呼び出しファイルは、前記ダイナミックリンクライブラリファイルを呼び出す実行可能ファイルであり、
    前記圧縮アルゴリズムを使用して圧縮可能である前記ソースアプリケーション中の被呼び出しファイルを探索する前記ステップは、前記ソースアプリケーション中の複数のタイプのファイルから前記ダイナミックリンクライブラリファイルを探索するステップを含む
    請求項2に記載の方法。
  4. 伸張機能ファイルを、前記少なくとも1つの呼び出しファイルの初期化オブジェクトに追加するステップをさらに含む
    請求項1に記載の方法。
  5. 前記伸張機能ファイルを、前記アプリケーションのメインフレームワークに属する呼び出しファイルに追加するステップをさらに含む
    請求項1に記載の方法。
  6. 前記伸張機能ファイルを、前記アプリケーションのメインフレームワークに属する呼び出しファイルに追加するステップをさらに含む
    請求項4に記載の方法。
  7. 伸張機能ファイルを、前記呼び出しファイルの初期化オブジェクトに追加するステップは、
    前記呼び出しファイルのプログラムエントリロケーションにある第1の動作機能を探索するステップと、
    前記第1の圧縮アルゴリズムに対応する伸張機能ファイルを、前記第1の機能の呼び出しオブジェクトに追加するステップと
    を含む
    請求項4に記載の方法。
  8. 伸張機能ファイルを、前記呼び出しファイルの初期化オブジェクトに追加するステップの前に、前記ソースアプリケーションのプログラムエントリロケーションにあるエントリクラス名を、前記ソースアプリケーションのグローバルアプリケーション設定ファイルから抽出するステップをさらに含む
    請求項4に記載の方法。
  9. 前記対応する呼び出しファイルを逆コンパイルするステップをさらに含む
    請求項1に記載の方法。
  10. 前記対応する呼び出しファイルを逆コンパイルするステップをさらに含む
    請求項5に記載の方法。
  11. 前記被呼び出しファイル間の依存関係を判定するステップと、
    前記依存関係を記録する依存ファイルを生成するステップと
    をさらに含む
    請求項1に記載の方法。
  12. 前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップは、前記依存ファイル、前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、前記圧縮されたアプリケーションを取得するステップを含む
    請求項11に記載の方法。
  13. 前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップは、
    前記修正された呼び出しファイルを圧縮し、それらを、修正の前の前記少なくとも1つの呼び出しファイルのロケーションに置き換えるステップと、
    前記圧縮された被呼び出しファイル及び前記伸張機能ファイルを圧縮し、それらを、前記ソースアプリケーションに追加し、前記圧縮されたアプリケーションを取得するステップと
    を含む
    請求項1に記載の方法。
  14. 前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップは、
    前記アプリケーションのメインフレームワークに属する呼び出しファイルを抽出及び圧縮し、圧縮されたメインフレームワークファイルを取得するステップであって、前記伸張機能ファイルは、前記メインフレームワーク呼び出しファイルに追加されている、ステップと、
    前記ソースアプリケーションのオリジナルのメインフレームワークファイルを、前記圧縮されたメインフレームワークファイルと置き換えるステップと
    をさらに含む
    請求項13に記載の方法。
  15. 前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップの後、前記アプリケーション中の前記少なくとも1つの呼び出しファイルに属する機能コンポーネントに再署名するステップをさらに含む
    請求項1に記載の方法。
  16. 前記アプリケーション中の前記少なくとも1つの呼び出しファイルに属する機能コンポーネントに再署名するステップの前に、前記方法は、前記アプリケーション中の前記少なくとも1つの呼び出しファイルに属する前記機能コンポーネントが、オリジナルの署名を有すると判定するステップをさらに含む
    請求項15に記載の方法。
  17. 圧縮アルゴリズムを使用して、ソースアプリケーション中の被呼び出しファイルを圧縮するステップの前に、
    前記ソースアプリケーションを伸張するステップと、
    前記少なくとも1つの呼び出しファイル及び前記少なくとも1つの被呼び出しファイルを探索するステップと
    をさらに含む
    請求項1に記載の方法。
  18. 前記圧縮されたアプリケーションに署名するステップをさらに含み、
    前記圧縮アルゴリズムは、LZMAアルゴリズムである
    請求項1に記載の方法。
  19. 前記圧縮アルゴリズムは、デフォルトの圧縮アルゴリズムよりも高い圧縮のレートを有する
    請求項1に記載の方法。
  20. アプリケーションを伸張するための方法であって、
    第1の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、前記予め設定された圧縮アルゴリズムに対応する第2の伸張アルゴリズムを使用する伸張機能ファイルとを取得するステップであって、前記呼び出しファイルは、前記伸張機能ファイルを呼び出すように修正される、ステップと、
    前記呼び出しファイルによる前記被呼び出しファイルの呼び出し中に、前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップであって、前記第1の伸張アルゴリズムは、前記予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第1の圧縮アルゴリズムに対応する、ステップと
    を含む、方法。
  21. 前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、メインフレームワークの呼び出しファイルを呼び出し、前記圧縮されたアプリケーション中の前記伸張機能ファイルを初期化するステップをさらに含む
    請求項20に記載の方法。
  22. 前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、前記呼び出しファイルによって呼び出されるべき被呼び出しファイルが、前記圧縮された被呼び出しファイル中に存在するかどうかを判定するステップをさらに含む
    請求項20に記載の方法。
  23. 前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルが存在しない場合、前記被呼び出しファイルを現在のオペレーティングシステムにおいて探索するか、又は前記被呼び出しファイルをネットワークからダウンロードするステップをさらに含む
    請求項22に記載の方法。
  24. 前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、前記方法は、
    前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルが、別の被呼び出しファイルに依存すると判定するステップと、
    前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記別の被呼び出しファイルを伸張するステップと、
    前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルを伸張するステップと
    を含む
    請求項20に記載の方法。
  25. 前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップの前に、前記方法は、
    前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルが、別の被呼び出しファイルに依存すると判定するステップと、
    前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記別の被呼び出しファイルを伸張するステップと、
    前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイル中の前記呼び出しファイルによって呼び出されるべき前記被呼び出しファイルを伸張するステップと
    を含む
    請求項22に記載の方法。
  26. プロセッサによって実行され、アプリケーションを圧縮するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体であって、前記方法は、
    圧縮アルゴリズムを使用して、ソースアプリケーション中の少なくとも1つの被呼び出しファイルを圧縮し、圧縮された被呼び出しファイルを形成するステップと、
    修正された呼び出しファイルを形成するために少なくとも1つの呼び出しファイルを修正するステップであって、前記修正された呼び出しファイルは、前記圧縮アルゴリズムに対応する伸張機能ファイルを呼び出し、前記伸張機能ファイルは、前記圧縮された呼び出しファイルを伸張し且つ伸張された被呼び出しファイルをロードする、ステップと、
    前記修正された呼び出しファイル、前記圧縮された被呼び出しファイル、及び前記伸張機能ファイルをカプセル化し、圧縮されたアプリケーションを取得するステップと
    を含む、非一時的コンピュータ可読媒体。
  27. プロセッサによって実行され、アプリケーションを伸張するための方法を実施するためのコンピュータ可読命令が記憶されている非一時的コンピュータ可読媒体であって、前記方法は、
    第1の伸張アルゴリズムを使用して、圧縮されたアプリケーションをカプセル化解除し、呼び出しファイルと、予め設定された圧縮アルゴリズムを使用して圧縮された被呼び出しファイルと、前記予め設定された圧縮アルゴリズムに対応する第2の伸張アルゴリズムを使用する伸張機能ファイルとを取得するステップであって、前記呼び出しファイルは、前記伸張機能ファイルを呼び出すように修正される、ステップと、
    前記呼び出しファイルによる前記被呼び出しファイルの呼び出し中に、前記伸張機能ファイルを呼び出し、前記圧縮された被呼び出しファイルを伸張及びロードするステップであって、前記第1の伸張アルゴリズムは、前記予め設定された圧縮アルゴリズムの圧縮のレート未満である圧縮のレートを有する第1の圧縮アルゴリズムに対応する、ステップと
    を備える非一時的コンピュータ可読媒体。
JP2019536025A 2016-12-31 2017-12-27 アプリケーションを圧縮するための方法及び装置 Pending JP2020504882A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201611266088.7 2016-12-31
CN201611266088.7A CN108279941B (zh) 2016-12-31 2016-12-31 一种应用程序的压缩方法和装置
PCT/US2017/068516 WO2018125909A1 (en) 2016-12-31 2017-12-27 Method and apparatus for compressing an application

Publications (1)

Publication Number Publication Date
JP2020504882A true JP2020504882A (ja) 2020-02-13

Family

ID=62709844

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019536025A Pending JP2020504882A (ja) 2016-12-31 2017-12-27 アプリケーションを圧縮するための方法及び装置

Country Status (6)

Country Link
US (1) US10579592B2 (ja)
EP (1) EP3563247B1 (ja)
JP (1) JP2020504882A (ja)
CN (1) CN108279941B (ja)
TW (1) TWI754658B (ja)
WO (1) WO2018125909A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110210256B (zh) * 2018-08-07 2023-06-06 腾讯科技(深圳)有限公司 一种应用加固、加固应用启动方法、装置及服务器
CN110007925A (zh) * 2019-04-01 2019-07-12 睿驰达新能源汽车科技(北京)有限公司 一种提升应用程序运行性能的方法及装置
US10817460B2 (en) * 2019-08-28 2020-10-27 Advanced New Technologies Co., Ltd. RDMA data sending and receiving methods, electronic device, and readable storage medium
CN113296781A (zh) * 2021-02-01 2021-08-24 阿里巴巴集团控股有限公司 应用程序安装包文件编译构建方法、装置及电子设备
CN113836101B (zh) * 2021-09-27 2024-08-23 维沃移动通信有限公司 压缩方法、装置及电子设备
TWI783729B (zh) * 2021-10-14 2022-11-11 財團法人資訊工業策進會 分散式資料傳輸容錯系統及其動態資源調整方法
CN117311853B (zh) * 2023-11-28 2024-03-12 深圳市移卡科技有限公司 Apk文件的处理方法、装置、计算机设备及存储介质

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909638A (en) * 1996-08-06 1999-06-01 Maximum Video Systems, Inc. High speed video distribution and manufacturing system
US20060010151A1 (en) * 2004-05-25 2006-01-12 Chih-Ta Star Sung Lossless compression method and apparatus for data storage and transmission
CN101135978B (zh) * 2007-03-02 2011-01-19 中兴通讯股份有限公司 压缩版应用程序生成、执行方法与装置及应用方法与系统
WO2008142800A1 (ja) * 2007-05-24 2008-11-27 Fujitsu Limited 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
CN102232304B (zh) 2011-05-04 2014-01-08 华为终端有限公司 一种移动通信终端间进行系统升级的方法、系统及终端
CN102231117B (zh) * 2011-07-08 2013-08-14 盛乐信息技术(上海)有限公司 一种在嵌入式平台安装软件的方法和系统
US8930940B2 (en) * 2011-08-19 2015-01-06 Yongyong Xu Online software execution platform
GB201115501D0 (en) 2011-09-08 2011-10-26 Ideaworks 3D Ltd A method and system for producing executable applications
US20140032733A1 (en) * 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US9286471B2 (en) 2011-10-11 2016-03-15 Citrix Systems, Inc. Rules based detection and correction of problems on mobile devices of enterprise users
US8799994B2 (en) 2011-10-11 2014-08-05 Citrix Systems, Inc. Policy-based application management
KR101881303B1 (ko) 2011-11-08 2018-08-28 삼성전자주식회사 애플리케이션 데이터 보호를 위한 휴대용 단말기의 장치 및 방법
CN102520987B (zh) * 2011-11-30 2014-11-05 Tcl集团股份有限公司 应用程序在线体验与安装方法、装置、服务器及管理系统
US9032391B2 (en) 2012-06-27 2015-05-12 Clearside, Inc. System and method for dynamically creating executable files
CN102799826B (zh) 2012-07-19 2015-07-29 腾讯科技(深圳)有限公司 应用程序安装包解压过程的检测方法与装置、客户端设备
US9448782B1 (en) * 2012-08-27 2016-09-20 Amazon Technologies, Inc. Reducing a size of an application package
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US9595205B2 (en) 2012-12-18 2017-03-14 Neuron Fuel, Inc. Systems and methods for goal-based programming instruction
US20140258247A1 (en) 2013-03-05 2014-09-11 Htc Corporation Electronic apparatus for data access and data access method therefor
CN104049986B (zh) 2013-03-14 2018-12-18 腾讯科技(深圳)有限公司 插件加载方法及装置
US20150011311A1 (en) 2013-07-03 2015-01-08 Iswifter, Inc. System and method for experiencing advertised interactive applications
GB2519516B (en) 2013-10-21 2017-05-10 Openwave Mobility Inc A method, apparatus and computer program for modifying messages in a communications network
CN104573416B (zh) * 2013-10-25 2018-07-17 腾讯科技(深圳)有限公司 一种生成应用安装包、执行应用的方法及装置
CN105404521B (zh) 2014-05-30 2017-05-31 广州市动景计算机科技有限公司 一种增量升级方法及相关装置
CN105740298A (zh) * 2014-12-12 2016-07-06 北京奇虎科技有限公司 文件处理方法、装置及服务端设备
CN104657131B (zh) * 2015-01-15 2019-03-15 北京奥普维尔科技有限公司 一种软件安装包的生成系统和方法
US20160321116A1 (en) 2015-04-29 2016-11-03 Microsoft Technology Licensing, Llc Translating operating system processes
US9740856B2 (en) * 2015-05-13 2017-08-22 SEWORKS, Inc. Apparatus and method for managing gaming engine file in a mobile platform
US20160378452A1 (en) * 2015-06-29 2016-12-29 Mediatek Inc. Policy-Based Compression of Machine Code Generated by a Virtual Machine
CN105138333B (zh) * 2015-08-27 2018-11-06 暴风集团股份有限公司 基于安卓系统的apk文件压缩的方法及系统
CN106506007A (zh) 2015-09-08 2017-03-15 联发科技(新加坡)私人有限公司 一种无损数据压缩和解压缩装置及其方法
US9952848B2 (en) 2015-12-21 2018-04-24 Samsung Electronics Co., Ltd. Dependency-aware transformation of multi-function applications for on-demand execution
US9811327B2 (en) 2015-12-21 2017-11-07 Quixey, Inc. Dependency-aware transformation of multi-function applications for on-demand execution
CN105893094B (zh) * 2016-03-31 2019-05-03 百度在线网络技术(北京)有限公司 应用程序插件化的实现方法和装置

Also Published As

Publication number Publication date
EP3563247B1 (en) 2024-04-10
WO2018125909A1 (en) 2018-07-05
TW201826117A (zh) 2018-07-16
EP3563247A1 (en) 2019-11-06
US10579592B2 (en) 2020-03-03
CN108279941A (zh) 2018-07-13
US20180189313A1 (en) 2018-07-05
TWI754658B (zh) 2022-02-11
EP3563247A4 (en) 2020-09-02
CN108279941B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
JP2020504882A (ja) アプリケーションを圧縮するための方法及び装置
US8495622B2 (en) Micro installation process for software packaging and distribution
JP5781497B2 (ja) 拡張可能なメディア形式を持つホスト型アプリケーションプラットフォーム
US11263027B2 (en) Plugin loading method and apparatus, terminal, and storage medium
WO2020177429A1 (zh) 在应用中嵌入代码的方法、装置及电子设备
CN112083968A (zh) 一种宿主中插件加载方法及装置
KR101117165B1 (ko) 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛
KR102141749B1 (ko) App 프로그램 실행 방법 및 장치
CN109710287B (zh) 一种热更新方法、装置及计算机存储介质
CN113741954A (zh) 系统软件生成方法、装置、电子设备及存储介质
CN111813460B (zh) 一种应用程序配套文件的存取方法、装置、设备及存储介质
CN110502251B (zh) 应用安装方法及装置
CN111949298A (zh) 升级包的生成方法、装置、服务器及计算机存储介质
US8959088B2 (en) Log management method, log management system, and information processing apparatus
KR101427562B1 (ko) 안드로이드 어플리케이션의 타이젠 설치가능 패키지 자동변환 방법 및 이를 위한 컴퓨터로 판독가능한 기록매체
CN114090070A (zh) 应用程序安装包文件处理方法及电子设备
CN113296781A (zh) 应用程序安装包文件编译构建方法、装置及电子设备
CN118466971B (zh) 打包优化方法、界面生成方法、设备及存储介质
CN113553071B (zh) 软件安装方法、计算机设备和存储介质
CN116501335B (zh) 一种一站式建站系统的部署方法、装置及介质
US20240281306A1 (en) Common file attribute processing for enhanced loading time of application programming interface (api) files
WO2023103890A1 (zh) 扩容方法、装置及电子设备
CN107844309B (zh) 一种系统数据处理方法及装置
CN113535566A (zh) 一种安卓应用校验方法、装置、设备及存储介质
CN116912394A (zh) 插件生成方法、动画渲染方法及装置