JP6936016B2 - パッケージファイルに対する機能拡張方法およびシステム - Google Patents

パッケージファイルに対する機能拡張方法およびシステム Download PDF

Info

Publication number
JP6936016B2
JP6936016B2 JP2017016779A JP2017016779A JP6936016B2 JP 6936016 B2 JP6936016 B2 JP 6936016B2 JP 2017016779 A JP2017016779 A JP 2017016779A JP 2017016779 A JP2017016779 A JP 2017016779A JP 6936016 B2 JP6936016 B2 JP 6936016B2
Authority
JP
Japan
Prior art keywords
file
class
application
item
package
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.)
Active
Application number
JP2017016779A
Other languages
English (en)
Other versions
JP2017146966A (ja
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.)
Line Corp
Original Assignee
Line Corp
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 Line Corp filed Critical Line Corp
Publication of JP2017146966A publication Critical patent/JP2017146966A/ja
Priority to JP2021137708A priority Critical patent/JP7231681B2/ja
Application granted granted Critical
Publication of JP6936016B2 publication Critical patent/JP6936016B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Library & Information Science (AREA)
  • Devices For Executing Special Programs (AREA)

Description

以下の発明は、パッケージファイルに対する機能拡張方法およびシステムに関する。
アンドロイド応用プログラムパッケージ(Android application package:APK)とは、アンドロイドオペレーティングシステムで活用されるソフトウェアとミドルウェアの配布に使用されるパッケージファイルであって、「.apk」拡張子を有する。APKファイルを生成するには、アンドロイド用プログラムをコンパイルした後、すべてのファイルを1つのパッケージファイルに集めなければならない。APKファイルは、該当するプログラムのすべてのコードを含んでおり、ソース、情報、認証書、およびマニフェストファイル(Manifest file)などを含む。
このようなAPKファイルのようなアプリケーションのパッケージファイルは、パッケージファイルが最終ビルドされた後にはコードを修正および/または追加することができないという問題がある。新たな機能のためのコードを追加しようとする場合には、本来のコードに新たな機能のためのコードを追加するか、新たな機能のためのコードが含まれたライブラリを追加した後、新たな機能のためのコードが追加されたプログラムに対して再びコンパイル過程を経てパッケージファイルを新たに生成しなければならない。
また、新たな機能のためのコードが別のライブラリとして追加される場合には、追加されたライブラリをロードおよび/または呼び出すためのコードが、本来のコードにさらに含まれなければならない。したがって、本来のコードが先に実行されてから新たな機能のためのライブラリをロードおよび/または呼び出さなければならないため、新たな機能が本来のコードよりも先行して実行されなくなるという問題がある。
これと同じように、別の追加クラスを使用するためには、追加クラスが含まれたファイルでクラスをロードし、読み取って使用するための形態の追加コードが本来のコードに追加されなければならないという問題がある。
既に完成されていてコードを修正することができないパッケージファイルに、本来のコードよりも先行して実行されることができる追加コードを挿入して機能を確張することができる、機能拡張方法およびシステムを提供する。
パッケージファイルにクラスを追加するにあたり、別のロード過程、クラスインタフェースに対する定義過程、および/またはクラス呼び出しのための追加の手順なく、新規クラスを直ぐに実行することができる、機能拡張方法およびシステムを提供する。
コンピュータによって実行される機能追加方法であって、アプリケーションのためのパッケージファイルを格納する段階、前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出する段階、および前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定する段階を含むことを特徴とする、機能追加方法を提供する。
コンピュータによって実行される機能追加方法であって、アプリケーションのためのパッケージファイルを格納する段階、前記パッケージファイルを逆アセンブル(disassemble)して既存のクラスに関する情報を含むファイルを生成する段階、前記生成されたファイル内部でスーパークラス(super class)を設定する項目を通じ、前記項目を実現したクラスと相続関係を有する既存のクラスを確認する段階、前記確認された既存のクラスのバイトコードに新たなコードを追加する段階、および前記新たなコードが追加されたバイトコードを利用して前記パッケージファイルを再生成する段階を含むことを特徴とする、機能追加方法を提供する。
コンピュータによって実行される機能追加方法であって、アプリケーションのためのパッケージファイルを格納する段階、新規クラスが定義されたファイルを読み取る段階、パスエレメントまたはデックス(dex)エレメントを生成するためのメソッドを呼び出し、前記呼び出されたメソッドに前記定義されたファイルを因子として代入し、前記定義されたファイルに対するオブジェクトを生成する段階、および前記生成されたオブジェクトを前記パッケージファイルのクラス経路(class pass)を参照するためのデックスエレメント配列に追加する段階を含むことを特徴とする、機能追加方法を提供する。
既に完成されていてコードを修正することができないパッケージファイルに、本来のコードよりも先行して実行されることができる追加コードを挿入することによって機能を確張することができる。
パッケージファイルにクラスを追加するにあたり、別のロード過程、クラスインタフェースに対する定義過程、および/またはクラス呼び出しのための追加の手順なく、新規クラスを直ぐに実行することができる。
本発明の一実施形態における、ネットワーク環境の例を示した図である。 本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。 本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の例を示したブロック図である。 本発明の一実施形態における、サーバが実行することのできる方法の例を示したフローチャートである。 本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の他の例を示したブロック図である。 本発明の一実施形態における、サーバが実行することのできる方法の他の例を示したフローチャートである。 本発明の一実施形態における、パッケージファイルに新たな機能のためのコードを追加する過程の例を示した図である。 本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示したブロック図である。 本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。 本発明の一実施形態における、アプリケーションの実行時点にクラスを確張することができる過程の例を示した図である。
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明を説明するための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定型端末や移動型端末であってもよい。複数の電子機器110、120、130、140の例としては、スマートフォン(smart phone)、携帯電話、ナビゲーション、コンピュータ、ノート型パンコン、デジタル放送用端末、PDA(Personal Digital Assistants)、PMP(Portable Multimedia Player)、タブレットPCなどがある。一例として、電子機器1(110)は、無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信してもよい。
通信方式が制限されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでもよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的(hierarchical)ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これに制限されることはない。
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現されてもよい。
一例として、サーバ150は、電子機器2(120)からネットワーク170を介してアップロードされるアプリケーションのパッケージファイルを登録し、登録されたパッケージファイルに保護機能や暗号化機能などのような追加機能のためのコードを追加してパッケージファイルに対する機能(一例として、アプリケーションの追加機能)を確張してもよい。ここで、サーバ150は、直接または別のサーバ160を通じて電子機器1(110)に機能が拡張されたパッケージファイルを提供してもよい。電子機器1(110)は、アプリケーションのパッケージファイルを通じてアプリケーションを電子機器1(110)にインストールおよび駆動してもよく、アプリケーションを通じて予め設定されたサービス(一例として、ゲームサービス、チャットサービス、SNS(Social Network Service)サービスなど)の提供を受けてもよい。
上述した例は、サーバ150で本発明の実施形態に係る機能拡張システムが実現されてパッケージファイルに対する機能を確張する実施形態を説明している。一方、他の実施形態において、機能拡張システムは、電子機器1(110)に実現されることも可能である。この場合、電子機器1(110)は、本来のパッケージファイルを受信した後、受信したパッケージファイルに追加機能のためのコードを追加することでパッケージファイルに対する機能を確張することも可能である。
図2は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図2では、1つの電子機器に対する例として電子機器1(110)、そして1つのサーバに対する例としてサーバ150の内部構成について説明する。他の電子機器120、130、140やサーバ160も、同一または類似の内部構成を備えてもよい。
電子機器1(110)とサーバ150は、メモリ211、221、プロセッサ212、222、通信モジュール213、223、および入力/出力インタフェース214、224を含んでもよい。メモリ211、221は、コンピュータで読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永久大容量記憶装置(permanent mass storage device)を含んでよい。また、メモリ211、221には、オペレーティングシステムと、少なくとも1つのプログラムコード(一例として、電気機器1(110)にインストールされ駆動するブラウザや映像通話のためのアプリケーションなどのためのコード)が格納されてよい。このようなソフトウェア構成要素は、ドライブメカニズム(drive mechanism)を利用してメモリ211、221とは別のコンピュータで読み取り可能な記録媒体からロードされてもよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD−ROMドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール213、223を利用してメモリ211、221にロードされてもよい。例えば、少なくとも1つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム(一例として、上述したサーバ160)がネットワーク170を介して提供するファイルによってインストールされるプログラム(一例として、上述したアプリケーション)に基づいてメモリ211、221にロードされてもよい。
プロセッサ212、222は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ211、221または通信モジュール213、223によって、プロセッサ212、222に提供されてよい。例えば、プロセッサ212、222は、メモリ211、221のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてもよい。
通信モジュール213、223は、ネットワーク170を介して電子機器1(110)とサーバ150とが互いに通信するための機能を提供してもよいし、他の電子機器(一例として、電子機器2(120))または他のサーバ(一例として、サーバ160)と通信するための機能を提供してもよい。一例として、電子機器1(110)のプロセッサ212がメモリ211のような記録装置に格納されたプログラムコードにしたがって生成した要請(一例として、映像通話サービスのための要請)が、通信モジュール213の制御にしたがってネットワーク170を介してサーバ150に伝達されてもよい。これとは逆に、サーバ150のプロセッサ222の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール223とネットワーク170を経て電子機器1(110)の通信モジュール213を通じて電子機器1(110)に受信されてもよい。例えば、通信モジュール213を通じて受信されたサーバ150の制御信号や命令などは、プロセッサ212やメモリ211に伝達されてもよく、コンテンツやファイルなどは、電子機器1(110)がさらに含むことのできる格納媒体に格納されてもよい。
入力/出力インタフェース214、224は、入力/出力装置215とのインタフェースのための手段であってもよい。例えば、入力装置は、キーボードまたはマウスなどの装置を、また出力装置は、アプリケーションの通信セッションを表示するためのディスプレイのような装置を含んでもよい。他の例として、入力/出力インタフェース214は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。より具体的な例として、電子機器1(110)のプロセッサ212は、メモリ211にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ150や電子機器2(120)が提供するデータを利用して構成されるサービス画面やコンテンツが入力/出力インタフェース214を通じてディスプレイに表示されてもよい。
また、他の実施形態において、電子機器1(110)およびサーバ150は、図2の構成要素よりもさらに多くの構成要素を含んでもよい。しかし、大部分の従来技術構成要素を明確に図に示す必要はない。例えば、電子機器1(110)は、上述した入力/出力装置215のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ(transceiver)、GPS(Global Positioning System)モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。より具体的な例として、電子機器1(110)がスマートフォンである場合、一般的にスマートフォンが含んでいる加速度センサやジャイロセンサ、カメラ、各種物理的なボタン、タッチパネルを利用したボタン、入力/出力ポート、振動のための振動器などの多様な構成要素が電子機器1(110)にさらに含まれるように実現されてもよいことが分かる。
上述したように、本発明の実施形態に係る機能追加方法は、サーバ150や電子機器1(110)のようにパッケージファイルを格納している装置で実行されてもよい。以下では、サーバ150の観点から、パッケージファイルに対する機能追加方法を実行する実施形態について説明するが、電子機器1(110)もサーバ150と同じ構成要素によって機能追加方法を実行することができる。
図3は、本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の例を示したブロック図であり、図4は、本発明の一実施形態における、サーバが実行することのできる方法の例を示したフローチャートである。
サーバ150は、機能拡張システムを実現してもよく、図3に示すように、サーバ150に含まれたプロセッサ222は、構成要素として、ロード制御部310、ファイル格納制御部320、ファイル抽出制御部330、およびクラス名設定部340を含んでもよい。このようなプロセッサ222およびプロセッサ222の構成要素は、図4の機能拡張方法が含む段階410〜440を実行するようにサーバ150を制御してもよい。このとき、プロセッサ222およびプロセッサ222の構成要素は、メモリ221が含むオペレーティングシステムのコードと少なくとも1つのプログラムのコードによる命令(instruction)を実行するように実現されてもよい。ここで、プロセッサ222の構成要素は、サーバ150に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ222によって実行される互いに異なる機能(different functions)の表現であってもよい。例えば、プロセッサ222が上述した制御命令にしたがって機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ221にロードするように動作する機能的表現として、ロード制御部310が使用されてもよい。
段階410で、ロード制御部310は、機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ221にロードしてもよい。例えば、サーバ150でプログラムが実行されると、ロード制御部310は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ221にロードするようにサーバ150を制御してもよい。
ここで、プロセッサ222が含むファイル格納制御部320、ファイル抽出制御部330、およびクラス名設定部340それぞれは、メモリ221にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階420〜440を実行するためのプロセッサ222の機能的表現であってもよい。
段階420で、ファイル格納制御部320は、アプリケーションのためのパッケージファイルを格納してもよい。パッケージファイルは、一例として、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ(Android application package:APK)ファイルのように、アプリケーションのためのプログラムコードがコンパイルされてファイルがパッケージングされた圧縮ファイルの形態を有してもよい。例えば、サーバ150は、コンピュータによって実現されてもよく、ファイル格納制御部320は、コンピュータが含む格納装置にパッケージファイルが格納および管理されるようにサーバ150を制御してもよい。
段階430で、ファイル抽出制御部330は、パッケージファイルでアプリケーションの構成情報としてアプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出してもよい。一例として、アンドロイド応用プログラムパッケージファイルには、アンドロイドマニフェストファイル(AndroidManifest.xml)のようなバイナリ拡張性マークアップ言語ファイルが含まれていることがある。アンドロイドマニフェストファイルは、アプリケーションの構成情報と設定情報を含んでいるアンドロイドアプリケーション構成の基本となるファイルによって画面を構成するアクティビティ(Activity)を登録し、機器資源を使用することができるように使用権限を設定するための機能を有する。さらに、アンドロイドマニフェストファイルは、上述したようにバイナリ拡張性マークアップ言語で実現され、特定のプログラムを使用することによって一般的なXMLファイルのように内容を見ることができる。
このようなアンドロイドマニフェストファイルには、アプリケーションの構成情報としてアプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されてもよく、アプリケーション(Application)項目、アクティビティ(Activity)項目、サービス(Service)項目、レシーバ(Receiver)項目、およびプロバイダ(Provider)項目などを含んでもよい。
段階440で、クラス名設定部340は、抽出されたファイルで最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定してもよい。一例として、クラス名設定部340は、上述したアンドロイドマニフェストファイルの項目で最初に呼び出されるように定義されているクラスを見つけ出してもよい。アプリケーション項目に最初に呼び出されるように定義されているクラスが定義されていれば、クラス名設定部340は、アプリケーション項目に定義されたクラスのクラス名を新規クラスのクラス名に変更してもよい。
また、アプリケーション項目ではない他の項目(上述したアクティビティ項目、サービス項目、レシーバ項目、またはプロバイダ項目)に最初に呼び出されるように定義されているクラスが存在することもある。この場合にも、クラス名設定部340は、該当のクラスのクラス名を新規クラスのクラス名に変更してもよい。
または、既存のクラスに対する別の確認過程なく、最も優先順位が高い項目であるアプリケーション項目に新規クラスのクラス名を指定し、新規クラスが最初に呼び出されるように設定することも可能である。
このとき、アプリケーションを駆動するシステム(一例として、電子機器1(110))は、アプリケーション項目に最初に呼び出されるように定義されているクラスのクラス名を利用して新規クラスを呼び出すようになり、したがって新たな機能のためのコードが含まれた新規クラスが最初に(一例として、パッケージファイルの本来のコードよりも先行して)実行されるようになる。
上述したように、図3および図4を参照しながら説明した実施形態では、アンドロイドマニフェストファイルのようにパッケージファイルで、構成情報としてアプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出して活用する実施形態について説明した。
一方、パッケージファイルに対する逆アセンブルによって新たな機能のためのコードを追加することも可能である。
図5は、本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の他の例を示したブロック図であり、図6は、本発明の一実施形態における、サーバが実行することのできる方法の他の例を示したフローチャートである。
サーバ150は、機能拡張システムを実現してもよく、図5に示すように、サーバ150に含まれたプロセッサ222は、構成要素として、ロード制御部510、ファイル格納制御部520、ファイル生成制御部530、クラス確認部540、新規コード追加部550、およびパッケージファイル再生成部560を含んでもよい。このようなプロセッサ222およびプロセッサ222の構成要素は、図6の機能拡張方法が含む段階610〜660を実行するようにサーバ150を制御してもよい。このとき、プロセッサ222およびプロセッサ222の構成要素は、メモリ221が含むオペレーティングシステムのコードと少なくとも1つのプログラムのコードによる命令(instruction)を実行するように実現されてもよい。ここで、プロセッサ222の構成要素は、サーバ150に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ222によって実行される互いに異なる機能(different functions)の表現であってもよい。例えば、プロセッサ222が上述した制御命令にしたがって機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ221にロードするように動作する機能的表現として、ロード制御部510が使用されてもよい。
段階610で、ロード制御部510は、機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ221にロードしてもよい。例えば、サーバ150でプログラムが実行されると、ロード制御部510は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ221にロードするようにサーバ150を制御してもよい。
このとき、プロセッサ222が含むファイル格納制御部520、ファイル生成制御部530、クラス確認部540、新規コード追加部550、およびパッケージファイル再生成部560それぞれは、メモリ221にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階620〜660を実行するためのプロセッサ222の機能的表現であってもよい。
段階620で、ファイル格納制御部520は、アプリケーションのためのパッケージファイルを格納してもよい。パッケージファイルは、一例として、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージファイルのように、アプリケーションのためのプログラムコードがコンパイルされてファイルがパッケージングされた圧縮ファイルの形態を有してもよい。例えば、サーバ150は、コンピュータによって実現されてもよく、ファイル格納制御部520は、コンピュータが含む格納装置にパッケージファイルが格納および管理されるようにサーバ150を制御してもよい。
段階630で、ファイル生成制御部530は、パッケージファイルを逆アセンブル(disassemble)して既存のクラスに関する情報を含むファイルを生成してもよい。例えば、アンドロイド応用プログラムパッケージファイルに対するダルビック(Dalvik)バイトコードを逆アセンブルした簡易コード(smali code)を含むファイルが生成されてもよい。このようなファイルは拡張子として「.smali」を有してもよい。アンドロイドで使用されるフレームワークやアプリなどのダルビック(Dalvik)クラスファイルはすべてジャバファイルであって、Smaliツールを通じて逆コンパイルされるか、再びコンパイルされてもよい。このとき、アンドロイド応用プログラムパッケージファイルを逆アセンブルして得られるファイル(拡張子として「.smali」を有するファイル)は、「.super」項目のようにスーパークラス(super class)を設定する項目を含んでもよい。
段階640で、クラス確認部540は、生成されたファイル内部でスーパークラス(super class)を設定する項目を通じ、項目を実現したクラスと相続関係を有する既存のクラスを確認してもよい。スーパークラスを設定する項目(一例として、アンドロイドオペレーティングシステムにおける上述した「.super」項目)を実現するクラスと相続関係を有するクラスは、パッケージファイルを通じてアプリケーションが駆動されるときに最初に実行されるクラスであってもよい。
段階650で、新規コード追加部550は、確認された既存のクラスのバイトコードに新たなコードを追加してもよい。確認された既存のクラスは、最初に実行されるクラスであって、新規コード追加部550は、既存のクラスのバイトコードに新たな機能のためのコードや別のライブラリまたはクラスを呼び出すためのコードを追加することにより、パッケージファイルの本来のコードよりも先に実行されることができるコードをパッケージファイルに追加することができるようになる。このとき、新規コード追加部550は、既存のクラスのバイトコードの静的スコープ(static scoping)または生成者メソッドに新たなコードを追加し、アプリケーションの駆動時に新たなコードがパッケージファイルの本来のコードよりも先に実行されるようにしてもよい。他の例として、新規コード追加部550は、バイトコードに新たなコードが含まれたクラスをメンバーとして追加するか、バイトコードで最初に実行されるメソッドに新たなコードを追加するか、またはアプリケーションに対するシステムライフサイクルによって最初に呼び出し可能となるように新たなコードが含まれたメソッドをバイトコードに追加してもよい。一例として、システムライフサイクルは、アンドロイドライフサイクルを含んでもよい。
段階660で、パッケージファイル再生成部560は、新たなコードが追加されたバイトコードを利用してパッケージファイルを再生成してもよい。再生成されたパッケージファイルは、アプリケーションが駆動されるシステム(一例として、電子機器1(110))に送信されてもよく、前記システムでアプリケーションがインストールおよび駆動される場合、最初に呼び出されるクラスのバイトコードに追加された新たなコードが先に実行されてもよい。言い換えれば、アプリケーションの駆動時に既存のクラスが最初に実行されることにより、バイトコードに含まれた新たなコードがパッケージファイルの本来のコードよりも先に実行されることができる。
図7は、本発明の一実施形態における、パッケージファイルに新たな機能のためのコードを追加する過程の例を示した図である。図7は、サーバ150に実現された機能拡張システム710が、サーバ150の格納装置に格納されたAPKファイル720からアンドロイドマニフェストファイル「AndroidManifest.xml」730を抽出するか、またはAPKファイル720を逆アセンブルし、既存のクラスに関する情報を含むファイルとして拡張子「.smali」を有するファイルを生成する過程を示している。
図3および図4を参照しながら上述したように、機能拡張システム710は、「AndroidManifest.xml」730の特定の項目(アプリケーション項目、アクティビティ項目、サービス項目、レシーバ項目、またはプロバイダ項目)に新規クラスのクラス名を指定するか、または該当の項目に設定されているクラス(最初に呼び出されるように定義された)のクラス名を新規クラスのクラス名に変更してもよく、クラス名の変更にしたがって新規クラスが最初に呼び出される新たなAPKファイル750が生成されてもよい。
または、図5および図6を参照しながら説明したように、機能拡張システム710は、逆アセンブルによって生成された拡張子「.smali」を有するファイルで「.super」項目を確認し、「.super」項目を実現したクラスと相続関係がある既存のクラスのバイトコードに新たなコードを追加してもよい。新たなコードが追加されたバイトコードは、再びアンドロイドが認識することのできるAPK形態でパッケージングされて新たなAPKファイル750が生成されてもよい。
図3〜図7を参照しながら説明した実施形態とは異なり、以下の実施形態では、実行時点に新規クラスを別のロード過程やロードされたクラスインタフェースを定義する過程、または該当のクラスを呼び出すための追加の手順なく新規クラスを直ぐに使用して機能を確張する方法について説明する。本実施形態では、アプリケーションの実行時点に新規クラスを追加して機能を確張するためにアプリケーションがインストールおよび駆動される電子機器1(110)の観点からの機能拡張方法について説明する。
図8は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示したブロック図であり、図9は、本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。
電子機器1(110)は機能拡張システムを実現してもよく、図8に示すように、電子機器1(110)に含まれたプロセッサ212は、構成要素として、ロード制御部810、ファイル格納制御部820、ファイルリーディング制御部830、オブジェクト生成部840、およびオブジェクト追加部850を含んでもよい。このようなプロセッサ212およびプロセッサ212の構成要素は、図9の機能拡張方法が含む段階910〜950を実行するように電子機器1(110)を制御してもよい。このとき、プロセッサ212およびプロセッサ212の構成要素は、メモリ211が含むオペレーティングシステムのコードと少なくとも1つのプログラムのコードによる命令(instruction)を実行するように実現されてもよい。ここで、プロセッサ212の構成要素は、電子機器1(110)に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ212によって実行される互いに異なる機能(different functions)の表現であってもよい。例えば、プロセッサ212が上述した制御命令にしたがって機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ211にロードするように動作する機能的表現として、ロード制御部810が使用されてもよい。
段階910で、ロード制御部810は、機能拡張方法のためのプログラムのファイルに格納されたプログラムコードをメモリ211にロードしてもよい。例えば、電子機器1(110)でプログラムが実行されると、ロード制御部810は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ211にロードするように電子機器1(110)を制御してもよい。ここで、機能拡張方法のためのプログラムは、後述するアプリケーションとは異なるプログラムであってもよい。
このときロセッサ212が含むファイル格納制御部820、ファイルリーディング制御部830、オブジェクト生成部840、およびオブジェクト追加部850それぞれは、メモリ211にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階920〜950を実行するためのプロセッサ212の機能的表現であってもよい。
段階920で、ファイル格納制御部820は、アプリケーションのためのパッケージファイルを格納してもよい。パッケージファイルは、一例として、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージファイルのように、アプリケーションのためのプログラムコードがコンパイルされてファイルがパッケージングされた圧縮ファイルの形態を有してもよい。例えば、電子機器1(110)は、コンピュータによって実現されてもよく、ファイル格納制御部720は、コンピュータが含む格納装置にパッケージファイルが格納および管理されるように電子機器1(110)を制御してもよい。
段階930で、ファイルリーディング制御部830は、新規クラスが定義されたファイルを読み取ってもよい。このような新規クラスを別のロード過程や呼び出し過程なく仮想マシン(一例として、アンドロイドのダルビック(Dalvik)またはアート(ART)仮想マシン)上で既にロードされた状態のように直ぐに使用できるようにするために以後の段階940および段階950が実行されてもよい。
段階940で、オブジェクト生成部840は、パスエレメントまたはデックス(dex)エレメントを生成するためのメソッドを呼び出し、呼び出されたメソッドに定義されたファイルを因子として代入して定義されたファイルに対するオブジェクトを生成してもよい。例えば、オブジェクト生成部840は、アンドロイドオペレーティングシステムのコンテキスト(Context)から呼び出されるクラスローダ(class loader)内部のパスリスト(pathList)メンバーオブジェクトに実現されたメイクデックスエレメント(makeDexElements)メソッドまたはメイクパスエレメント(makePathElements)メソッドに定義されたファイルを因子として代入して定義されたファイルに対するオブジェクトを生成してもよい。他の例として、オブジェクト生成部840は、アンドロイドオペレーティングシステムが提供するパスリストクラスに実現されたメイクデックスエレメント(makeDexElements)メソッドまたはメイクパスエレメント(makePathElements)メソッドに定義されたファイルを因子として代入して定義されたファイルに対するオブジェクトを生成することも可能である。
段階950で、オブジェクト追加部850は、生成されたオブジェクトをパッケージファイルのクラス経路(class pass)を参照するためのデックスエレメント配列に追加してもよい。例えば、オブジェクト追加部850は、デックスエレメント配列に含まれた本来の値と前記メソッド(makeDexElementsまたはmakePathElements)の呼び出しに対する結果値を共に含む新規配列を生成し、デックスエレメント配列に代替してもよい。言い換えれば、オブジェクト追加部850は、新規配列を宣言してデックスエレメント配列に含まれた本来の値と前記メソッド(makeDexElementsまたはmakePathElements)の呼び出しに対する結果値を共に複写して格納し、新規配列をデックスエレメント配列に代入して生成されたオブジェクトをデックスエレメント配列に追加してもよい。
したがって、電子機器1(110)は、アプリケーションの駆動時、新規クラスのロードおよび呼び出しなく、デックスエレメント配列に含まれたオブジェクトを利用して新規クラスを実行することができる。
図10は、本発明の一実施形態における、アプリケーションの実行時点にクラスを確張することができる過程の例を示した図である。図10は、電子機器1(110)に実現された機能拡張システム1010が、電子機器1(110)の格納装置に格納されたパッケージファイルを通じてアプリケーションを駆動する実行時点にクラスを確張することができる機能拡張方法の例を示している。
機能拡張システム1010は、アンドロイドオペレーティングシステムのコンテキスト(Context)からクラスローダ(Class Loader)1020を呼び出してもよく、新規クラスが実行される以前に、該当の新規クラスが定義されたデックスファイル1030を読み取ってもよい。
また、機能拡張システム1010は、クラスローダ1020内部のパスリスト(pathList)1040メンバーオブジェクトを取り込んでもよく、機能拡張システム1010は、パスリスト1040メンバーオブジェクトに実現されたデックスエレメント(dexElements)の配列1050を取り込んでもよい。
このとき、機能拡張システム1010は、パスリスト1040メンバーオブジェクトに実現された「makePathElements」メソッドまたは「makeDexElements」メソッドにデックスファイル1030を代入し、その呼び出し結果を取得してもよい。「makePathElements」メソッドまたは「makeDexElements」メソッドの呼び出し過程は、クラスローダ1020の呼び出しやローダ1020内部のパスリスト(pathList)1040メンバーオブジェクトを取り込む過程なく、アンドロイドシステムが提供するクラス(「makePathElements」メソッドまたは「makeDexElements」メソッドのためのクラス)を直接使用する方式でも同じ結果を得ることができる。
メソッド呼び出しによる結果によってオブジェクトが生成されると、機能拡張システム1010は、メソッドを呼び出して生成されたオブジェクトを、見つけ出しておいたデックスエレメントの配列1050に追加してもよい。デックスエレメントの配列1050にオブジェクトを追加するための方法は、配列1050にある本来の値とメソッド呼び出しによって得られる結果値を共に含むことが可能な新規配列を生成し、生成された新規配列に前記本来の値と前記結果値を共に複写して入れた後、新規配列を配列1050に代入する過程によって処理されてもよい。
この後、デックスエレメントの配列1050に新規クラスが定義されたファイルのオブジェクトが追加されたため、新規クラスは、別のロード過程やロードされたクラスに対するインタフェースの定義および/または新規クラスの呼び出しのための追加の過程(新規クラスの呼び出しのためのコードを追加する過程)なく、既にロードされた状態のように直ぐに使用されることができる。
このように、本発明の実施形態によると、既に完成されていてコードを修正することができないパッケージファイルに、本来のコードよりも先行して実行されることのできる追加コードを挿入して機能を確張することができる。また、パッケージファイルにクラスを追加するにあたり、別のロード過程、クラスインタフェースに対する定義過程、および/またはクラス呼び出しのための追加の手順なく新規クラスを直ぐに実行することができる。
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてもよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてもよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素(processing element)および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでもよい。また、並列プロセッサ(parallel processor)のような、他の処理構成(processing configuration)も可能である。
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に(collectively)処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供するために、いかなる種類の機械、コンポーネント、物理装置、仮想装置(virtual equipment)、コンピュータ格納媒体または装置、または送信される信号波(signal wave)に永久的または一時的に具現化(embody)されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された方法によって格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてもよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでもよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピディスク、および磁気テープのような磁気媒体、CD−ROM、DVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために1つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同じである。
以上のように、実施形態を限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能である。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、および/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
110、120、130、140:電子機器
150、160:サーバ
170:ネットワーク

Claims (8)

  1. コンピュータによって実行される機能追加方法であって、
    アプリケーションのためのパッケージファイルを格納する段階、
    前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出する段階、および
    前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定する段階
    を含むことを特徴とする、機能追加方法。
  2. 前記抽出されたファイルは、拡張性マークアップ言語(Extensible Markup Language:XML)ファイルであって、前記アプリケーションの構成情報および設定情報を含むことを特徴とする、請求項1に記載の機能追加方法。
  3. 前記パッケージファイルは、アンドロイドオペレーティングシステムのためのアンドロイド応用プログラムパッケージ(Android application package:APK)ファイルを含み、
    前記抽出されたファイルは、前記アンドロイド応用プログラムパッケージファイルが含むアンドロイドマニフェストファイル(Android Manifest.xml)を含み、
    前記項目は、前記アンドロイドマニフェストファイルが含むアプリケーション項目、アクティビティ項目、サービス項目、レシーバ項目、またはプロバイダ項目を含むことを特徴とする、請求項1に記載の機能追加方法。
  4. 前記項目に新規クラスのクラス名を設定する段階は、
    前記項目に前記最初に呼び出されるクラスに関する情報が設定される項目に既存のクラスが設定されている場合、前記既存のクラスのクラス名を前記新規クラスのクラス名に変更することを特徴とする、請求項1に記載の機能追加方法。
  5. 前記アプリケーションの駆動時、前記項目に設定された新規クラスのクラス名を利用して前記新規クラスが含む新たなコードが前記パッケージファイルの本来のコードよりも先に実行されることを特徴とする、請求項1に記載の機能追加方法。
  6. コンピュータに、
    アプリケーションのためのパッケージファイルを格納する段階、
    前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出する段階、および
    前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定する段階
    を実行させるためのプログラム。
  7. アプリケーションのためのパッケージファイルを格納するファイル格納制御部、
    前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出するファイル抽出制御部、および
    前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定するクラス名設定部
    を含むことを特徴とする電子機器。
  8. アプリケーションのためのパッケージファイルを格納するファイル格納制御部、
    前記パッケージファイルで前記アプリケーションの構成情報として前記アプリケーションの駆動時に最初に呼び出されるクラスに関する情報が設定されるファイルを抽出するファイル抽出制御部、および
    前記抽出されたファイルで前記最初に呼び出されるクラスに関する情報が設定される項目に新規クラスのクラス名を設定するクラス名設定部
    を含むことを特徴とする機能拡張システム。
JP2017016779A 2016-02-18 2017-02-01 パッケージファイルに対する機能拡張方法およびシステム Active JP6936016B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021137708A JP7231681B2 (ja) 2016-02-18 2021-08-26 パッケージファイルに対する機能拡張方法およびシステム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160019005A KR101854975B1 (ko) 2016-02-18 2016-02-18 패키지 파일에 대한 기능 확장 방법 및 시스템
KR10-2016-0019005 2016-02-18

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021137708A Division JP7231681B2 (ja) 2016-02-18 2021-08-26 パッケージファイルに対する機能拡張方法およびシステム

Publications (2)

Publication Number Publication Date
JP2017146966A JP2017146966A (ja) 2017-08-24
JP6936016B2 true JP6936016B2 (ja) 2021-09-15

Family

ID=59630633

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017016779A Active JP6936016B2 (ja) 2016-02-18 2017-02-01 パッケージファイルに対する機能拡張方法およびシステム
JP2021137708A Active JP7231681B2 (ja) 2016-02-18 2021-08-26 パッケージファイルに対する機能拡張方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021137708A Active JP7231681B2 (ja) 2016-02-18 2021-08-26 パッケージファイルに対する機能拡張方法およびシステム

Country Status (3)

Country Link
US (1) US10078498B2 (ja)
JP (2) JP6936016B2 (ja)
KR (1) KR101854975B1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101857001B1 (ko) * 2017-03-03 2018-05-14 숭실대학교산학협력단 안드로이드 동적 로딩 파일 추출 방법, 이를 수행하기 위한 기록 매체 및 시스템
CN107704238B (zh) * 2017-11-28 2021-06-15 广州市千钧网络科技有限公司 一种对项目进行打包的方法及装置
CN108595200B (zh) * 2018-04-19 2020-05-15 北京微播视界科技有限公司 代码更新方法、图形更新方法、装置、存储介质和终端
CN109062617B (zh) * 2018-06-26 2020-07-28 百富计算机技术(深圳)有限公司 一种支持多类型设备的平台的应用方法、移动终端
CN111198690A (zh) * 2018-11-16 2020-05-26 北京奇虎科技有限公司 一种安装包的修改方法和装置
CN111666074B (zh) * 2019-03-05 2024-04-09 华为技术有限公司 一种web应用定制的方法、相关装置及系统
CN110780864A (zh) * 2019-10-30 2020-02-11 网易(杭州)网络有限公司 类方法替换的控制方法及装置、存储介质及电子设备
CN111240738B (zh) * 2020-01-20 2023-11-21 北京有竹居网络技术有限公司 文件处理方法、装置、设备及介质
CN111240766B (zh) * 2020-01-22 2023-12-29 抖音视界有限公司 应用启动方法、装置、电子设备及计算机可读存储介质
US11972244B2 (en) 2020-11-13 2024-04-30 Iron Gaming Limited Method and apparatus for improving a mobile application
CN113296898B (zh) * 2021-05-26 2024-05-17 北京京东振世信息技术有限公司 异步任务处理方法、装置、电子设备和存储介质
CN115686665B (zh) * 2022-09-30 2023-09-12 广州市玄武无线科技股份有限公司 一种插件快速接入方法、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721929A (en) * 1995-10-06 1998-02-24 Electronic Data Systems Corporation Method for extending a fourth generation programming language
US6957228B1 (en) * 2000-01-07 2005-10-18 International Business Machines Corporation Object oriented apparatus and method for providing context-based class replacement in an object oriented system
CN102339219B (zh) * 2010-07-20 2016-08-24 甲骨文国际公司 用于支持面向对象脚本工具的系统和方法
US20120096043A1 (en) * 2010-10-19 2012-04-19 7 Degrees, Inc. Data graph cloud system and method
US8527361B2 (en) * 2011-06-27 2013-09-03 Amazon Technologies, Inc. Service for adding in-application shopping functionality to applications
JP5723760B2 (ja) * 2011-12-28 2015-05-27 Kddi株式会社 アプリケーション解析装置、アプリケーション解析システム、およびプログラム
JP5736335B2 (ja) * 2012-03-19 2015-06-17 Kddi株式会社 アプリケーション解析装置、アプリケーション解析システム、およびプログラム
US9026989B2 (en) * 2012-06-07 2015-05-05 Microsoft Technology Licensing Llc Object extensions using attributes to decouple base classes from derived classes
US9344422B2 (en) * 2013-03-15 2016-05-17 Oracle International Corporation Method to modify android application life cycle to control its execution in a containerized workspace environment
US9817638B2 (en) * 2013-12-27 2017-11-14 Symantec Corporation Systems and methods for injecting code into an application
US9703551B2 (en) * 2014-04-28 2017-07-11 Ca, Inc. Modifying mobile application binaries to call external libraries

Also Published As

Publication number Publication date
JP7231681B2 (ja) 2023-03-01
KR101854975B1 (ko) 2018-05-04
JP2021192254A (ja) 2021-12-16
KR20170097360A (ko) 2017-08-28
US10078498B2 (en) 2018-09-18
JP2017146966A (ja) 2017-08-24
US20170242664A1 (en) 2017-08-24

Similar Documents

Publication Publication Date Title
JP6936016B2 (ja) パッケージファイルに対する機能拡張方法およびシステム
KR102077360B1 (ko) 애플리케이션에 대한 중간 언어 코드로부터 네이티브 코드를 생성하는 기법
JP2020509443A (ja) ブロックチェーン上のネイティブ契約を実施するためのシステムおよび方法
Hellman Android programming: Pushing the limits
CN112083968A (zh) 一种宿主中插件加载方法及装置
Andrus et al. Cider: Native execution of ios apps on android
JP6935617B2 (ja) 中間言語ファイルのロード速度改善のための方法およびシステム
Kim et al. X-droid: A quick and easy android prototyping framework with a single-app illusion
CN108874501A (zh) 软件定义的微服务
JP2017142792A (ja) ファイル保護方法
JP6917150B2 (ja) コード保護方法およびコンピュータプログラム
CN111290740B (zh) 应用程序的开发方法、装置、计算机设备和存储介质
CN106778270B (zh) 一种恶意应用程序的检测方法及系统
KR20180048518A (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
JP7015120B2 (ja) アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム
Na et al. Comparative Analysis of Mobile App Reverse Engineering Methods on Dalvik and ART.
JP2021197180A (ja) クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム
CN111782196A (zh) 基于mvp架构的开发方法及装置
Son et al. Design and implementation of the smart virtual machine on iOS platform for the mobile game portability
RU2521265C2 (ru) Система и способ автоматической обработки системных ошибок программного обеспечения
Chapple et al. Mastering Parallel Programming with R
CN113590166A (zh) 应用程序的更新方法、装置以及计算机可读存储介质
Cam et al. uitXkernel: Android Kernel Forensic for Security Analysis Purposes
KR20210008469A (ko) 네이티브 라이브러리를 보호하는 방법 및 시스템
Román García An enhanced SleuthKit GUI for digital forensics

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201223

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210128

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210416

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20210412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210706

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210706

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210826

R150 Certificate of patent or registration of utility model

Ref document number: 6936016

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350