欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在Windows系統(tǒng)上運行Android應(yīng)用程序的方法及裝置與流程

文檔序號:12363085閱讀:354來源:國知局
在Windows系統(tǒng)上運行Android應(yīng)用程序的方法及裝置與流程

本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種在Windows系統(tǒng)上運行Android應(yīng)用程序的方法,及一種在Windows系統(tǒng)上運行Android應(yīng)用程序的裝置。



背景技術(shù):

隨著計算機技術(shù)的不斷發(fā)展,人們的生活越來越依賴于各種應(yīng)用程序,人們對應(yīng)用程序的使用需求也越來越多樣化,用戶在Android操作系統(tǒng)的移動終端上使用的游戲類應(yīng)用程序時,用戶希望在Windows操作系統(tǒng)的PC(Personal Computer,個人電腦)端也能實現(xiàn)對該應(yīng)用程序的操作體驗,使得用戶能夠在更大的顯示屏中感受更加便捷、流暢的操作體驗,從而解決由于移動終端屏幕較小而帶來的視覺體驗度不高的問題;同時,可以避免移動終端的處理器的因發(fā)熱等原因?qū)е碌挠螒蚩ㄋ赖那闆r,以及避免移動終端網(wǎng)絡(luò)信號不穩(wěn)定導(dǎo)致用戶在操作游戲的過程中發(fā)生中斷等情況。

現(xiàn)有技術(shù)中,首先需要在Windows操作系統(tǒng)的PC端安裝虛擬機,通過在該虛擬機中運行虛擬的Android操作系統(tǒng),隨后在該虛擬的Android操作系統(tǒng)中安裝并運行Android應(yīng)用程序。一方面,在安裝虛擬機的過程中,必須安裝該虛擬機的全套內(nèi)核級的驅(qū)動程序,在應(yīng)用程序的運行過程中調(diào)用各內(nèi)核驅(qū)動的過程極為復(fù)雜,且耗費系統(tǒng)資源;另一方面,虛擬機的運行過程本身需要耗費PC端的大量硬盤空間和內(nèi)存,PC端大量的系統(tǒng)資源被占用,將導(dǎo)致降低PC端各進程運行的響應(yīng)速度;再一方面,現(xiàn)有技術(shù)的實現(xiàn)極大地依賴于對PC端的CPU(Central Processing Unit,中央處理器)的虛擬化硬件加速技術(shù),在過去的幾十年里,即使硬件虛擬化技術(shù)快速的普及,使得計算機的性能越來越好,但是為了避免各種存在的安全隱患發(fā)生,超過70%的主板在制造完成時,在BIOS(Basic Input Output System,基本輸入輸出系統(tǒng))上禁止了硬件虛擬化技術(shù)的實現(xiàn),因此導(dǎo)致大量用戶的需求無法被滿足,降低了用戶體驗;進一步地,虛擬機本質(zhì)上是涉及給具備專業(yè)知識的商業(yè)用戶和極客用戶使用,將給普通用戶在使用過程中帶來極大的操作困難,從而限制了用戶群體的拓展。



技術(shù)實現(xiàn)要素:

為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:

本發(fā)明的實施例提出了一種在Windows系統(tǒng)上運行Android應(yīng)用程序的方法,包括:

響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機;

開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件;

通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源;

在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,以運行應(yīng)用程序。

優(yōu)選地,加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,包括:

通過預(yù)定啟動進程加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件;

其中,在Activity的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,包括:

在Activity的生命周期中,通過預(yù)定啟動進程完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

優(yōu)選地,預(yù)定的引擎文件,包括Android系統(tǒng)的DEX相關(guān)文件、Android系統(tǒng)動態(tài)鏈接庫的相關(guān)文件和應(yīng)用程序動態(tài)鏈接庫的相關(guān)文件。

可選地,該方法還包括:

接收應(yīng)用程序的Windows操作指令,通過Android虛擬機將Windows操作指令轉(zhuǎn)換為相應(yīng)的Android操作指令。

可選地,該方法還包括:

將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

應(yīng)用程序根據(jù)接收到的轉(zhuǎn)換后的Android操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)的操作。

優(yōu)選地,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,包括以下至少一種情形:

根據(jù)Android虛擬機的通知消息,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

根據(jù)應(yīng)用程序的調(diào)用指令,將調(diào)用獲取到的轉(zhuǎn)換后的Android操作指令反饋至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

本發(fā)明的另一實施例提出了一種在Windows系統(tǒng)上運行Android應(yīng)用程序的裝置,包括:

第一加載模塊,用于響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機;

第二加載模塊,用于開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

第三加載模塊,用于通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件;

調(diào)用模塊,用于通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源;

第四加載模塊,用于在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,以運行應(yīng)用程序。

優(yōu)選地,第一加載模塊,包括:

加載單元,用于通過預(yù)定啟動進程加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件;

其中,第四加載模塊用于在Activity的生命周期中,通過預(yù)定啟動進程完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

優(yōu)選地,預(yù)定的引擎文件,包括Android系統(tǒng)的DEX相關(guān)文件、Android系統(tǒng)動態(tài)鏈接庫的相關(guān)文件和應(yīng)用程序動態(tài)鏈接庫的相關(guān)文件。

可選地,該裝置還包括:

轉(zhuǎn)換模塊,用于接收應(yīng)用程序的Windows操作指令,通過Android虛擬機將Windows操作指令轉(zhuǎn)換為相應(yīng)的Android操作指令。

可選地,該裝置還包括:

發(fā)送模塊,用于將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

執(zhí)行模塊,用于應(yīng)用程序根據(jù)接收到的轉(zhuǎn)換后的Android操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)的操作。

優(yōu)選地,發(fā)送模塊,用于根據(jù)Android虛擬機的通知消息,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;或

根據(jù)應(yīng)用程序的調(diào)用指令,將調(diào)用獲取到的轉(zhuǎn)換后的Android操作指令反饋至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

本發(fā)明的實施例中,提出了一種在Windows系統(tǒng)上運行Android應(yīng)用程序的方案,響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機,實現(xiàn)了Android虛擬機在Windows系統(tǒng)上的正常運行,并為實現(xiàn)Android應(yīng)用程序在Windows系統(tǒng)上運行提供了重要的前提保障;開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件,通過在自定義簡化的Android系統(tǒng)中運行應(yīng)用程序,實現(xiàn)了Android應(yīng)用程序在運行過程中占用較少的系統(tǒng)資源,解決了Android應(yīng)用程序在Windows系統(tǒng)中運行卡、慢等問題;通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源,在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,徹底實現(xiàn)了Android應(yīng)用程序在Windows系統(tǒng)中以原生應(yīng)用程序的形式正常運行,同時,無需用戶的復(fù)雜操作方式即可實現(xiàn)Android應(yīng)用程序在Windows系統(tǒng)中的正常、快速運行,進一步地,提高了用戶的使用體驗。

本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。

附圖說明

本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:

圖1為本發(fā)明中一個實施例的在Windows系統(tǒng)上運行Android應(yīng)用程序的方法的流程圖;

圖2為本發(fā)明中另一實施例的在Windows系統(tǒng)上運行Android應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。

具體實施方式

下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。

圖1為本發(fā)明中一個實施例的在Windows系統(tǒng)上運行Android應(yīng)用程序的方法的流程圖。

本發(fā)明的實施例中,各步驟所執(zhí)行的內(nèi)容概述如下:步驟S110:響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機;步驟S120:開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;步驟S130:通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件;步驟S140:通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源;步驟S150:在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,以運行應(yīng)用程序。

本發(fā)明的實施例中,提出了一種在Windows系統(tǒng)上運行Android應(yīng)用程序的方法,響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機,實現(xiàn)了Android虛擬機在Windows系統(tǒng)上的正常運行,并為實現(xiàn)Android應(yīng)用程序在Windows系統(tǒng)上運行提供了重要的前提保障;開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件,通過在自定義簡化的Android系統(tǒng)中運行應(yīng)用程序,實現(xiàn)了Android應(yīng)用程序在運行過程中占用較少的系統(tǒng)資源,解決了Android應(yīng)用程序在Windows系統(tǒng)中運行卡、慢等問題;通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源,在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,徹底實現(xiàn)了Android應(yīng)用程序在Windows系統(tǒng)中以原生應(yīng)用程序的形式正常運行,同時,無需用戶的復(fù)雜操作方式即可實現(xiàn)Android應(yīng)用程序在Windows系統(tǒng)中的正常、快速運行,進一步地,提高了用戶的使用體驗。以下針對各個步驟的具體實現(xiàn)做進一步的說明:

步驟S110:響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機。

例如,Android操作系統(tǒng)的應(yīng)用層是用Java語言編寫的,因此Android虛擬機運行的過程中,將加載Java的相關(guān)文件,在Android虛擬機中運行應(yīng)用程序App1時,Android虛擬機運行之后首先加載Android虛擬機的相關(guān)必備庫,如運行Android系統(tǒng)的Java虛擬機Dalvik所必需的自定義的CRT相關(guān)庫,包括已實現(xiàn)libc.so的接口、OpenGL ES接口、OpenSL ES接口以及一部分Android NDK(Native Development Kit,原生開發(fā)工具包)接口等,隨后Android虛擬機通過加載預(yù)定格式的Linux可執(zhí)行文件,如ELF格式的相關(guān)文件,以加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,如預(yù)定的Android系統(tǒng)的Java虛擬機Dalvik的相關(guān).so文件和數(shù)學(xué)庫libm.so的相關(guān)文件等,以啟動Android系統(tǒng)的Java虛擬機Dalvik。

優(yōu)選地,步驟S110中加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件的步驟,具體包括步驟S111(圖中未示出);步驟S111:通過預(yù)定啟動進程加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件。

例如,通過調(diào)用自定義的Android Framework的相關(guān)類和其他Java相關(guān)類的進程,來啟動加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,如預(yù)定的Android系統(tǒng)的Java虛擬機Dalvik的相關(guān).so文件。

步驟S120:開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

例如,在Android虛擬機中運行應(yīng)用程序App1時,Android虛擬機運行之后加載Android虛擬機的相關(guān)必備庫之后,可開始加載應(yīng)用程序App1的動態(tài)鏈接庫相關(guān)文件,如App1的相關(guān).so文件。

步驟S130:通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件。

其中,預(yù)定的引擎文件,包括Android系統(tǒng)的DEX相關(guān)文件、Android系統(tǒng)動態(tài)鏈接庫的相關(guān)文件和應(yīng)用程序動態(tài)鏈接庫的相關(guān)文件。

例如,啟動Android系統(tǒng)的Java虛擬機Dalvik后,加載應(yīng)用程序App1中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件,如預(yù)定的Android系統(tǒng)的系統(tǒng)庫的相關(guān).so文件,其中,預(yù)定的Android系統(tǒng)的系統(tǒng)庫的相關(guān).so文件為簡化的Android操作系統(tǒng),該預(yù)定的Android系統(tǒng)的系統(tǒng)庫的相關(guān).so文件中包括了Android系統(tǒng)的必備相關(guān)文件,刪除了在Windows中不必要的Android系統(tǒng)文件,如Android系統(tǒng)中電源管理的相關(guān)文件等;Android系統(tǒng)的DEX相關(guān)文件,如用于封裝實現(xiàn)Android各個組件的程序代碼的classes.dex代碼文件;以及App1相關(guān).so文件。

步驟S140:通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源。

例如,通過調(diào)用自定義的Android Framework的相關(guān)類和其他Java相關(guān)類的進程,調(diào)用Android系統(tǒng)Activity資源。在Android中,Activity中所有操作都與用戶密切相關(guān),是一個負責(zé)與用戶交互的組件。

需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,Android操作系統(tǒng)有其不同于其他操作系統(tǒng)的原理,Android為開發(fā)者提供四大組件,具體指Activity、Service、Broadcast Receiver以及Content Provider等組件。其中,Content Provider屬于Android應(yīng)用程序的組件之一,作為應(yīng)用程序之間唯一的共享數(shù)據(jù)的途徑,Content Provider主要的功能就是存儲并檢索數(shù)據(jù)以及向其他應(yīng)用程序提供訪問數(shù)據(jù)的接口;Activity是Android應(yīng)用中負責(zé)與用戶交互的組件;Service通常位于后臺運行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面,一個Service組件被運行起來之后,它將擁有自己獨立的生命周期,Service組件通常用于為其他組件提供后臺服務(wù)或監(jiān)控其他組件的運行狀態(tài);Broadcast Receiver代表廣播消息接收器。

步驟S150:在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,以運行應(yīng)用程序。

優(yōu)選地,在Activity的生命周期中,通過預(yù)定啟動進程完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

在Android中,Activity生命周期是指Activity從啟動到銷毀的過程。在Activity資源的生命周期中,例如,通過調(diào)用自定義的Android Framework的相關(guān)類和其他Java相關(guān)類的進程,完成加載應(yīng)用程序App1的相關(guān).so文件,以運行App1。

在一優(yōu)選實施例中,該方法還包括步驟S160(圖中未示出);步驟S160:接收應(yīng)用程序的Windows操作指令,通過Android虛擬機將Windows操作指令轉(zhuǎn)換為相應(yīng)的Android操作指令。

例如,由于Android虛擬機里有自定義的CRT庫以及其它底層庫,可以支持運行通過加載預(yù)定格式的Linux可執(zhí)行文件,如ELF格式的相關(guān)文件,以加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,如加載libdvm.so(即Android系統(tǒng)的Java虛擬機Dalvik),因此用戶在Windows操作系統(tǒng)中執(zhí)行應(yīng)用程序App1的相關(guān)操作,如點擊鼠標(biāo)的操作,當(dāng)接收到App1點擊鼠標(biāo)的指令后,通過Android虛擬機將Windows點擊鼠標(biāo)的操作指令轉(zhuǎn)換為相應(yīng)的Android點擊鼠標(biāo)的操作指令,以實現(xiàn)App1的正常運行。

在一優(yōu)選實施例中,該方法還包括步驟S170(圖中未示出)和步驟S180(圖中未示出);步驟S170:將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;步驟S180:應(yīng)用程序根據(jù)接收到的轉(zhuǎn)換后的Android操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)的操作。

優(yōu)選地,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,包括以下至少一種情形:

根據(jù)Android虛擬機的通知消息,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

根據(jù)應(yīng)用程序的調(diào)用指令,將調(diào)用獲取到的轉(zhuǎn)換后的Android操作指令反饋至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

例如,根據(jù)Android系統(tǒng)的Java虛擬機Dalvik的中的反射機制及JNI(Java Native Interface,Java本地接口),其中,JNI用于讓Java和其他語言編寫的代碼進行交互,將轉(zhuǎn)換后的Android操作指令,如轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令發(fā)送至App1的相關(guān).so文件,App1根據(jù)接收到轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)鼠標(biāo)點擊的操作。

需要說明的是,本實施例所采用的反射機制可以為Java反射機制,Java反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法;這種動態(tài)獲取信息以及動態(tài)調(diào)用對象的方法的功能即為Java語言的反射機制。

又例如,據(jù)應(yīng)用程序App1調(diào)用Windows操作系統(tǒng)中鼠標(biāo)點擊的操作指令,將轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令,通過預(yù)定的調(diào)用接口,發(fā)送至App1的相關(guān).so文件,App1根據(jù)接收到轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)鼠標(biāo)點擊的操作。

圖2為本發(fā)明中另一實施例的在Windows系統(tǒng)上運行Android應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。

本發(fā)明的實施例中,各模塊所執(zhí)行的內(nèi)容概述如下:第一加載模塊210響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機;第二加載模塊220開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;第三加載模塊230通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件;調(diào)用模塊240通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源;第四加載模塊250在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,以運行應(yīng)用程序。

本發(fā)明的實施例中,提出了一種在Windows系統(tǒng)上運行Android應(yīng)用程序的裝置,響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機,實現(xiàn)了Android虛擬機在Windows系統(tǒng)上的正常運行,并為實現(xiàn)Android應(yīng)用程序在Windows系統(tǒng)上運行提供了重要的前提保障;開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件,通過在自定義簡化的Android系統(tǒng)中運行應(yīng)用程序,實現(xiàn)了Android應(yīng)用程序在運行過程中占用較少的系統(tǒng)資源,解決了Android應(yīng)用程序在Windows系統(tǒng)中運行卡、慢等問題;通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源,在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,徹底實現(xiàn)了Android應(yīng)用程序在Windows系統(tǒng)中以原生應(yīng)用程序的形式正常運行,同時,無需用戶的復(fù)雜操作方式即可實現(xiàn)Android應(yīng)用程序在Windows系統(tǒng)中的正常、快速運行,進一步地,提高了用戶的使用體驗。以下針對各個模塊的具體實現(xiàn)做進一步的說明:

第一加載模塊210響應(yīng)啟動應(yīng)用程序的指令,通過加載預(yù)定格式的Linux可執(zhí)行文件來加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件以啟動Android虛擬機。

例如,Android操作系統(tǒng)的應(yīng)用層是用Java語言編寫的,因此Android虛擬機運行的過程中,將加載Java的相關(guān)文件,在Android虛擬機中運行應(yīng)用程序App1時,Android虛擬機運行之后首先加載Android虛擬機的相關(guān)必備庫,如Android系統(tǒng)的Java虛擬機Dalvik的自定義的CRT相關(guān)庫,以實現(xiàn)libc.so的接口、OpenGL ES接口、OpenSL ES接口以及一部分Android NDK(Native Development Kit,原生開發(fā)工具包)接口,隨后Android虛擬機通過加載預(yù)定格式的Linux可執(zhí)行文件,如ELF格式的相關(guān)文件,以加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,如預(yù)定的Android系統(tǒng)的Java虛擬機Dalvik的相關(guān).so文件和數(shù)學(xué)庫libm.so的相關(guān)文件等,以啟動Android系統(tǒng)的Java虛擬機Dalvik。

優(yōu)選地,第一加載模塊210包括加載單元(圖中未示出);加載單元通過預(yù)定啟動進程加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件。

例如,通過調(diào)用自定義的Android Framework的相關(guān)類和其他Java相關(guān)類的進程,來啟動加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,如預(yù)定的Android系統(tǒng)的Java虛擬機Dalvik的相關(guān).so文件。

第二加載模塊220開始加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

例如,在Android虛擬機中運行應(yīng)用程序App1時,Android虛擬機運行之后加載Android虛擬機的相關(guān)必備庫之后,可開始加載應(yīng)用程序App1的動態(tài)鏈接庫相關(guān)文件,如App1的相關(guān).so文件。

第三加載模塊230通過啟動Android虛擬機,加載應(yīng)用程序中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件。

其中,預(yù)定的引擎文件,包括Android系統(tǒng)的DEX相關(guān)文件、Android系統(tǒng)動態(tài)鏈接庫的相關(guān)文件和應(yīng)用程序動態(tài)鏈接庫的相關(guān)文件。

例如,啟動Android系統(tǒng)的Java虛擬機Dalvik后,加載應(yīng)用程序App1中預(yù)定的引擎文件和相關(guān)可執(zhí)行文件,如預(yù)定的Android系統(tǒng)的系統(tǒng)庫的相關(guān).so文件,其中,預(yù)定的Android系統(tǒng)的系統(tǒng)庫的相關(guān).so文件為簡化的Android操作系統(tǒng),該預(yù)定的Android系統(tǒng)的系統(tǒng)庫的相關(guān).so文件中包括了Android系統(tǒng)的必備相關(guān)文件,刪除了在Windows中不必要的Android系統(tǒng)文件,如Android系統(tǒng)中電源管理的相關(guān)文件等;Android系統(tǒng)的DEX相關(guān)文件,如用于封裝實現(xiàn)Android各個組件的程序代碼的classes.dex代碼文件;以及App1相關(guān).so文件。

調(diào)用模塊240通過調(diào)用預(yù)定的啟動進程,調(diào)用應(yīng)用程序?qū)?yīng)的Activity資源。

例如,通過調(diào)用自定義的Android Framework的相關(guān)類和其他Java相關(guān)類的進程,調(diào)用Android系統(tǒng)Activity資源。在Android中,Activity中所有操作都與用戶密切相關(guān),是一個負責(zé)與用戶交互的組件。

需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,Android操作系統(tǒng)有其不同于其他操作系統(tǒng)的原理,Android為開發(fā)者提供四大組件,具體指Activity、Service、Broadcast Receiver以及Content Provider等組件。其中,Content Provider屬于Android應(yīng)用程序的組件之一,作為應(yīng)用程序之間唯一的共享數(shù)據(jù)的途徑,Content Provider主要的功能就是存儲并檢索數(shù)據(jù)以及向其他應(yīng)用程序提供訪問數(shù)據(jù)的接口;Activity是Android應(yīng)用中負責(zé)與用戶交互的組件;Service通常位于后臺運行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面,一個Service組件被運行起來之后,它將擁有自己獨立的生命周期,Service組件通常用于為其他組件提供后臺服務(wù)或監(jiān)控其他組件的運行狀態(tài);Broadcast Receiver代表廣播消息接收器。

第四加載模塊250在Activity資源的生命周期中,完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,以運行應(yīng)用程序。

優(yōu)選地,在Activity的生命周期中,通過預(yù)定啟動進程完成加載應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

在Android中,Activity生命周期是指Activity從啟動到銷毀的過程。在Activity資源的生命周期中,例如,通過調(diào)用自定義的Android Framework的相關(guān)類和其他Java相關(guān)類的進程,完成加載應(yīng)用程序App1的相關(guān).so文件,以運行App1。

在一優(yōu)選實施例中,該裝置還包括轉(zhuǎn)換模塊(圖中未示出);轉(zhuǎn)換模塊接收應(yīng)用程序的Windows操作指令,通過Android虛擬機將Windows操作指令轉(zhuǎn)換為相應(yīng)的Android操作指令。

例如,由于Android虛擬機里有自定義的CRT庫以及其它底層庫,可以支持運行通過加載預(yù)定格式的Linux可執(zhí)行文件,如ELF格式的相關(guān)文件,以加載Android虛擬機的動態(tài)鏈接庫相關(guān)文件,如加載libdvm.so(即Android系統(tǒng)的Java虛擬機Dalvik),因此用戶在Windows操作系統(tǒng)中執(zhí)行應(yīng)用程序App1的相關(guān)操作,如點擊鼠標(biāo)的操作,當(dāng)接收到App1點擊鼠標(biāo)的指令后,通過Android虛擬機將Windows點擊鼠標(biāo)的操作指令轉(zhuǎn)換為相應(yīng)的Android點擊鼠標(biāo)的操作指令,以實現(xiàn)App1的正常運行。

在一優(yōu)選實施例中,該裝置還包括發(fā)送模塊(圖中未示出)和執(zhí)行模塊(圖中未示出);發(fā)送模塊將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;執(zhí)行模塊應(yīng)用程序根據(jù)接收到的轉(zhuǎn)換后的Android操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)的操作。

優(yōu)選地,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件,包括以下至少一種情形:

根據(jù)Android虛擬機的通知消息,將轉(zhuǎn)換后的Android操作指令發(fā)送至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件;

根據(jù)應(yīng)用程序的調(diào)用指令,將調(diào)用獲取到的轉(zhuǎn)換后的Android操作指令反饋至應(yīng)用程序的動態(tài)鏈接庫相關(guān)文件。

例如,根據(jù)Android系統(tǒng)的Java虛擬機Dalvik的中的反射機制及JNI(Java Native Interface,Java本地接口),其中,JNI用于讓Java和其他語言編寫的代碼進行交互,將轉(zhuǎn)換后的Android操作指令,如轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令發(fā)送至App1的相關(guān).so文件,App1根據(jù)接收到轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)鼠標(biāo)點擊的操作。

需要說明的是,本實施例所采用的反射機制可以為Java反射機制,Java反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法;這種動態(tài)獲取信息以及動態(tài)調(diào)用對象的方法的功能即為Java語言的反射機制。

又例如,據(jù)應(yīng)用程序App1調(diào)用Windows操作系統(tǒng)中鼠標(biāo)點擊的操作指令,將轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令,通過預(yù)定的調(diào)用接口,發(fā)送至App1的相關(guān).so文件,App1根據(jù)接收到轉(zhuǎn)換后的Android鼠標(biāo)點擊的操作指令,在Windows系統(tǒng)中執(zhí)行相應(yīng)鼠標(biāo)點擊的操作。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項或多項的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計和制造,或者也可以包括通用計算機中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計算機程序,這些計算機程序選擇性地激活或重構(gòu)。這樣的計算機程序可以被存儲在設(shè)備(例如,計算機)可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計算機可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲器)、RAM(Random Access Memory,隨即存儲器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計算機)以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計算機程序指令來實現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計算機程序指令提供給通用計算機、專業(yè)計算機或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。

以上所述僅是本發(fā)明的部分實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
利辛县| 河池市| 安化县| 高台县| 宜兰县| 益阳市| 门源| 慈利县| 溧水县| 德庆县| 洞头县| 龙门县| 垦利县| 东阿县| 肥东县| 黑山县| 锦州市| 青州市| 延安市| 建湖县| 尚义县| 临汾市| 绥江县| 山西省| 新泰市| 台前县| 莲花县| 高淳县| 房产| 古交市| 普兰店市| 明水县| 喀喇沁旗| 泽库县| 大余县| 石嘴山市| 田东县| 从化市| 星子县| 昌江| 三穗县|