JP6464256B2 - Androidアプリケーションのライフサイクルを変更することによって、コンテナ化ワークスペース環境内でアプリケーションの実行を管理する方法 - Google Patents

Androidアプリケーションのライフサイクルを変更することによって、コンテナ化ワークスペース環境内でアプリケーションの実行を管理する方法 Download PDF

Info

Publication number
JP6464256B2
JP6464256B2 JP2017506745A JP2017506745A JP6464256B2 JP 6464256 B2 JP6464256 B2 JP 6464256B2 JP 2017506745 A JP2017506745 A JP 2017506745A JP 2017506745 A JP2017506745 A JP 2017506745A JP 6464256 B2 JP6464256 B2 JP 6464256B2
Authority
JP
Japan
Prior art keywords
class
application
content provider
name
original
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
JP2017506745A
Other languages
English (en)
Other versions
JP2017531846A (ja
Inventor
アーミル,モハマッド
レーマン,アッタ・ウル
Original Assignee
オラクル・インターナショナル・コーポレイション
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
Priority claimed from US14/594,377 external-priority patent/US9344422B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2017531846A publication Critical patent/JP2017531846A/ja
Application granted granted Critical
Publication of JP6464256B2 publication Critical patent/JP6464256B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願の相互参照
本願は、2014年9月24日に出願された米国仮特許出願第62/054853号の優先権を主張し、2015年1月12日に出願された米国特許出願第14/594377号の継続出願であって、その優先権を主張するものであり、両方の出願の全体があらゆる目的で参照により本明細書に援用される。
本願は、2013年3月15日に出願された米国特許出願第13/841498号および2014年3月14日に出願された米国特許出願第14/213244号に関連するが、それらの優先権を主張しないものであり、両方の出願の全体があらゆる目的で参照により本明細書に援用される。
背景
1.分野
本願は、一般的にデータ処理に関する。具体的には、本願は、認証、承認、監査、シングルサインオン、セキュリティポリシーの実施、キーの管理および配布、秘密通信、秘密データ保存、秘密データ共有などを含むセキュリティサービスを、モバイル装置および他の装置上のソフトウェアアプリケーションに提供するためのシステム、方法および機械可読媒体に関する。
2.関連技術の考察
モバイル装置上の企業リソースに便利にアクセスすることは、繰り返して生じる課題である。モバイル装置管理(MDM)ソリューションをモバイル装置にインストールすると、モバイル装置上の殆どすべてのデータは、企業データになる。この方法は、モバイル装置のユーザがこのモバイル装置を企業以外の目的で使用したい場合に、最適ではない。
しばしば「アプリ」として呼ばれるアプリケーションは、頻繁に更新され、修訂される。電子メールアプリケーションの場合、数カ月ごとに更新パッチを適用することは、珍しいことではない。モバイル装置およびその他のコンピューティング装置が多くのアプリを有し、各々のアプリが頻繁に更新される。コンピューティング装置の安全性が一般的に最も弱いリンクと同様であるため、ハッカーからモバイル装置を守ることは、困難である。1つのアプリケーションにセキュリティ異常があった場合、装置上のすべてのデータが侵害される可能性がある。
これらのセキュリティ上の脆弱性があるため、多くの企業は、従業員自身の装置を用いて、企業ネットワークに対するアクセス(一般的にBYOD(bring-your-own-device)と呼ばれるアクセス)を許可しない。企業がBYODアクセスを許可しないため、従業員は、上記のユーザ装置上のすべてのものをロックするMDMソリューションに同意せざる得ない。代替案として、雇用者は、企業アクセス用の電子装置を従業員に提供することである。しかしながら、この代替案は、コストがかかり、インフラストラクチャを更新する必要がある。
より良いセキュリティおよび柔軟性で、アプリをモバイル装置に統合する必要がある。
簡単な概要
一般的に、モバイルアプリケーションをコンピューティング装置にインストールする前に、そのモバイルアプリケーションを自動的に「コンテナ化」することによって、すべてのアプリケーションのネットワークコールおよび入出力(I/O)コールを行う前に、先に必要なユーザ認証、トークン選択および/または暗号化を行うシステム、装置および方法が記載される。コンストラクタまたはネットワークまたはI/Oコールを行う際に、ネイティブアプリケーションによってコードを実行する前に、セキュリティコードが実行される。
「コンテナ化」アプリケーションは、変更されていないネイティブアプリケーションを入力として使用して、変更されたコンテナ化アプリケーションを出力する。具体的には、Google Android(登録商標)コンピュータアプリケーション用のApplicationManifest.XMLファイルおよびGoogle Dalvik(登録商標)実行可能(DEX)なバイトコードファイルは、Google Android(登録商標)アプリケーションパッケージ(APK)ファイルから抽出される。アプリケーション、コンテンツプロバイダおよびアクティビティのために、ラッパークラスおよびダミーライフサイクルメソッドが作成される。その目的は、ダミーライフサイクルを作成することによって、認証が完了するまで、オリジナルコードが実行されないようにすることである。認証が正常に完了すると、実際のアプリケーションコードを実行する前に、ポリシーを取得し、適用する。
モバイル装置アプリのライフサイクルを変更することができる。方法としては、APKファイルを復号化し、そこからAndroidマニフェストファイルおよびDEXファイルを抽出する。マニフェストファイルから、アプリケーションクラスの名前を読み取り、アプリケーションクラスのバイトコードを解析し、メソッドCLINIT(静的初期化子)、INIT(コンストラクタ)、attachBaseContext、およびonCreate(アプリケーションライフサイクルメソッド)の名前を変更し、CLINIT、INIT、attachBaseContextおよびonCreateなどのオリジナルの名前を有する空白ダミーメソッドを挿入する。アプリケーションクラスを処理した後、マニフェストからコンテンツプロバイダクラスの名前を取り出し、固定のサフィックスを追加することによって、(マニフェストファイル内の)名前を変更する。次に、バイトコード操作を使用することによって、コンテンツプロバイダのクラスを作成する。このコンテンツプロバイダのクラスは、変更された名前を有し、オリジナルコンテンツプロバイダに対してラッパー/代理クラスとして機能する。コンテンツプロバイダのラッパーが作成されると、マニフェストファイルからアクティビティの名前を読み取り、バイトコードパーサを使用して、CLINITメソッド、INITメソッド、およびライフサイクルメソッド(onCreate、onResume、onStart、onRestart、onPause、onStop、onDestroy、finish)の名前を変更し、それらの場所にダミーメソッドを作成する。また、DEXファイルにダミーランチャアクティビティを追加し、アプリケーション起動時に呼び出される最初のアクティビティであるランチャアクティビティ(オリジナルランチャアクティビティから、ランチャプロパティを削除した)として、その名前をマニフェストファイルに追加する。アプリケーションのライフサイクル管理が開始すると、ダミーランチャアクティビティ認証がトリガされ、ポリシーが取得される。その後、オリジナルランチャアクティビティが呼び出される。
ダミーメソッド/クラスを用いて、オリジナルライフサイクルメソッド/クラスを置換する目的は、認証が完了し且つポリシーが取得される前に、アプリケーションコードが実行されないようにすることである。コンテナライザ(containerizer)は、ライフサイクルを変更するだけではなく、ファイルシステムコールおよびネットワークコールをラッピングすることによって、それらのコールにセキュリティを導入することもできる。例えば、データを装置に書き込む前に、そのデータは、読み取り処理において、暗号化され復号化される。同様に、企業ネットワークにインストールされているゲートウェイを介して、すべてのネットワークコールをプロキシすることができ、適切なチャネルを用いて、すべてのネットワークトラフィックを管理し、ルーティングすることができる。ネットワーク傍受を実行するには、トラフィックがルーティングされるネットワークから認証を取ることが重要である。書き込み/読み取り処理時の暗号化/復号化と同様に、キーマネージャを初期化する必要がある。認証が完了すると、キーマネージャを初期化し、ネットワーク通信を介して認証トークンを受信することができる。名前が変更されたオリジナルライフサイクルメソッド/クラスは、同様の順番でトリガされる。場合によって、アクティビティのライフサイクル、例えばアクティビティのonCreate/onResumeに対して管理を行うときのみ、認証を呼び出すことができる。したがって、オリジナルライフサイクルは、ダミーライフサイクルに置換される。認証を行う場合、オリジナルライフサイクルは、認証後に呼び出される。
コンテナ化されたアプリケーションを起動する場合、まず、アプリケーションクラスを初期化しなければならない。すべての初期化/ライフサイクルメソッドの名前が変更されたため、いずれのコードも実行できない。代わりに、(コンテナライザによって導入された)ダミーメソッドが実行される。アプリケーションクラスの初期化の後、コンテンツプロバイダが初期化され、(コンテナライザによって導入された)コンテンツプロバイダのラッパークラスが初期化される。
アプリケーションおよびコンテンツプロバイダの初期化の後、アプリケーションライフサイクルは、認証をトリガするダミーランチャアクティビティに入る。認証が成功すると、キーマネージャおよびネットワークマネージャが初期化される。その後、オリジナルライフサイクルがトリガされる。まず、アプリケーションクラスの改名CLINIT、改名INIT、改名attachBaseContextが呼び出される。改名ライフサイクルメソッドを実行した後、アプリケーションクラスのオリジナルコンテンツプロバイダクラスが初期化され、そのonCreateが呼び出される。オリジナルコンテンツプロバイダが初期化されると、アプリケーションクラスのオリジナルonCreateが呼び出される。すべての処理が完了すると、オリジナルランチャアクティビティが呼び出され、残りのアプリケーションがそれに応じて機能する。
場合によって、特定のアクティビティで、アプリケーションをトリガすることができる。この場合、アプリケーションクラスおよびコンテンツプロバイダ初期化管理がダミーランチャアクティビティに入らず、呼び出されたアクティビティに直接に入る。このため、アクティビティ内の静的初期化子(CLINIT)、コンストラクタ(INIT)およびライフサイクルメソッドの名前を変更し、すべてのアクティビティ内のアクティビティライフサイクルに、ダミーメソッドを追加した。これらのダミーメソッドは、改名オリジナルライフサイクルメソッドを呼び出す前に、認証をチェックする。認証されていない場合、onCreate/onResumeダミーメソッドが認証をトリガする。認証が成功すると、アプリケーションのライフサイクルおよびコンテンツプロバイダの初期化がトリガされる。このオリジナルCLINITの後、アクティビティ内のINITおよびonCreateが呼び出され、残りのアプリケーションがそれに応じて機能する。
本発明のいくつかの実施形態は、モバイル装置アプリのライフサイクルを変更する方法に関する。本発明の方法は、コンピュータソフトウェアアプリケーションに対応するアプリケーションマニフェストファイルおよびバイトコードファイルを提供するステップと、アプリケーションクラスのオリジナルメソッドの名前をバイトコードファイル内の改名メソッドの名前に変更するステップと、オリジナルメソッドの名前を有し、改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたラッパーメソッドを、バイトコードファイル内のアプリケーションクラスに挿入するステップと、オリジナルコンテンツプロバイダクラスの名前を、アプリケーションマニフェストファイル内の変更されたコンテンツプロバイダクラスの名前に変更するステップと、変更されたコンテンツプロバイダクラスの名前を有し、オリジナルコンテンツプロバイダクラスのメソッドを呼び出すためのコールを転送する前に、オリジナルコンテンツプロバイダクラスがインスタンス化されたか否かをチェックするように構成されたラッパーコンテンツプロバイダクラスを、バイトコードファイル内で作成するステップとを含む。
本発明の方法は、アクティビティクラスのオリジナルメソッドの名前を、バイトコードファイル内のアクティビティクラスの改名メソッドの名前に変更するステップと、アクティビティクラスのオリジナルメソッドの名前を有し、アクティビティクラスの改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたダミーメソッドを、バイトコードファイル内のアクティビティクラスに挿入するステップとをさらに含む。
アプリケーションマニフェストファイル内のすべてのコンテンツプロバイダクラスの名前を変更することができる。本発明の方法は、ラッパーメソッドによってポリシーを読み取るステップをさらに含むことができ、認証または暗号化メソッドを呼び出すためのコールは、ポリシーに準拠する。ポリシーは、情報技術(IT)部署から、モバイル装置アプリをインストールしたモバイル装置に送信されることができる。
ラッパーメソッドは、モバイル装置マネージャアプリケーションを呼び出すためのコールを含むことができる。オリジナルメソッドは、静的ブロック初期化を含むことができる。オリジナルメソッドは、コンストラクタを含むことができる。本発明の方法は、バイトコードファイル内のアプリケーション静的初期化メソッド、アプリケーションコンストラクタメソッド、アプリケーションattachBaseContext()メソッド、コンテンツプロバイダ静的初期化メソッド、コンテンツプロバイダコンストラクタメソッド、コンテンツプロバイダonCreate()メソッド、アプリケーションonCreate()メソッド、ランチャアクティビティ静的初期化メソッド、ランチャアクティビティコンストラクターメソッド、およびランチャアクティビティonCreate()メソッド、ランチャアクティビティonStart()メソッド、およびランチャアクティビティonResume()メソッドのすべての名前を変更するステップをさらに含むことができる。
本発明の方法は、onCreate()メソッド、onStart()メソッド、onStop()メソッド、onRestart()メソッド、onPause()メソッド、onResume()メソッド、またはonDestroy()メソッドをラッパークラスに挿入するステップをさらに含むことができる。オリジナルメソッドの名前を変更するステップは、オリジナルメソッドにプリフィックスまたはサフィックスを追加することによって、改名メソッドを作成するステップを含むことができる。アプリケーションマニフェストファイルは、XML(拡張マークアップ言語)コードを含むことができる。バイトコードファイルは、Google Android(登録商標)コンピュータアプリケーション用のGoogle Dalvik(登録商標)実行可能(DEX)なバイトコードファイルである。本発明の方法は、Google Android(登録商標)アプリケーションパッケージ(APK)ファイルから、アプリケーションマニフェストファイルおよびバイトコードファイルを抽出するステップをさらに含むことができる。
さらに他の実施形態は、上述した方法を実行するシステムおよび上述の方法に使用される命令を保存または記憶する機械可読有形記憶媒体に関する。
この概要は、特許請求される主題の重要なまたは本質的な特徴を特定することを意図しておらず、特許請求される主題の範囲を決定するために単独で使用されることも意図していない。主題は、本特許出願の明細書全体の適切な部分、任意またはすべての図面および各請求項を参照することによって、理解されるべきである。
一実施形態に従って、保護された企業ネットワークに接続しているモバイル装置を示す図である。 一実施形態に従って、アプリケーションマニフェストファイルの変更を示す図である。 一実施形態に従って、アプリケーションマニフェストファイルの変更を示す図である。 一実施形態に従って、バイトコードファイル内の変更を示す図である。 一実施形態に従って、バイトコードファイル内の変更を示す図である。 一実施形態に従って、アプリケーションライフサイクルの変更を示す図である。 一実施形態に従ったプロセスを示すフローチャートである。 一実施形態を実現するためのネットワークシステムを示す簡略図である。 本発明のさまざまな実施形態を実現することができる例示的なコンピュータシステムを示す図である。 本発明のさまざまな実施形態を実現することができるモバイル装置アプリのライフサイクルを変更するための例示的なシステムの簡略構造を示す図である。
詳細な説明
以下の記載において、本発明の実施形態を完全に理解するために、説明の目的で具体的な詳細が記載する。しかしながら、これらの具体的な詳細がなくても、さまざまな実施形態を実施できることは、明らかであろう。図面および説明は、限定的な意図をしていない。
いくつかの図示されたシステムは、さまざまな構成において提供されてもよい。いくつかの実施形態において、システムは、当該システムの1つ以上のコンポーネントがクラウドコンピューティングシステム内の1つ以上のネットワークに分散される分散システムとして構成されてもよい。
本発明の態様は、Google Android(登録商標)オペレーティングシステム(OS)に基づく装置上で、安全なコンテナ化を実行する方法に関する。Androidプラットフォーム上でコンテナ化という目標の達成について説明する。Androidアプリケーションのライフサイクルを中断し、導入を実行することによって、目標を達成する手順を説明する。
コンテナ化は、モバイルアプリを保護するための新規な手法である。安全なワークスペースを形成し、他のアプリをそのワークスペースに統合することによって、これらのアプリは、ワークスペースと共に、コンテナ化環境を有するエコシステムを共有することができる。
従来の業界ソリューションは、単にモバイル装置上にMDMをインストールする。これによって、装置は、事実上企業の財産になる。個人アプリでさえ、企業ポリシーに左右される。
本明細書に記載されたモバイルワークスペースソリューションを用いて、個人データおよび企業データを別々に管理することができる。コンテナ化環境に動作する企業アプリおよびそのデータは、企業ポリシーに管理される。企業アプリのネットワークのアクセスおよびファイルシステムのアクセスは、コンテナ化環境に共通の方法で保護される。
技術上、このようなモバイルワークスペースソリューションの利点は、モバイルアプリに安全性を追加すること、ネットワークおよびファイルの安全なアクセスを提供すること、アプリの認証アクセスを提供すること、アプリに対するポリシー管理を提供すること、データ漏洩の防止を提供すること、および、装置上の個人データに触れることなく、管理コンソールからロックする/消す/消去することができる管理を装置上のコンテナ化環境に提供できることである。
手法
一般的に、Google Android(登録商標)アプリケーションの通常ライフサイクルは、アプリケーションクラスの初期化、静的初期化、コンストラクタの初期化、attachBaseContext()アプリケーションのライフサイクルの初期化、コンテンツプロバイダ、静的初期化、コンストラクタの初期化、onCreate()コンテンツプロバイダのライフサイクルの初期化、onCreate()アプリケーションのライフサイクルの初期化、ランチャアクティビティの初期化、静的初期化、コンストラクタの初期化、および、onCreate()、onStart()、onResume()アクティビティのライフサイクルの初期化を含む。
アプリケーションからのすべてのネットワークおよびI/Oコールに、セキュリティポリシーのチェックおよび/またはセキュリティチェックを事前に実行させるために、このライフサイクルを変更することができる。
図1は、一実施形態に従って、保護された企業ネットワークに接続しているモバイル装置を示している。システム100において、スマートフォン102は、広域ネットワーク110を介して企業ネットワーク120と通信する。
スマートフォン102において、Dalvik(登録商標)仮想マシン(VM)106上で動作するアプリケーション108と外部実体との直接接続が拒否される。代わりに、キーコンストラクタのラッパーおよび初期化は、モバイルデータマネージャ(MDM)104を通過するようにネットワークコールを強制する。モバイルデータマネージャ104は、装置の認証トークンおよび他の通信に関連するセキュリティをチェックすることができる。アプリ108は、事実上モバイルデータマネージャ104およびインターネットなどの広域ネットワーク110を介して、企業ネットワーク120と通信する。
企業ネットワーク120において、すべての着信ネットワークトラフィックおよび発信ネットワークトラフィックは、ファイアウォール112によってチェックおよび規制される。モバイル装置102から企業サーバ114へのコールは、企業ウェブサービス116の形を取ることができる。例えば、アプリ108は、企業サービス116によって提供される内部従業員記録にアクセスすることができる。
会社のIT部署は、ポリシー118を発布することができる。ポリシーのコピーは、広域ネットワーク110を介して、モバイル装置102に送信される。ポリシーのコピーは、拡張可能マークアップ言語(XML)ファイルの形態を取ることができる。アプリ108内のラッパークラスは、ポリシーのコピーを照会することによって、特定のトランザクション用のセキュリティ証明書などを取得するか否か、いつ取得するかを判断することができる。
図2Aおよび2Bは、一実施形態に従って、アプリケーションマニフェストファイルの変更を示している。図2Aに示すように、オリジナルアプリケーションマニフェストファイル202は、「oracle.webcenter.content.Android.documentsprovider.WCCFilesProvider」というオリジナルクラスの名前204を有する。このクラスの名前で命名された要素は、オリジナル下位要素を含む。
図2Bにおいて、変更されたアプリケーションマニフェストファイル206のオリジナルクラスの名前204は、「MyC14N」というプレフィックスを有するクラス名に変更され、すなわち、「oracle.webcenter.content.Android.documentsprovider.MyC14NWCCFilesProvider」という名前に変更された。さらに、オリジナルクラスの名前と同様のクラス名で、すなわち「oracle.webcenter.content.Android.documentsprovider.WCCFilesProvider」で、新しいクラス定義210を追加した。新しいクラス定義の下方に、新しいサブ要素が記載される。新しいサブ要素は、オリジナルサブ要素のコピーであってもよく、オリジナルサブ要素のコピーでなくてもよい。また、一部のサブ要素を削除してもよい。
図3Aおよび3Bは、一実施形態に従って、バイトコードファイル内の変更を示している。
図3Aにおいて、オリジナルバイトコードファイル302は、「ContentProvider」というオリジナルクラス304を有する。クラス内には、オリジナルコードがある。
図3Bにおいて、変更されたバイトコードファイル306のオリジナルクラスの名前は、「MyC14N」というプレフィックスを有する改名クラスの名前に変更され、すなわち、「MyC14NContentProvider」という名前に変更された。そのオリジナルコードは、変わらない。
オリジナルクラスの名前「ContentProvider」と同様の名前で、新しいクラス310を追加した。この新しいクラスは、インスタンス化および初期化を行ったか否かをチェックする変数を規定する。また、onCreate()などのラッパーメソッドが作成される。onCreate()などのラッパーメソッドは、ポリシーを読み取り、このポリシーに基づいて、認証、暗号化/復号化、または他のセキュリティ機能を実行してから、オリジナルクラスのオリジナルonCreate()機能を呼び出す。
図4は、使用可能なアプリケーションコードの実行を中断するためのバイトコード操作/導入を示している。すべての可能なネットワークおよびファイルシステム処理に対して、既存のアプリケーションに導入されるラッパークラスを作成することができる。ラッパークラスを用いて、オリジナルクラスを置換することによって、既存のコードにおいて実際のバイトコードの変更を行うことができる。例えば、カスタムラッパークラスを用いて、FileInputStreamおよびFileOutputStreamを置換することができる。
アプリケーションのライフサイクルを管理することを望む場合があるため、既存のライフサイクルコードを導入/修正するバイトコード操作手法を使用することができる。
この手法を使用する目的の1つは、ユーザを認証することである。よって、認証後、ユーザは、アプリケーションを実行し、安全なワークスペースからセッションデータおよび暗号キーを取得することができる。したがって、ネットワークコールおよびファイルシステムコールが実際に動作する。いくつかのラッパーは、暗号キーを復号化するために、マスタ暗号キーを必要とする。暗号キーは、すべてのファイル処理において、データを暗号化/復号化するために使用される。また、ネットワークコールを行うために、Oracle(登録商標)モバイルセキュリティゲートウェイまたはその他のクラウドベースゲートウェイを介してルーティングできる任意のネットワークリソースに対するコールの真偽を確証するためのセッショントークンが必要である。
上記の使用例を達成するために、全体のアプリケーションライフサイクルを遅延させ、ダミーライフサイクルを導入することによって、最初にユーザを認証し、その後、マスタ暗号キーおよびセッショントークンを取得することができる。
以下、一実施形態に係るアプリケーションライフサイクルのステップリストをステップごとに説明する。
処理402では、アプリケーションクラスの初期化を行う。
静的初期化404に対して、コンテナ化ステップ430において、アプリケーションクラスの名前は、カスタム定義された固定のプリフィックス/サフィックスを有する名前に変更され、後で呼び出され、空のクラス初期化子に導入されることができる。
コンストラクタの初期化406に対して、コンテナ化ステップ432において、コンストラクタの名前は、カスタム定義された固定のプリフィックス/サフィックスを有する名前に変更され、後で呼び出され、空のクラスコンストラクタに導入されることができる。このことは、利用可能なすべてのコンストラクタに対して行うことができる。このことは、スーパークラスのすべてのコンストラクタに対して行うことができ、それぞれのsuper()呼び出しを上記のカスタム名に変更することもできる。
attachBaseContext()メソッド408の名前は、処理434において、カスタム定義された固定のプリフィックス/サフィックスを有する名前に変更され、後で呼び出され、空のメソッドに導入されることができる。
コンテンツプロバイダの初期化410に対して、処理436において、アプリケーション内に定義された各コンテンツプロバイダに、ダミーコンテンツプロバイダを導入し、関連するマニフェストXML(拡張マークアップ言語)内の参照を変更することができる。その結果、これらのダミーコンテンツプロバイダは、オリジナルコンテンツプロバイダへの参照を含み、このダミーコンテンツプロバイダのすべてのメソッドコールは、オリジナルコンテンツプロバイダに委譲される。一般的に、コンテンツプロバイダは、インターフェイスメソッドに対して第1コールが行われるまで、通常は初期化されない。コンテンツプロバイダの初期化は、怠惰な初期化であると言ってもよい。例えば、コンテンツプロバイダがMyContentProviderである場合、マニフェストのエントリ<provider android:name="MyContentProvider">を<provider android:name="MyC14NContentProvider">に変更することができ、静的初期化412およびコンストラクタ初期化414で、MyC14NContentProviderというクラスを導入することができる。
Figure 0006464256
このようにして、ダミーコンテンツプロバイダを導入し、そのインターフェイスメソッドをオリジナルクラスのオリジナルメソッドに委譲することによって、コンテンツプロバイダの初期化を遅延させる。
アプリケーションonCreate()初期化416に対して、コンテナ化装置は、以下の処理を実行することができる。
onCreate()メソッドの名前は、例えばライフサイクルの初期化418に対する処理438において、カスタム定義された固定のプリフィックス/サフィックスを有する名前に変更され、後で呼び出され、onCreate()メソッドのダミーメソッドに導入されることができる。このことは、すべてのスーパークラスに対して行うことができる。super.onCreate()の呼び出しは、上記の改名onCreate()メソッドに委譲するできる。
アクティビティライフサイクルの初期化、例えばランチャアクティビティ初期化420に対して、処理440において、ダミーアクティビティをランチャアクティビティとして導入し、オリジナルアクティビティからランチャアクションを削除することができる。ダミーアクティビティの管理権を取得すると、ワークスペースを認証のために呼び出すことができる。ワークスペースは、セッショントークンおよびマスタ暗号キーを返すことができる。キーを取得すると、名前が変更されたオリジナルメソッドを呼び出すことによって、サイクルの全体を再初期化できる。
オリジナルアプリケーションクラスの静的初期化422を呼び出すことができる。
次に、オリジナルアプリケーションクラスコンストラクタ424を呼び出すことができる。
オリジナルアプリケーションクラスattachBaseContext()を呼び出すことができる。
オリジナルコンテンツプロバイダを初期化するダミーコンテンツプロバイダ上で、Init()を呼び出すことができる。
オリジナルアプリケーションクラスonCreate()を呼び出すことができる。
同様に、既存のオリジナルアクティビティのライフサイクルを導入/修正することができる。
処理442において、処理426のonCreate()、onRestart()、onResume()メソッドの名前を変更し、カスタム定義のライフサイクルメソッドを導入することができる。これによって、ポリシーの実装タスクを行い、その後、オリジナル改名メソッドを呼び出すことができる。例えば、onCreate()の名前をonCreate_C14N()に変更し、独自のonCreate()を導入する。
Figure 0006464256
他のライフサイクルメソッド、例えばStart()、onResume()、onPause()、onStop()、onDestroy()に対して、同様の処理を行うことができる。
バイトコードの変更/導入と同様の手法を使用して、独自のカスタムコールを用いて、共有プリファレンスおよびstartActivity()のシステムコールを置換することができる。これによって、すべての暗号化/復号化およびポリシーチェックを実行してから、オリジナル処理を呼び出すことができる。
図5は、一実施形態に係るプロセス500を示すフローチャートである。このプロセスは、コンピュータがプロセッサなどに格納された命令を実行することによって実施することができる。処理501において、アプリケーションマニフェストファイルおよびバイトコードファイルは、提供される。アプリケーションマニフェストファイルおよびバイトコードファイルは、コンピュータソフトウェアアプリケーションに対応する。処理502において、アプリケーションクラスのオリジナルメソッドの名前を、バイトコードファイル内の改名メソッドの名前に変更する。処理503において、ラッパーメソッドをバイトコードファイル内のアプリケーションクラスに挿入する。ラッパーメソッドは、オリジナルメソッドの名前を有し、改名メソッドを呼び出す前に認証または暗号化メソッドを呼び出すように構成される。処理504において、オリジナルコンテンツプロバイダクラスの名前を、アプリケーションマニフェストファイル内の変更されたコンテンツプロバイダクラスの名前に変更される。処理505において、バイトコードファイル内に、ラッパーコンテンツプロバイダクラスを作成する。作成されたラッパーコンテンツプロバイダクラスは、変更されたコンテンツプロバイダクラスの名前を有し、オリジナルコンテンツプロバイダクラスのメソッドを呼び出すためのコールを転送する前に、オリジナルコンテンツプロバイダクラスがインスタンス化されたか否かをチェックするように構成される。
処理506において、アクティビティクラスのオリジナルメソッドの名前を、バイトコードファイル内のアクティビティクラスの改名メソッドの名前に変更する。処理507において、ダミーメソッドをバイトコードファイル内のアクティビティクラスに挿入する。ダミーメソッドは、アクティビティクラスのオリジナルメソッドの名前を有し、改名メソッドを呼び出す前に認証メソッドまたは暗号化メソッドを呼び出すように構成される。
コンピュータシステムインフラストラクチャ
図6は、一実施形態を実現するための分散システム600の簡略図を示している。図示の実施形態において、分散システム600は、ネットワーク610に分散された1つ以上のクライアントコンピューティング装置602、604、606および608を含む。これらのクライアントコンピューティング装置は、ウェブブラウザ、専用クライアント(例えば、Oracleフォーム)などのクライアントアプリケーションを実行および動作させるように構成される。サーバ612は、ネットワーク610を介して、リモートクライアントコンピューティング装置602、604、606および608と通信可能に連結されてもよい。
さまざまな実施形態において、サーバ612は、システムの1つ以上のコンポーネントによって提供された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。いくつかの実施形態において、これらのサービスは、ウェブに基づくサービスまたはクラウドサービスとして、またはSaaS(Software as a Service)モデルとして、クライアントコンピューティング装置602、604、606および/または608のユーザに提供されてもよい。ユーザが操作しているクライアントコンピューティング装置602、604、606および/または608は、1つ以上のクライアントアプリケーションを利用することによって、サーバ612と対話し、これらのコンポーネントによって提供されたサービスを利用することができる。
図示の構成において、システム600のソフトウェアコンポーネント618、620および622は、サーバ612上に実装されたものとして示されている。他の実施形態において、システム600の1つ以上のコンポーネントおよび/またはこれらのコンポーネントによって提供されたサービスは、1つ以上のクライアントコンピューティング装置602、604、606および/または608に実装されてもよい。ユーザが操作しているクライアントコンピューティング装置は、1つ以上のクライアントアプリケーションを利用することによって、これらのコンポーネントによって提供されたサービスを使用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせに実装されてもよい。当然ながら、分散システム600と異なるさまざまな異なるシステム構成が可能である。したがって、図示の実施形態は、実施形態のシステムを実施するための分散型システムの一例であり、限定を意図するものではない。
クライアントコンピューティング装置602、604、606および/または608は、Microsoft Windows Mobile(登録商標)などのソフトウエアおよび/またはiOS、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)10、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、SMS(Short Message Service)、Blackberry(登録商標)、または他の通信プロトコルに対応する携帯型装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA(personal digital assistant))または装着型装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。一例として、クライアントコンピューティング装置は、さまざまなバージョンのMicrosoft Windows(登録商標)オペレーティングシステム、Apple Macintosh(登録商標)オペレーティングシステムおよび/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータとすることができる。クライアントコンピューティング装置は、さまざまなGNU/Linuxオペレーティングシステム、例えばGoogle Chrome OSを含むがこれに限定されないさまざまな市販のUNIX(登録商標)またはUNIX系オペレーティングシステムのいずれかを実行するワークステーションコンピュータであってもよい。これに代えてまたはこれに加えて、クライアントコンピューティング装置602、604、606および608は、ネットワーク610を介して通信することができ、シンクライアント(thin client)コンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置を備えるまたは備えないMicrosoft Xbox(登録商標)ゲームコンソール)、および/またはパーソナルメッセージング装置などの任意の他の電子装置であってもよい。
例示的な分散システム600は、4つのクライアントコンピューティング装置を有すると図示されているが、任意数のクライアントコンピューティング装置をサポートすることができる。他の装置、例えばセンサなどを有する装置は、サーバ612と対話することができる。
分散型システム600内のネットワーク610は、当業者によく知られている任意種類のネットワークであってもよく、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、およびAppleTalkなどを含むがこれに限定されないさまざまな市販のプロトコルのいずれかを使用して、データ通信をサポートすることができる。単なる一例として、ネットワーク610は、イーサネット(登録商標)、トークンリング(Token‐ring)などに基づくローカルエリアネットワーク(LAN)であってもよい。ネットワーク610は、広域ネットワークおよびインターネットであってもよく、仮想ネットワークであってもよい。仮想ネットワークとしては、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、IEEE 802.11スイートプロトコル、Bluetooth(登録商標)および/または任意の他の無線プロトコルの下で動作するネットワーク)のうちの1つまたは複数を含むことができる。および/またはこれらのネットワークの任意の組み合わせおよび/またはこれらのネットワークと他のネットワークとの組み合わせを含むがこれらに限定されない。
サーバ612は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(例えば、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、およびラックマウントサーバを含む)、サーバファーム、サーバクラスタ、または任意の適切な他の構成および/または組み合わせを含むことができる。さまざまな実施形態において、サーバ612は、前述の開示に説明した1つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成されてもよい。例えば、サーバ612は、本開示の一実施形態に従って上述した処理を実行するためのサーバに相当してもよい。
サーバ612は、上記で説明したいずれかのオペレーティングシステムを含むオペレーティングシステム、および任意の市販されているサーバオペレーティングシステムを実行することができる。また、サーバ612は、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな追加のサーバアプリケーションおよび/またはミッドティアアプリケーションのいずれかを実行することもできる。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(International Business Machines、登録商標)などから市販されているものを含むが、これらに限定されない。
いくつかの実現例において、サーバ612は、クライアントコンピューティング装置602、604、606および608のユーザから受信したデータフィードおよび/またはイベントアップデートを分析および統合する1つ以上のアプリケーションを含むことができる。一例として、データフィードおよび/またはイベントアップデートは、1つ以上の第三者情報ソースおよび連続データストリームから受信され、センサデータアプリケーション、金融相場表示機、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、および自動車交通監視装置などに関連するリアルタイムイベント、例えばTwitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムアップデートを含むがこれらに限定されない。また、サーバ612は、クライアントコンピューティング装置602、604、606および608の1つ以上の表示装置を介して、データフィードおよび/またはリアルタイムイベントを表示する1つ以上のアプリケーションを含むこともできる。
また、分散システム600は、1つ以上のデータベース614および616を含むこともできる。データベース614および616は、さまざまな場所に配置されてもよい。一例として、データベース614および616の一方または両方は、サーバ612に属する(および/または常駐する)非一時的な記憶媒体上に配置されてもよい。代替的には、データベース614および616は、サーバ612から離れており、ネットワークに基づく接続または専用接続を介して、サーバ612と通信することができる。一組の実施形態において、データベース614および616は、記憶域ネットワーク(SAN)に配置されてもよい。同様に、サーバ612の機能を実行するために必要なファイルは、必要に応じて、サーバ612上におよび/またはサーバ612から離れた場所に格納されてもよい。一組の実施形態において、データベース614および616は、Oracleによって提供されるデータベースなどの関係データベースを含むことができる。これらの関係データベースは、SQLフォーマットの指令に応じて、データを記憶、更新および検索するように構成される。
図7は、本発明のさまざまな実施形態を実現することができる例示的なコンピュータシステム700を示している。システム700を使用して、上述したコンピュータシステムのいずれかを実現することができる。図示のように、コンピュータシステム700は、バスサブシステム702を介して、多数の周辺サブシステムと通信する処理ユニット704を含む。これら周辺サブシステムは、処理加速ユニット706、I/Oサブシステム708、記憶サブシステム718および通信サブシステム724を含む。記憶サブシステム718は、有形のコンピュータ可読記憶媒体722およびシステムメモリ710を含む。
バスサブシステム702は、コンピュータシステム700のさまざまな構成要素およびサブシステムが意図したように互いに通信することを可能にする機構を形成する。バスサブシステム702は、単一のバスとして概略的に示されているが、バスサブシステムの代替の実施形態において複数のバスを利用することができる。バスサブシステム702は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかの種類のバス構造のいずれか1つであってもよい。例えば、これらのバス構造は、IEEE P1386.1規格に従って製造されたメザニンバスとして実装することができるISA(Industry Standard Architecture、業界標準アーキテクチャ)バス、MCA(Micro Channel Architecture、マイクロチャネルアーキテクチャ)バス、EISA(Enhanced ISA、改良ISA)バス、VESA(Video Electronics Standards Association、ビデオ電子工学標準化協会)ローカルバス、またはPCI(Peripheral Component Interconnect、周辺構成要素相互接続)バスを含むことができる。
1つ以上の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができる処理ユニット704は、コンピュータシステム700の動作を管理する。処理ユニット704は、1つ以上のプロセッサを含むことができる。これらのプロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含むことができる。特定の実施形態において、処理ユニット704は、各々がシングルコアプロセッサまたはマルチコアプロセッサを備えた1つ以上の独立した処理ユニット732および/または734として、実装されてもよい。他の実施形態において、処理ユニット704は、2つのデュアルコアプロセッサを単一のチップに一体化することによって形成されたクアッドコア処理ユニットとして、実装されてもよい。
さまざまな実施形態において、処理ユニット704は、プログラムコードに応答して、さまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。任意の所定時間において、実行されるプログラムコードの一部または全部は、プロセッサ704および/または記憶装置サブシステム718に常駐することができる。適切なプログラミングによって、プロセッサ704は、上記のさまざまな機能を提供することができる。コンピュータシステム700は、デジタル信号プロセッサ(DSP)および専用プロセッサなどを含むことができる処理加速ユニット706をさらに含むことができる。
I/Oサブシステム708は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含むことができる。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイクロホン、および他の種類の入力装置を含む。ユーザインターフェイス入力装置は、例えば、ユーザがジェスチャおよび音声コマンドを使用した自然なユーザインターフェイスを介して、Microsoft(登録商標)360ゲームコントローラなどの入力装置を制御し且つ対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサのような動き検出および/またはジェスチャ認識装置を含むことができる。また、ユーザインターフェイス入力装置は、ユーザの目の活動(例えば、写真撮影および/またはメニュー選択を行う時の「瞬き」)を検出し、目の動きを入力装置(例えば、Google Glass(登録商標))の入力として変換するGoogle Glass(登録商標)瞬き検出器のような目の動き認識装置を含むことができる。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して、音声認識システム(例えば、Siri(登録商標))ナビゲータ)と対話することを可能にする音声認識検出装置を含むことができる。
ユーザインターフェイス入力装置には、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびオーディオ/ビジュアル装置、例えば、スピーカ、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡装置を含むが、これらに限定されない。さらに、ユーザインターフェイス入力装置は、例えば、コンピュータ断層撮影、磁気共鳴画像撮影、陽電子放射断層撮影、医療用超音波装置などの医用画像入力装置を含むことができる。また、ユーザインターフェイス入力装置は、例えば、MIDIキーボード、デジタル楽器などのような音声入力装置を含むこともできる。
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置などの非視覚ディスプレイを含むことができる。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般的に、用語「出力装置」の使用は、コンピュータシステム700からユーザにまたは他のコンピュータに情報を出力するすべての可能な種類の装置およびメカニズムを含むことを意図している。例えば、ユーザインターフェイス出力装置は、文字情報、画像情報および音声/動画情報を視覚的に伝達し、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムを含むがこれらに限定されないさまざまな表示装置を含むことができる。
コンピュータシステム700は、ソフトウェア要素を含む記憶サブシステム718を備えることができる。図示では、ソフトウェア要素は、システムメモリ710内に配置されている。システムメモリ710は、処理ユニット704上にロード可能かつ実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータを記憶することができる。
システムメモリ710は、コンピュータシステム700の構成および種類に応じて、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM))および/または不揮発性メモリ(例えば、読出専用メモリ(ROM)、フラッシュメモリなど)であってもよい。RAMは、典型的には、処理ユニット704によってアクセス可能でありおよび/または処理ユニット704によって現在処理され実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ710は、複数の異なる種類のメモリ、例えば静的ランダムアクセス記憶装置(SRAM)または動的ランダムアクセスメモリ(DRAM)を含むことができる。いくつかの実現例において、例えば起動中にコンピュータシステム700内の要素間の情報転送を支援する基本ルーチンを含む基本入出力システム(BIOS)が、一般的にはROMに格納されてもよい。限定ではなく一例として、システムメモリ710は、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーションおよび関係データベース管理システム(RDBMS)などを含み得るアプリケーションプログラム712、プログラムデータ714、およびオペレーティングシステム716を含む。一例として、オペレーティングシステム716は、さまざまなバージョンのMicrosoft Windows(登録商標)オペレーティングシステム、Apple Macintosh(登録商標)オペレーティングシステムおよび/またはLinux(登録商標)オペレーティングシステム、(さまざまなGNU/Linuxオペレーティングシステム、例えばGoogle Chrome OSを含むがこれに限定されない)さまざまな市販のUNIX(登録商標)またはUNIX系オペレーティングシステム、および/またはiOS、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)10、Palm OSなどのモバイルオペレーティングシステムを含むことができる。
また、記憶サブシステム718は、いくつかの実施形態の機能性を提供する基本プログラミングおよびデータ構成を記憶するための有形コンピュータ可読記憶媒体を提供してもよい。プロセッサによって実行されると、上述の機能性を提供するソフトウェア(プログラム、コードモジュールおよび命令)は、記憶サブシステム718に記憶されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット704によって実行されてもよい。記憶サブシステム718は、本発明に従って使用されるデータを記憶するレポジトリを提供してもよい。
また、記憶サブシステム700は、コンピュータ可読記憶媒体読み取り器720を含むことができる。コンピュータ可読記憶媒体読み取り器720は、コンピュータ可読記憶媒体722にさらに接続することができる。コンピュータ可読記憶媒体722は、選択的にシステムメモリ710と組み合わせて、コンピュータ読み取り可能な情報を一時的におよび/または永久的に格納、記憶、送信および検索するためのリモート記憶装置、ローカル記憶装置、固定の記憶装置および/または取り外し可能な記憶装置および記憶媒体を包括的に表すことができる。
コードまたはコードの一部を格納するコンピュータ可読記憶媒体722は、情報の記憶および/または伝送のために任意の方法または技術で実現された揮発性および不揮発性媒体、取外し可能および取外し不可能媒体に限定されない記憶媒体および通信媒体を含む当技術分野で知られているまたは使用されている任意の適切な媒体を含むことができる。媒体は、RAM、ROM、電子的消去可能なプログラマブルROM(EEPROM)、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置などの有形コンピュータ可読記憶媒体、または他の有形コンピュータ可読媒体を含むことができる。また、媒体は、所望の情報を送信するために使用することができ、コンピューティングシステム700によってアクセスすることができる無形コンピュータ可読媒体、例えばデータ信号、データ伝送または任意の他の媒体を含むことができる。
一例として、コンピュータ可読記憶媒体722は、取外し不可能な不揮発性磁気媒体に対して読み書きするハードディスクドライブ、取外し可能な不揮発性磁気ディスクに対して読み書きする磁気ディスクドライブ、およびCD−ROM、DVDおよびBlu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク、または他の光媒体に対して読み書きする光ディスクドライブを含むことができる。コンピュータ可読記憶媒体722は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus、USB)フラッシュドライブ、セキュアデジタル(secure digital、SD)カード、DVDディスク、デジタルビデオテープなどを含むが、これらに限定されない。また、コンピュータ可読記憶媒体722は、不揮発性メモリに基づくソリッドステートドライブ(SSD)、例えばフラッシュメモリに基づくSSD、企業フラッシュドライブおよびソリッドステートROM、および揮発性メモリに基づくSSD、例えばソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMに基づくSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリに基づくSSDとの組み合わせを使用するハイブリッドSSDを含むことができる。ディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータシステム700用のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを不揮発性的に記憶することができる。
通信サブシステム724は、他のコンピュータシステムおよびネットワークへのインターフェイスを形成する。通信サブシステム724は、コンピュータシステム700からデータを受信し、他のシステムにデータを送信するためのインターフェイスとして機能する。例えば、通信サブシステム724によって、コンピュータシステム700は、インターネットを介して、1つ以上の装置に接続することができる。いくつかの実施形態において、通信サブシステム724は、(例えば、携帯電話技術、3G、4GまたはEDGE(Enhanced Data Rates for Global Evolution)などの先進データネットワーク技術)、WiFi(IEEE 802.11ファミリ規格、または他の移動通信技術、またはそれらの組み合わせ)を使用して)無線音声および/またはデータのネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、全地球測位システム(GPS)レシーバコンポーネント、および/または他のコンポーネントを含むことができる。いくつかの実施形態では、通信サブシステム724は、無線インターフェイスに加えてまたは無線インターフェイスの代わりに、有線ネットワーク接続(例えば、イーサネット(登録商標))を提供することができる。
いくつかの実施形態において、通信サブシステム724は、コンピュータシステム700を使用している1人のユーザまたは複数のユーザの代理として、構造化および/または非構造化データフィード726、イベントストリーム728、イベントアップデート730などの形にした入力通信を受信してもよい。
一例として、通信サブシステム724は、ソーシャルネットワークおよび/または他の通信サービスのユーザから、リアルタイムデータフィード726、例えばTwitter(登録商標)フィード、Facebook(登録商標)アップデート、RSS(Rich Site Summary)フィードなどのウェブフィード、および/または1つ以上の第三者情報ソースからのリアルタイム更新を受信するように構成されてもよい。
さらに、通信サブシステム724は、連続的なデータストリームの形にしたデータを受信するように構成されてもよい。そのデータストリームは、リアルタイムイベントのイベントストリーム728および/またはイベントアップデート730を含むことができ、連続的でありまたは実質的に明確な終点を有しない。連続データを生成するアプリケーションの例として、例えば、センサデータアプリケーション、金融相場表示機、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、および自動車交通監視装置などをふくむことができる。
また、通信サブシステム724は、コンピュータシステム700に連結された1つ以上のデータストリームソースコンピュータと通信することができる1つ以上のデータベースに、構造化および/または非構造化データフィード726、イベントストリーム728、およびイベントアップデート730などを出力するように構成されてもよい。
コンピュータシステム700は、携帯型装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、装着型装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または他のデータ処理システムであってもよい。
コンピュータおよびネットワークの絶えず変化する性質により、図示されたコンピュータシステム700の説明は、特定の例を示す意図を与える。図示されたシステムよりも多くのコンポーネントまたは少ないコンポーネントを有する他の構成も多くできる。例えば、カスタマイズされたハードウェアを使用してもよく、および/または特定の要素をハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはそれらの組み合わせに実装してもよい。さらに、ネットワーク入力/出力装置などの他のコンピューティング装置への接続を使用することもできる。本明細書で提供される開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の方法および/または方法を理解するであろう。
図8は、本発明のさまざまな実施形態を実現することができるモバイル装置アプリのライフサイクルを変更するための例示的なシステム800の簡略構造を示している。
図8に示すように、例示的なシステム800は、第1提供ユニット801と、第1改名ユニット802と、第1挿入ユニット803と、第1変更ユニット804と、第1生成ユニット805とを含むことができる。第1提供ユニット801は、コンピュータソフトウェアアプリケーションに関連するアプリケーションマニフェストファイルおよびバイトコードファイルを提供するように構成することができる。第1改名ユニット802は、アプリケーションクラスのオリジナルメソッドの名前をバイトコードファイル内の改名メソッドの名前に変更するように構成することができる。第1挿入ユニット803は、ラッパーメソッドをバイトコードファイル内のアプリケーションクラスに挿入するように構成することができる。このラッパーメソッドは、オリジナルメソッドの名前を有し、改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成される。第1変更ユニット804は、オリジナルコンテンツプロバイダクラスの名前を、アプリケーションマニフェストファイル内の変更されたコンテンツプロバイダクラスの名前に変更するように構成することができる。第1作成ユニット805は、バイトコードファイル内に、ラッパーコンテンツプロバイダクラスを作成するように構成することができる。このラッパーコンテンツプロバイダクラスは、変更されたコンテンツプロバイダクラスの名前を有し、オリジナルコンテンツプロバイダクラスのメソッドを呼び出すためのコールを転送する前に、オリジナルコンテンツプロバイダクラスがインスタンス化されているか否かをチェックするするように構成される。
第2改名ユニット806は、アクティビティクラスのオリジナルメソッドの名前を、バイトコードファイル内のアクティビティクラスの改名メソッドの名前に変更するように構成することができる。第2挿入ユニット807は、ダミーメソッドをバイトコードファイル内のアクティビティクラスに挿入するように構成することができる。このダミーメソッドは、アクティビティクラスのオリジナルメソッドの名前を有し、アクティビティクラスの改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成することができる。
一実施形態において、アプリケーションマニフェストファイル内のすべてのコンテンツプロバイダクラスの名前は、変更される。
一実施形態において、システムは、ラッパーメソッドによってポリシーを読み取るように構成された第1読み取りユニット808をさらに備え、認証または暗号化メソッドを呼び出すためのコールは、当該ポリシーに準拠する。
一実施形態において、ポリシーは、情報技術(IT)部署から、モバイル装置アプリをインストールしたモバイル装置に送信される。
一実施形態において、ダミークラスは、モバイル装置マネージャアプリケーションを呼び出すためのコールを含む。
一実施形態において、クラスは、静的ブロック初期化を含む。
一実施形態において、クラスは、コンストラクタを含む。
一実施形態において、システムは、バイトコードファイル内のアプリケーション静的初期化メソッド、アプリケーションコンストラクタメソッド、アプリケーションattachBaseContext()メソッド、コンテンツプロバイダ静的初期化メソッド、コンテンツプロバイダコンストラクタメソッド、コンテンツプロバイダonCreate()メソッド、アプリケーションonCreate()メソッド、ランチャアクティビティ静的初期化メソッド、ランチャアクティビティコンストラクターメソッド、およびランチャアクティビティonCreate()メソッド、ランチャアクティビティonStart()メソッド、およびランチャアクティビティonResume()メソッドのすべての名前を変更するように構成された第3改名ユニット809をさらに備えることができる。
一実施形態において、システムは、onCreate()メソッド、onStart()メソッド、onStop()メソッド、onRestart()メソッド、onPause()メソッド、onResume()メソッド、またはonDestroy()メソッドをラッパークラスに挿入するように構成された第3挿入ユニット810をさらに備えることができる。
実施形態において、第1改名ユニットは、オリジナルメソッドにプリフィックスまたはサフィックスを追加することによって、改名メソッドを作成するように構成された追加ユニットを含むことができる。
一実施形態において、アプリケーションマニフェストファイルは、XML(拡張マークアップ言語)コードを含む。
一実施形態において、バイトコードファイルは、Google Android(登録商標)コンピュータアプリケーション用のGoogle Dalvik(登録商標)実行可能(DEX)なバイトコードファイルである。
一実施形態において、システムは、Google Android(登録商標)アプリケーションパッケージ(APK)ファイルから、アプリケーションマニフェストファイルおよびバイトコードファイルを抽出するように構成された抽出ユニット811をさらに備えることができる。
本発明の原理を実行するために、システム800のユニットは、ハードウェア(フィールドプログラマブルゲートアレイ(FPGA)、集積回路(IC)、または特定用途向け集積回路(ASIC)など)、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせを含むことができる。当業者であれば、上述の本発明の原理を実施するために、図8に記載されたユニットは、サブユニットに結合されてもよく、サブユニットに分けてもよいことを理解するだろう。したがって、図8に記載されたユニットは、実際の必要に応じて、上記の実施形態に説明した本発明の原理に従って、さまざまな動作を実行することができる。
本発明に係わる例示的な実施形態のいくつかは、以下のようにすることができる。
(1)モバイル装置アプリのライフサイクルを変更するためのコンピュータシステムであって、
プロセッサと、
プロセッサと動作可能に結合されたメモリとを備え、
プロセッサは、メモリからの命令を実行し、
プロセッサは、
コンピュータソフトウェアアプリケーションに対応するアプリケーションマニフェストファイルおよびバイトコードファイルを提供し、
アプリケーションクラスのオリジナルメソッドの名前をバイトコードファイル内の改名メソッドの名前に変更し、
オリジナルメソッドの名前を有し、改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたラッパーメソッドを、バイトコードファイル内のアプリケーションクラスに挿入し、
オリジナルコンテンツプロバイダクラスの名前を、アプリケーションマニフェストファイル内の変更されたコンテンツプロバイダクラスの名前に変更し、
変更されたコンテンツプロバイダクラスの名前を有し、オリジナルコンテンツプロバイダクラスのメソッドを呼び出すためのコールを転送する前に、オリジナルコンテンツプロバイダクラスがインスタンス化されたか否かをチェックするように構成されたラッパーコンテンツプロバイダクラスを、バイトコードファイル内で作成するように構成される。
(2)上記(1)のコンピュータシステムにおいて、プロセッサは、
アクティビティクラスのオリジナルメソッドの名前を、バイトコードファイル内のアクティビティクラスの改名メソッドの名前に変更し、
アクティビティクラスのオリジナルメソッドの名前を有し、アクティビティクラスの改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたダミーメソッドを、バイトコードファイル内のアクティビティクラスに挿入するように構成される。
(3)上記(1)に記載のコンピュータシステムにおいて、アプリケーションマニフェストファイル内のすべてのコンテンツプロバイダクラスの名前は、変更される。
(4)上記(1)のコンピュータシステムにおいて、プロセッサは、ラッパーメソッドによってポリシーを読み取るようにさらに構成され、認証または暗号化メソッドを呼び出すためのコールは、当該ポリシーに準拠する。
(5)上記(4)に記載のコンピュータシステムにおいて、上記ポリシーは、情報技術(IT)部署から、モバイル装置アプリをインストールしたモバイル装置に送信される。
(6)上記(1)に記載のコンピュータシステムにおいて、ラッパーメソッドは、モバイル装置マネージャアプリケーションを呼び出すためのコールを含む。
(7)上記(1)に記載のコンピュータシステムにおいて、オリジナルメソッドは、静的ブロック初期化を含む。
(8)上記(1)に記載のコンピュータシステムにおいて、オリジナルメソッドは、コンストラクタを含む。
(9)上記(8)に記載のコンピュータシステムにおいて、プロセッサは、バイトコードファイル内のアプリケーション静的初期化メソッド、アプリケーションコンストラクタメソッド、アプリケーションattachBaseContext()メソッド、コンテンツプロバイダ静的初期化メソッド、コンテンツプロバイダコンストラクタメソッド、コンテンツプロバイダonCreate()メソッド、アプリケーションonCreate()メソッド、ランチャアクティビティ静的初期化メソッド、ランチャアクティビティコンストラクターメソッド、およびランチャアクティビティonCreate()メソッド、ランチャアクティビティonStart()メソッド、およびランチャアクティビティonResume()メソッドのすべての名前を変更するようにされに構成される。
(10)上記(1)に記載のコンピュータシステムにおいて、プロセッサは、onCreate()メソッド、onStart()メソッド、onStop()メソッド、onRestart()メソッド、onPause()メソッド、onResume()メソッド、またはonDestroy()メソッドをラッパークラスに挿入するようにさらに構成される。
(11)上記(1)に記載のコンピュータシステムにおいて、オリジナルクラスの名前を変更するように構成されたプロセッサは、オリジナルメソッドにプリフィックスまたはサフィックスを追加することによって、改名メソッドを作成するように構成される。
(12)上記(1)に記載のコンピュータシステムにおいて、アプリケーションマニフェストファイルは、XML(拡張マークアップ言語)コードを含む。
(13)上記(1)に記載のコンピュータシステムにおいて、バイトコードファイルは、Google Android(登録商標)コンピュータアプリケーション用のGoogle Dalvik(登録商標)実行可能(DEX)なバイトコードファイルである。
(14)上記(1)に記載のコンピュータシステムにおいて、プロセッサは、Google Android(登録商標)アプリケーションパッケージ(APK)ファイルから、前記アプリケーションマニフェストファイルおよび前記バイトコードファイルを抽出するようにさらに構成される。
前述の明細書において、特定の実施形態を参照して、本発明の態様を説明したが、当業者であれば、本発明がこれらの実施形態に限定されないことを認識するであろう。上述した本発明のさまざまな特徴および態様は、個別にまたは共同で使用することができる。さらに、実施形態は、本明細書の幅広い精神および範囲から逸脱することなく、本明細書に記載された環境および用途を超える任意数の環境および用途に利用されることができる。したがって、明細書および図面は、限定的ではなく例示的なものとして見なすべきである。

Claims (15)

  1. モバイル装置アプリのライフサイクルを変更する方法であって、
    コンピュータが、コンピュータソフトウェアアプリケーションに対応するアプリケーションマニフェストファイルおよびバイトコードファイルを提供するステップと、
    前記コンピュータが、アプリケーションクラスのオリジナルメソッドの名前を前記バイトコードファイル内の改名メソッドの名前に変更するステップと、
    前記オリジナルメソッドの名前を有し、前記改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたラッパーメソッドを、前記コンピュータが、前記バイトコードファイル内の前記アプリケーションクラスに挿入するステップと、
    前記コンピュータが、オリジナルコンテンツプロバイダクラスの名前を、前記アプリケーションマニフェストファイル内の変更されたコンテンツプロバイダクラスの名前に変更するステップと、
    前記変更されたコンテンツプロバイダクラスの名前を有し、前記オリジナルコンテンツプロバイダクラスのメソッドを呼び出すためのコールを転送する前に、前記オリジナルコンテンツプロバイダクラスがインスタンス化されたか否かをチェックするように構成されたラッパーコンテンツプロバイダクラスを、前記コンピュータが、前記バイトコードファイル内で作成するステップとを含む、方法。
  2. 前記コンピュータが、アクティビティクラスのオリジナルメソッドの名前を、前記バイトコードファイル内の前記アクティビティクラスの改名メソッドの名前に変更するステップと、
    前記アクティビティクラスの前記オリジナルメソッドの名前を有し、前記アクティビティクラスの前記改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたダミーメソッドを、前記コンピュータが、前記バイトコードファイル内の前記アクティビティクラスに挿入するステップとをさらに含む、請求項1に記載の方法。
  3. 前記アプリケーションマニフェストファイル内のすべてのコンテンツプロバイダクラスの名前は、変更される、請求項1または2に記載の方法。
  4. 前記方法は、前記コンピュータが、前記ラッパーメソッドによってポリシーを読み取るステップをさらに含み、
    前記認証または暗号化メソッドを呼び出すためのコールは、前記ポリシーに準拠する、請求項1〜3のいずれか1項に記載の方法。
  5. 前記ポリシーは、情報技術(IT)部署から、前記モバイル装置アプリをインストールしたモバイル装置に送信される、請求項4に記載の方法。
  6. 前記ラッパーメソッドは、モバイル装置マネージャアプリケーションを呼び出すためのコールを含む、請求項1〜5のいずれか1項に記載の方法。
  7. 前記オリジナルメソッドは、静的ブロック初期化を含む、請求項1〜6のいずれか1項に記載の方法。
  8. 前記オリジナルメソッドは、コンストラクタを含む、請求項1〜7のいずれかに記載の方法。
  9. 前記バイトコードファイル内のアプリケーション静的初期化メソッド、アプリケーションコンストラクタメソッド、アプリケーションattachBaseContext()メソッド、コンテンツプロバイダ静的初期化メソッド、コンテンツプロバイダコンストラクタメソッド、コンテンツプロバイダonCreate()メソッド、アプリケーションonCreate()メソッド、ランチャアクティビティ静的初期化メソッド、ランチャアクティビティコンストラクターメソッド、およびランチャアクティビティonCreate()メソッド、ランチャアクティビティonStart()メソッド、およびランチャアクティビティonResume()メソッドのすべての名前を、前記コンピュータが変更するステップをさらに含む、請求項8に記載の方法。
  10. onCreate()メソッド、onStart()メソッド、onStop()メソッド、onRestart()メソッド、onPause()メソッド、onResume()メソッド、またはonDestroy()メソッドを、前記コンピュータが、前記ラッパーコンテンツプロバイダクラスに挿入するステップをさらに含む、請求項1〜9のいずれか1項に記載の方法。
  11. 前記オリジナルメソッドの名前を変更するステップは、前記コンピュータが、前記オリジナルメソッドにプリフィックスまたはサフィックスを追加することによって、前記改名メソッドを作成するステップを含む、請求項1〜10のいずれか1項に記載の方法。
  12. 前記アプリケーションマニフェストファイルは、XML(拡張マークアップ言語)コードを含む、請求項1〜11のいずれかに記載の方法。
  13. 前記バイトコードファイルは、Google Android(登録商標)コンピュータアプリケーション用のGoogle Dalvik(登録商標)実行可能(DEX)なバイトコードファイルである、請求項1〜12のいずれか1項に記載の方法。
  14. 請求項1〜13のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
  15. モバイル装置アプリのライフサイクルを変更するためのコンピュータシステムであって、
    プロセッサと、
    前記プロセッサと動作可能に結合されたメモリとを備え、
    前記プロセッサは、前記メモリからの命令を実行し、
    前記命令は、
    コンピュータソフトウェアアプリケーションに対応するアプリケーションマニフェストファイルおよびバイトコードファイルを提供するためのプログラムコードと、
    アプリケーションクラスのオリジナルメソッドの名前を前記バイトコードファイル内の改名メソッドの名前に変更するためのプログラムコードと、
    前記オリジナルメソッドの名前を有し、前記改名メソッドを呼び出す前に、認証または暗号化メソッドを呼び出すように構成されたラッパーメソッドを、前記バイトコードファイル内の前記アプリケーションクラスに挿入するためのプログラムコードと、
    オリジナルコンテンツプロバイダクラスの名前を、前記アプリケーションマニフェストファイル内の変更されたコンテンツプロバイダクラスの名前に変更するためのプログラムコードと、
    前記変更されたコンテンツプロバイダクラスの名前を有し、前記オリジナルコンテンツプロバイダクラスのメソッドを呼び出すためのコールを転送する前に、前記オリジナルコンテンツプロバイダクラスがインスタンス化されたか否かをチェックするように構成されたラッパーコンテンツプロバイダクラスを、前記バイトコードファイル内で作成するためのプログラムコードとを含む、システム。
JP2017506745A 2014-09-24 2015-01-13 Androidアプリケーションのライフサイクルを変更することによって、コンテナ化ワークスペース環境内でアプリケーションの実行を管理する方法 Active JP6464256B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462054853P 2014-09-24 2014-09-24
US62/054,853 2014-09-24
US14/594,377 US9344422B2 (en) 2013-03-15 2015-01-12 Method to modify android application life cycle to control its execution in a containerized workspace environment
US14/594,377 2015-01-12
PCT/US2015/011136 WO2016048404A1 (en) 2014-09-24 2015-01-13 Method to modify android application life cycle to control its execution in a containerized workspace environment

Publications (2)

Publication Number Publication Date
JP2017531846A JP2017531846A (ja) 2017-10-26
JP6464256B2 true JP6464256B2 (ja) 2019-02-06

Family

ID=55581709

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017506745A Active JP6464256B2 (ja) 2014-09-24 2015-01-13 Androidアプリケーションのライフサイクルを変更することによって、コンテナ化ワークスペース環境内でアプリケーションの実行を管理する方法

Country Status (6)

Country Link
US (1) US10225287B2 (ja)
EP (1) EP3198418B1 (ja)
JP (1) JP6464256B2 (ja)
KR (1) KR102263913B1 (ja)
CN (1) CN106663018B (ja)
WO (1) WO2016048404A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645992B2 (en) 2010-08-21 2017-05-09 Oracle International Corporation Methods and apparatuses for interaction with web applications and web application data
US9722972B2 (en) 2012-02-26 2017-08-01 Oracle International Corporation Methods and apparatuses for secure communication
US9129112B2 (en) 2013-03-15 2015-09-08 Oracle International Corporation Methods, systems and machine-readable media for providing security services
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
WO2014145039A1 (en) 2013-03-15 2014-09-18 Oracle International Corporation Intra-computer protected communications between applications
CN106663018B (zh) 2014-09-24 2020-09-15 甲骨文国际公司 修改移动设备应用生命周期的***、方法、介质和设备
US11424931B2 (en) 2016-01-27 2022-08-23 Blackberry Limited Trusted execution environment
US10599409B2 (en) * 2016-02-02 2020-03-24 Blackberry Limited Application lifecycle operation queueing
CN107038056B (zh) * 2017-05-19 2018-03-16 中南大学 基于安卓平台的流式计算模式调度方法
CN107977281A (zh) * 2017-12-19 2018-05-01 深圳豪客互联网有限公司 偏好数据调用方法和装置
US11032342B2 (en) 2018-07-05 2021-06-08 Samsung Electronics Co., Ltd. System and method for device audio
BR102019000921A2 (pt) * 2019-01-16 2020-08-04 Samsung Eletrônica da Amazônia Ltda. Sistema para habilitar uma experiência de desktop completa com base em um dispositivo móvel
US20200334154A1 (en) * 2019-04-17 2020-10-22 XRSpace CO., LTD. Mobile device with a shared data structure and method for operating the same
CN110610097A (zh) * 2019-09-09 2019-12-24 杭州天宽科技有限公司 一种基于安卓应用的文件传输保密***
US11556351B1 (en) * 2021-10-13 2023-01-17 International Business Machines Corporation Facilitation of application containerization
KR20230142091A (ko) * 2022-04-01 2023-10-11 (주)잉카엔트웍스 Dex 파일 보호를 위한 보안 제공 장치와 방법 및 보안 실행 장치와 방법
CN116775172B (zh) * 2023-08-25 2023-11-03 成都太阳高科技有限责任公司 一种通过反射实现Android获取数据的方法及***

Family Cites Families (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2050433A1 (en) 1990-09-04 1992-03-05 Roger A. Stacy System for enhancing data transfer between application programs and communications programs in telecommunications systems
JP3196618B2 (ja) 1995-11-24 2001-08-06 株式会社日立製作所 パーソナルコンピュータおよびそれを用いた通信システム
AU2242697A (en) 1996-01-16 1997-08-11 Raptor Systems, Inc. Data encryption/decryption for network communication
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5892904A (en) 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US5923756A (en) 1997-02-12 1999-07-13 Gte Laboratories Incorporated Method for providing secure remote command execution over an insecure computer network
US7127741B2 (en) 1998-11-03 2006-10-24 Tumbleweed Communications Corp. Method and system for e-mail message transmission
US6317868B1 (en) 1997-10-24 2001-11-13 University Of Washington Process for transparently enforcing protection domains and access control as well as auditing operations in software components
US6151606A (en) 1998-01-16 2000-11-21 Visto Corporation System and method for using a workspace data manager to access, manipulate and synchronize network data
US6052739A (en) * 1998-03-26 2000-04-18 Sun Microsystems, Inc. Method and apparatus for object-oriented interrupt system
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
JP3756352B2 (ja) 1999-06-29 2006-03-15 富士通株式会社 コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体
US6484276B1 (en) * 1999-10-25 2002-11-19 Lucent Technologies Inc. Method and apparatus for providing extensible object-oriented fault injection
US6324648B1 (en) 1999-12-14 2001-11-27 Gte Service Corporation Secure gateway having user identification and password authentication
EP1122640A1 (en) 2000-01-31 2001-08-08 BRITISH TELECOMMUNICATIONS public limited company Apparatus for automatically generating source code
US6996808B1 (en) * 2000-02-12 2006-02-07 Microsoft Corporation Function injector
US20010047365A1 (en) * 2000-04-19 2001-11-29 Hiawatha Island Software Co, Inc. System and method of packaging and unpackaging files into a markup language record for network search and archive services
US20020099902A1 (en) * 2000-05-12 2002-07-25 Guillaume Comeau Methods and systems for applications to interact with hardware
EP1407360A4 (en) 2000-06-16 2009-08-12 Entriq Inc METHODS AND SYSTEMS FOR DISTRIBUTING CONTENT VIA A NETWORK IMPLEMENTING DISTRIBUTED CONDITIONAL ACCESS AGENTS AND SECURE AGENTS TO PERFORM DIGITAL RIGHTS MANAGEMENT (DRM)
US7000225B2 (en) * 2000-12-07 2006-02-14 International Business Machines Corporation Method for inserting global breakpoints
US20040024910A1 (en) 2001-06-01 2004-02-05 Marl Coyle B. Adaptive synchronization of service data
US7047562B2 (en) 2001-06-21 2006-05-16 Lockheed Martin Corporation Conditioning of the execution of an executable program upon satisfaction of criteria
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7111285B2 (en) 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
US7596565B2 (en) 2001-08-07 2009-09-29 Good Technology System and method for maintaining wireless file folders at a wireless device
US7243163B1 (en) 2001-08-07 2007-07-10 Good Technology, Inc. System and method for full wireless synchronization of a data processing apparatus with a messaging system
US7962622B2 (en) 2001-08-07 2011-06-14 Motorola Mobility, Inc. System and method for providing provisioning and upgrade services for a wireless device
US7631084B2 (en) 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US7159120B2 (en) 2001-11-19 2007-01-02 Good Technology, Inc. Method and system for protecting data within portable electronic devices
US6917945B2 (en) * 2002-02-04 2005-07-12 Microsoft Corporation Encoding and decoding methods and systems
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US20030182460A1 (en) * 2002-03-25 2003-09-25 Atul Khare Managed code modules dynamically invoking unmanaged code modules at arbitrary locations
US7788382B1 (en) 2002-03-26 2010-08-31 Good Technology, Inc. Server initiated synchronization
US7447799B2 (en) 2002-04-24 2008-11-04 Good Technology, Inc. System and method for automatically updating a wireless device
IL149977A0 (en) 2002-06-02 2009-02-11 Internet Forex Products Inc Generated applications
US8012219B2 (en) 2002-08-09 2011-09-06 Visto Corporation System and method for preventing access to data on a compromised remote device
EP1546892B1 (en) * 2002-09-04 2017-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Protecting mobile code against malicious hosts cross references to related applications
WO2004055659A1 (en) 2002-12-13 2004-07-01 Bea Systems, Inc. System and method for mobile communication
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7472401B2 (en) * 2003-02-28 2008-12-30 Bea Systems, Inc. Computer product for a dynamically generated wrapper class
US7512783B2 (en) 2003-03-14 2009-03-31 Naghian Siamaek Provision of security services for an ad-hoc network
US7275073B2 (en) 2003-05-07 2007-09-25 Good Technology, Inc. System and method for notifying mobile devices based on device type and network capabilities
US7890091B2 (en) 2003-05-08 2011-02-15 Good Technology, Inc. Collaborative data and intelligent synchronization for mobile devices
US7184801B2 (en) 2003-05-12 2007-02-27 Good Technology, Inc. Mobile application builder
US7716474B2 (en) 2003-05-12 2010-05-11 Byteblaze, Inc. Anti-piracy software protection system and method
US7451392B1 (en) 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
JP4744106B2 (ja) * 2003-08-06 2011-08-10 パナソニック株式会社 セキュアデバイス、情報処理端末、通信システム及び通信方法
US7363581B2 (en) 2003-08-12 2008-04-22 Accenture Global Services Gmbh Presentation generator
US7493622B2 (en) * 2003-08-12 2009-02-17 Hewlett-Packard Development Company, L.P. Use of thread-local storage to propagate application context in Java 2 enterprise edition (J2EE) applications
US20050154886A1 (en) 2004-01-12 2005-07-14 International Business Machines Corporation Declarative trust model between reverse proxy server and websphere application server
JP4179553B2 (ja) 2004-03-15 2008-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 表示制御情報生成方法、表示制御情報を生成するコンピュータ、およびプログラム
US7549048B2 (en) 2004-03-19 2009-06-16 Microsoft Corporation Efficient and secure authentication of computing systems
US7620001B2 (en) 2004-10-13 2009-11-17 Good Technology, Inc. Communication system and method with mobile devices
US8156488B2 (en) 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
US8001082B1 (en) 2004-10-28 2011-08-16 Good Technology, Inc. System and method of data security in synchronizing data with a wireless device
US7530059B2 (en) * 2005-02-18 2009-05-05 International Business Machines Corporation Method for inlining native functions into compiled java code
US7805495B2 (en) 2005-03-31 2010-09-28 Google Inc. Method and system for transferring web browser data between web browsers
US7970386B2 (en) 2005-06-03 2011-06-28 Good Technology, Inc. System and method for monitoring and maintaining a wireless device
US8295492B2 (en) 2005-06-27 2012-10-23 Wells Fargo Bank, N.A. Automated key management system
US7836306B2 (en) 2005-06-29 2010-11-16 Microsoft Corporation Establishing secure mutual trust using an insecure password
US20070016961A1 (en) 2005-07-11 2007-01-18 Vogler Dean H Application revocation using an application revocation list in a portable electronic device
US8112789B2 (en) 2005-10-11 2012-02-07 Citrix Systems, Inc. Systems and methods for facilitating distributed authentication
US7877781B2 (en) 2005-12-29 2011-01-25 Nextlabs, Inc. Enforcing universal access control in an information management system
TW200727174A (en) * 2006-01-03 2007-07-16 Tatung Co Ltd Method of testing a hardware circuit block written in a hardware description language
KR100823260B1 (ko) 2006-01-19 2008-04-17 삼성전자주식회사 도메인에 가입하지 않은 기기로 콘텐트를 전송하는 방법 및장치
US7702322B1 (en) 2006-02-27 2010-04-20 Good Technology, Llc Method and system for distributing and updating software in wireless devices
US7620392B1 (en) 2006-02-27 2009-11-17 Good Technology, Inc. Method and system for distributing and updating software in wireless devices
US7849451B2 (en) 2006-03-02 2010-12-07 Oracle America Inc. Dynamic delegation chain for runtime adaptation of a code unit to an environment
US7739744B2 (en) 2006-03-31 2010-06-15 Novell, Inc. Methods and systems for multifactor authentication
US8838536B2 (en) 2006-04-18 2014-09-16 Sandeep Bhanote Method and apparatus for mobile data collection and management
US8005778B2 (en) * 2006-04-24 2011-08-23 Mark Montgomery Modular system for optimizing knowledge yield in the digital workplace
US8645973B2 (en) 2006-09-22 2014-02-04 Oracle International Corporation Mobile applications
US9055107B2 (en) 2006-12-01 2015-06-09 Microsoft Technology Licensing, Llc Authentication delegation based on re-verification of cryptographic evidence
CA2578466A1 (en) 2007-01-12 2008-07-12 Truecontext Corporation Method and system for customizing a mobile application using a web-based interface
JP4327865B2 (ja) 2007-03-29 2009-09-09 株式会社東芝 コンテンツ処理装置、暗号処理方法及びプログラム
US8627409B2 (en) 2007-05-15 2014-01-07 Oracle International Corporation Framework for automated dissemination of security metadata for distributed trust establishment
KR20080103225A (ko) 2007-05-23 2008-11-27 삼성전자주식회사 컨텐츠의 암호화 전송 방법 및 복호화 방법과 그 장치
US20080320566A1 (en) 2007-06-25 2008-12-25 Microsoft Corporation Device provisioning and domain join emulation over non-secured networks
US8918865B2 (en) 2008-01-22 2014-12-23 Wontok, Inc. System and method for protecting data accessed through a network connection
US20090228716A1 (en) * 2008-02-08 2009-09-10 Pado Metawsre Ab Method and system for distributed coordination of access to digital files
US8555380B2 (en) 2008-02-28 2013-10-08 Intel Corporation Automatic modification of executable code
US8219592B2 (en) * 2008-02-29 2012-07-10 International Business Machines Corporation Method and system for using overlay manifests to encode differences between virtual machine images
US8776176B2 (en) 2008-05-16 2014-07-08 Oracle America, Inc. Multi-factor password-authenticated key exchange
US20090307191A1 (en) 2008-06-10 2009-12-10 Li Hong C Techniques to establish trust of a web page to prevent malware redirects from web searches or hyperlinks
US8261320B1 (en) 2008-06-30 2012-09-04 Symantec Corporation Systems and methods for securely managing access to data
US8135571B2 (en) * 2008-08-14 2012-03-13 International Business Machines Corporation Validating manufacturing test rules pertaining to an electronic component
US9286045B2 (en) 2008-08-18 2016-03-15 Infosys Limited Method and system for providing applications to various devices
US8413113B2 (en) 2008-11-25 2013-04-02 Sap Aktiengeselleschaft Dynamic naming conventions in a source code editor
TW201042973A (en) 2008-11-28 2010-12-01 Ibm Token-based client to server authentication of a secondary communication channel by way of primary authenticated communication channels
US8296828B2 (en) 2008-12-16 2012-10-23 Microsoft Corporation Transforming claim based identities to credential based identities
US8284933B2 (en) 2009-03-19 2012-10-09 Ca, Inc. Encrypting variable-length passwords to yield fixed-length encrypted passwords
US20100281475A1 (en) 2009-05-04 2010-11-04 Mobile On Services, Inc. System and method for mobile smartphone application development and delivery
US8650479B2 (en) 2009-08-05 2014-02-11 International Business Machines Corporation Guided attachment of policies in a service registry environment
JP5596159B2 (ja) 2009-10-12 2014-09-24 セーフネット インコーポレイテッド シェル・コードに埋め込まれたソフトウェア・ライセンス
US8468586B2 (en) 2009-11-03 2013-06-18 Oracle International Corporation Methods and systems for implementing policy based trust management
US20110185040A1 (en) 2010-01-28 2011-07-28 Schmidt James H System and Method for Independent Aspect Ratio Touch Screen Optimization
EP2553570B1 (en) 2010-03-31 2018-08-15 Irdeto B.V. Method for linking and loading to protect applications
US9645992B2 (en) 2010-08-21 2017-05-09 Oracle International Corporation Methods and apparatuses for interaction with web applications and web application data
US20120066601A1 (en) 2010-09-14 2012-03-15 Apple Inc. Content configuration for device platforms
US8549656B2 (en) 2011-02-11 2013-10-01 Mocana Corporation Securing and managing apps on a device
US8955142B2 (en) * 2011-03-21 2015-02-10 Mocana Corporation Secure execution of unsecured apps on a device
US9032493B2 (en) 2011-03-31 2015-05-12 Intel Corporation Connecting mobile devices, internet-connected vehicles, and cloud services
CN102236757A (zh) * 2011-06-30 2011-11-09 北京邮电大学 一种适用于Android***的软件保护方法及***
US20140032733A1 (en) * 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US8595841B2 (en) 2011-11-09 2013-11-26 Kaprica Security, Inc. System and method for bidirectional trust between downloaded applications and mobile devices including a secure charger and malware scanner
US9722972B2 (en) 2012-02-26 2017-08-01 Oracle International Corporation Methods and apparatuses for secure communication
US20130262687A1 (en) 2012-03-29 2013-10-03 Ryan L. Avery Connecting a mobile device as a remote control
US20130283335A1 (en) * 2012-04-19 2013-10-24 AppSense, Inc. Systems and methods for applying policy wrappers to computer applications
US9424554B2 (en) * 2012-05-07 2016-08-23 Citrix Systems, Inc. Enterprise managed systems with collaborative application support
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US8782409B2 (en) 2012-06-04 2014-07-15 Private Giant Confidential message exchange using benign, context-aware cover message generation
US8832847B2 (en) 2012-07-10 2014-09-09 International Business Machines Corporation Coordinating data sharing among applications in mobile devices
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9326145B2 (en) * 2012-12-16 2016-04-26 Aruba Networks, Inc. System and method for application usage controls through policy enforcement
US9535674B2 (en) * 2012-12-21 2017-01-03 Bmc Software, Inc. Application wrapping system and method
US8887150B2 (en) * 2013-03-12 2014-11-11 Bluebox Security Inc. Methods for dynamic mobile application behavior modification subject to a behavior policy
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
US9129112B2 (en) 2013-03-15 2015-09-08 Oracle International Corporation Methods, systems and machine-readable media for providing security services
WO2014145039A1 (en) 2013-03-15 2014-09-18 Oracle International Corporation Intra-computer protected communications between applications
US9336384B2 (en) * 2013-04-24 2016-05-10 Symantec Corporation Systems and methods for replacing application methods at runtime
US9559766B2 (en) * 2013-05-10 2017-01-31 Elwha Llc Dynamic point to point mobile network including intermediate device aspects system and method
US9158935B2 (en) * 2013-06-07 2015-10-13 Microsoft Technology Licensing, Llc Automatic mediation of resource access in mobile applications
US9842032B2 (en) * 2013-08-27 2017-12-12 Red Hat, Inc. Memory first live snapshot
US10165571B2 (en) * 2013-09-11 2018-12-25 Freebit Co., Ltd. Application state change notification program and method therefor
IN2014MU00435A (ja) * 2014-02-06 2015-09-25 Tata Consultancy Services Ltd
US9703551B2 (en) * 2014-04-28 2017-07-11 Ca, Inc. Modifying mobile application binaries to call external libraries
CN106663018B (zh) 2014-09-24 2020-09-15 甲骨文国际公司 修改移动设备应用生命周期的***、方法、介质和设备

Also Published As

Publication number Publication date
JP2017531846A (ja) 2017-10-26
CN106663018B (zh) 2020-09-15
KR102263913B1 (ko) 2021-06-14
KR20170061664A (ko) 2017-06-05
EP3198418A1 (en) 2017-08-02
CN106663018A (zh) 2017-05-10
US10225287B2 (en) 2019-03-05
EP3198418B1 (en) 2020-04-22
WO2016048404A1 (en) 2016-03-31
US20180337955A1 (en) 2018-11-22

Similar Documents

Publication Publication Date Title
JP6464256B2 (ja) Androidアプリケーションのライフサイクルを変更することによって、コンテナ化ワークスペース環境内でアプリケーションの実行を管理する方法
US11244061B2 (en) Data encryption service
US10057293B2 (en) Method to modify android application life cycle to control its execution in a containerized workspace environment
US9781098B2 (en) Generic server framework for device authentication and management and a generic framework for endpoint command dispatch
CN108140098B (zh) 建立容器之间的信任
CN106575305B (zh) 反向代理服务器内的服务
US9866640B2 (en) Cookie based session management
KR102111180B1 (ko) 동적 프리젠테이션과 데이터 구성을 사용하여 보안 모바일 협력 애플리케이션을 구축하기 위한 플랫폼
US11934541B2 (en) Securely sharing selected fields in a blockchain with runtime access determination
US11750590B2 (en) Single sign-on (SSO) user techniques using client side encryption and decryption
JP2018512106A (ja) スマートイメージを使用したフィッシング対策のための方法およびシステム
US20230224146A1 (en) Quorum-based authorization
US20230283465A1 (en) Keystore service for encryption in a secure service enclave

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170807

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181127

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: 20181211

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190107

R150 Certificate of patent or registration of utility model

Ref document number: 6464256

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250