Advertisement
  1. Code
  2. Android SDK

讓Android APP兼容Chromebook

by
Read Time:15 minsLanguages:

Chinese (Traditional) (中文(繁體)) translation by Zhang Xiang Liang (you can also view the original English article)

如果讓任何開發人員指出開發Android的最大挑戰,他們很可能會說碎片化。  創建壹個足夠靈活的應用程序以適應各種安卓設備,這是大多數Android開發人員在某種程度上經歷的極大困擾。

但在碎片化的平臺上開發也有優勢!  由於Android設備數量眾多,因此您的應用程序可以與大量用戶連接,由於現在Android應用程序可以在Chrome OS上運行,這樣受眾群體也更大了。

在本文中,我將展示如何在Chrome OS上啟動並運行最新的Android應用程序。  而且,由於您希望在這個新平臺上提供最佳的用戶體驗,因此我還會考慮如何優化您的Android應用,以便真正驚艷到新Chromebook(壹種操作系統)用戶。

我的APP是否兼容Chromebook?

作為壹名Android開發人員,盡可能讓多的人使用您的應用程序永遠是您的首要任務,對吧?

沒必要。

只是因為Android應用程序現在與Chrome OS兼容,並不意味著所有的Android應用程序都要自動兼容這個新平臺。

想象壹下,您發現壹個喜歡的應用程序,並且Google Play顯示此應用程序與智能手機和 Chromebook 兼容。  您決定將該應用程序下載到您的筆記本電腦,並立即意識到,大多數應用程序的功能都依賴於專用的移動硬件,例如撥打電話和發送短信的功能。

最後呢?  這個應用程序在Chrome OS上幾乎無法使用。  您立即卸載它,感覺開發人員完全浪費了您的時間,並在Google Play上進行了否定評價。

不支持Chrome SO的應用程式容易惹惱Chromebook用戶,但是給Chrome OS用戶提供糟糕用戶體驗的應用程序更差勁。

在您開始為Chrome OS準備應用程序之前,請花點時間考慮您的應用程序是否有Chromebook用戶的需求的地方。

典型的Chromebook與典型的Android智能手機或平板電腦的硬件非常不同。  在本文中,我會反復提到硬件,但現在只是關註應用程序的功能列表 - 這些功能是否與典型筆記本電腦兼容?

例如,由於筆記本電腦通常沒有硬件來測量足跡,所以您壹直在使用的計步器應用程序不可能在Chrome OS上茁壯成長(妳上次看到有人在早晨帶著Chomebook慢跑是什麽時候?)

如果您的應用程序包含壹些不兼容的功能,那麽有什麽辦法可以修改這些功能使其兼容Chromebook嗎?  如果答案是“否”,那麽當您的應用程序在Chrome OS上運行時,您需要禁用這些功能,這會引出另壹個問題:沒有這些功能應用程序仍然可以提供良好的用戶體驗嗎?  如果看起來不大可能,那麽您的應用程序可能不適合Chromebook。

即使您確實停用或修改了某些功能,您的應用程序仍然可以提供Chromebook用戶壹些支持,此時您就可以開始更新應用程序以便在Chrome OS上運行!

讓您的應用在Chrome OS上運行

如果您的應用程序需要Chrome OS支持不了的硬件,那麽Chromebook用戶將無法安裝您的應用程序。  而且大部分(如果不是全部)智能手機和平板電腦都有其中壹塊硬件而所有Chromebook上都沒有的,那就是:觸摸屏。

更糟糕的是,除非另有說明,否則Google Play會假設您的Android應用需要觸摸屏,因此會阻止您的應用安裝在不包含觸摸屏功能的所有設備上。  如果您希望Chromebook用戶盡可能多的使用妳的的應用程序,那麽您需要問問自己:Android應用程序是否真的需要觸摸屏?

對於大多數Android應用,答案是否定的。  大多數Android應用程序可以無需觸摸屏即可正常工作,尤其是在Chromebook上,用戶擁有全尺寸鍵盤,觸控板和潛在的外部鼠標。  壹些Chromebook甚至支持“假觸摸屏”,這是壹個額外的輸入系統,允許您使用鼠標和鍵盤來模擬基本的觸摸事件。

所以除非妳有非常好的理由,否則妳應該指定妳的應用程序不需要觸摸屏才能運行。  打開項目的清單文件,聲明觸摸屏作為應用程序使用的功能(uses-feature android:name="android.hardware.touchscreen"),然後使用android:attribute來指定您的應用程序是否需要:

  • 需要這個功能才能使用function("true")。

  • 提供此功能可用,但可以在沒有它("false")的情況下運行。

在這種情況下,我們要聲明觸摸屏是可用但不是必需的:

Open your projects Manifest and declare that touchscreen support isnt requiredOpen your projects Manifest and declare that touchscreen support isnt requiredOpen your projects Manifest and declare that touchscreen support isnt required

然後,Google Play將使用您的項目和android:required聲明來確定您的應用程序是否與用戶的設備兼容,並且只有當用戶的設備滿足其所有要求時,才允許用戶下載您的應用。

壹旦聲明您的應用不需要觸摸屏,您的應用程序將立即可用於更多的Chromebook用戶。

其他硬件註意事項

現在,為應用程序使用的每個功能進行沖洗和重復。  這是開發任何 Android應用的最佳做法,但這也是為Chromebook用戶優化應用的重要壹步。

為了幫助您準備好Chrome OS的應用程序,Android小組創建了壹個通常與Chromebook不兼容的所有硬件聲明的便捷列表。   如果您的應用程序使用但不需要此列表中的任何功能,那麽在您的清單中聲明此功能,並將其標記為android:required="false"。

但是,不要自動設置每個功能為”false", 因為您希望您的應用可以支持盡可能多的Chromebook!  考慮您的應用程序將無需訪問每個硬件的用戶體驗。  雖然這很有誘惑力並得到盡可能多的用戶使用,但最好是給小部分人提供良好的用戶體驗而不是給大部分人提供壹般或較差的用戶體驗。

此時,您還應查看應用程序請求的任何權限,因為某些權限會請求隱式硬件。  例如,如果您的應用程序請求相機權限,則Google Play將假設您的應用需要相機硬件,並將阻止您的應用安裝在不符合此要求的設備上。  如果您的應用實際上不需要相機,那麽這樣會錯過潛在用戶!  為了防止這種情況發生,您需要在應用程序的清單中聲明此功能,並將其標記為 "false"。

如果您堅持聲明應用程序使用的每個功能,那麽理論上您不必擔心隱式功能的請求,但是始終值得雙重檢查您的項目,以防萬壹。

具體來說,以下權限使的隱含功能請求能夠阻止應用程序安裝在Chrome OS上:

  • CALL_PHONE

  • CALL_PRIVILEDGED

  • CAMERA

  • MODIFY_PHONE_STATE

  • PROCESS_OUTGOING_CALLS

  • READ_SMSREAD_SMS

  • RECEIVE_MMS

  • RECEIVE_SMS

  • RECEIVE_WAP_PUSH

  • SEND_SMS

  • WRITE_APN_SETTINGS

  • WRITE_SMS

如果您的應用程序請求以上權限,請仔細檢查您是否在項目清單中聲明了相關硬件,並標記每個聲明為”false", 就像您的應用程序實際上並不需要此硬件壹樣。

在處理您的功能請求時,可能有助於預覽Google Play如何根據當前硬件聲明和權限請求過濾應用程序。  Android SDK包含壹個“ aapt工具”,可以讓您做到這壹點 - 您可以運行此工具,查看其輸出與應用程序實際需要的功能做比較,並根據需要進行調整。

關於使用aapt的更多信息,請查看官方的Android文檔

傳感器

大多數Android智能手機和平板電腦都有各種內置的傳感器,可以為您的應用提供壹系列數據,包括設備的當前方向、位置,有時甚至有環境信息。

通常在智能手機或平板電腦上找到的許多傳感器在Chrome OS中不可用,因此如果您的應用程序使用任何傳感器的數據,那麽應該考慮到如果該傳感器不可用,您的應用程序將如何反應。

如果您的整個應用程序依賴於訪問特定的傳感器,那麽您應該防止將應用程序安裝在不包含此傳感器的任何設備上。  例如,如果您的應用程序無法在沒有加速度傳感器的情況下運行,則應將以下內容添加到項目的清單中:

另壹種情況是,您的應用程序不需要特定的傳感器,但具有將使用傳感器(如果可用)的功能。  如果您的應用程序想這樣,那麽您應該在您的清單中聲明此傳感器,但將其標記為android:required="false"。  然後,您的應用程序可以檢查該傳感器是否在運行時可用,並禁用依賴於用戶設備上不存在的傳感器的任何功能。

要確定哪些傳感器可用,您需要創建壹個SensorManager類的實例,然後調用getSystemService方法並傳入SENSOR_SERVICE參數:

接下來,您需要通過調用getSensorListmethod並使用Sensor.TYPE_ALL常量來獲取當前可用的所有傳感器列表:

據此,您可以禁用依賴於當前設備上不存在的傳感器的任何應用程序功能。

調整和支持Chrome OS多窗口模式

在Chrome OS上,Android應用會顯示在用戶可以移動的單獨窗口中,並在以下三種支持的尺寸之間循環:

  • 豎屏。  與Nexus 5的屏幕尺寸相似。

  • 橫屏。  與Nexus 7類似的屏幕。

  • 最大化。  該應用程序使用所有可用的屏幕空間。

在Chrome OS上測試應用程序的時候,您需要確保您的應用程序看起來不錯,並且可以在所有三種支持的尺寸內正常運行,例如檢查所有應用的文本是否易於閱讀,所有UI元素都可以訪問,無論用戶將應用程序放置在豎屏,橫屏或最大化模式下。

雖然Chrome OS用戶可以壹次查看多個Android應用,但只有壹個應用可以獲取焦點,所以為了節約用戶的電池,您的應用程序應該在丟失焦點時暫停渲染。  唯壹的例外是當妳的應用程序有需要不斷更新的內容時。  例如,如果您正在開發播放音樂或視頻的應用程序,那麽您可能不希望每次應用程序失去焦點時停止播放activity

如果您的activity需要更新屏幕上的整個時間,那麽您應該在onStop裏面暫停並在onStart恢復播放,而不是使用onPause處理程序。

考慮使用自動備份

Chromebook的設計使得用戶可以輕松地在設備之間進行切換,只需要登錄自己的Google帳戶所有的應用和內容就在這裏,無論他們是否曾經使用過這種特定的Chromebook。

由於這是Chromebook用戶想要的行為,所以這也是您的應用程序在Chrome OS上運行時的行為方式。  這意味著您需要在線備份應用的數據,而不是僅在本地存儲。  最簡單的方法是使用Android的自動備份功能,您可以將應用的數據備份到用戶的Google雲端硬盤帳戶。

如果您的應用程序指向Android 6.0或更高版本,則默認情況下啟用自動備份。  但是,最好是明確應用程序使用的功能(不能保證自動備份在未來版本的Android上默認啟用),因此打開項目的清單並添加以下內容:

有關實現備份和恢復的更多詳細信息,請查看官方的Android文檔

測試

即使遵循上面這些最佳做法,您也無法確定您的應用程式會在Chrome OS上運行良好,除非您在現實生活中使用Chromebook測試過。

在撰寫本文時,Google建議您在以下方面測試Chromebook APP:

  • 基於ARM的Chromebook。

  • 基於Intel x86的Chromebook。

  • 可轉換Chromebook(可在筆記本電腦和平板電腦之間進行轉換的Chromebook)。

  • 支持觸摸屏的Chromebook。

  • 支持“假觸摸”的Chromebook。

但現實是:您幾乎不可能有機會訪問多臺Chromebook。  在決定如何測試Chomebook應用程式時,了解目前市面上所有Android兼容的Chromebook的 Google 清單可能有幫助。

在Chrome操作系統上安裝Android應用之前,您需要打開Chromebook的開發人員模式,並啟用來自未知來源的安裝。

開啟Chromebook開發人員模式的具體過程會因設備而異,因此如果這些說明對您的特定型號無效,那麽您應該在Chromium文檔中搜索特定於設備的說明。

進入開發人員模式:

  1. 確保您的Chromebook已關閉。

  2. 按住Esc刷新鍵,同時按下設備的電源按鈕。  然後您的Chromebook將啟動到“恢復”屏幕。

  3. 按Chromebook鍵盤上的Control-D鍵。

  4. 出現提示時,按Enter鍵。

  5. 再次按Control-D鍵。

您的Chromebook將啟動進入開發者模式。

下壹步是通過導航到Chrome設置>應用程序設置>安全性並選擇未知來源來啟用未知來源

完成這些步驟後,您就可以安裝要測試的APK(Android應用程序包)。  要快速將APK下載到Chromebook,您可以:

  • 將APK添加到Google雲端硬盤。

  • 使用外部驅動器或SD卡將APK文件復制到Chromebook的“ 下載”文件夾。

  • 通過電子郵件將APK發送給自己。

然後,您需要將APK下載到Chromebook,並使用Android文件管理器應用程序打開它(您可以通過瀏覽到Chrome設置>應用程序設置>設備和USB>瀏覽)來查找。

或者,您可以使用Android Debug Bridge(ADB)命令將APK從您的電腦下載到Chromebook。

讓ADB在Chrome OS上運行良好,需要進行壹些設置,但是壹旦建立了連接,您可以使用ADB來發布壹系列可用於測試Android應用程序的命令。  (有關ADB命令的更多信息,請查看官方的Android文檔)。

使用Android Debug Bridge(ADB)

設置ADB是壹個多步驟的過程,讓我們壹步壹步地解決這個問題:

1.配置Chrome OS防火墻以允許ADB連接。

按 鍵盤上的Control-Alt-T啟動Chrome OS終端 ,然後鍵入shell以獲取bash命令shell

輸入您的密碼,然後通過終端窗口輸入以下命令:

閱讀免責聲明。  如果您很樂意繼續,請輸入下壹個命令:

此時,您的Chromebook將重新啟動。  Chromebook完成啟動後,重新啟動終端並鍵入:

2.查找您的Chromebook的IP地址:

啟用ADB調試需要您的Chromebook的IP地址,因此:

  • 點擊Chromebook主屏幕右下角的網絡圖標。

  • 選擇Chromebook當前連接到的網絡。

  • 單擊菜單右下角的i圖標。

此時,會顯示壹個包含Chromebook IP地址的框,記錄下來,後面要用到。

3.啟用adb調試。

在Chromebook上,完成以下步驟:

  • 點擊屏幕右下角的時鐘圖標。

  • 選擇設置

  • Android APP部分中,點擊[ 在設定中管理Android APP]連結。

  • 單擊關於設備

  • 通過單擊Build number七次進入Developer模式。

  • 單擊窗口左上方的箭頭。  這將返回到主設置屏幕。

  • 單擊開發者選項

  • 啟用ADB調試,然後單擊確定

接下來,在開發機器上完成以下步驟:

打開終端窗口並更改目錄(cd),以便指向Android SDK的“adb”程序的位置。

Open a Terminal and point it in the direction of your Android SDKs platform-tools folder Open a Terminal and point it in the direction of your Android SDKs platform-tools folder Open a Terminal and point it in the direction of your Android SDKs platform-tools folder

通過發出以下adb命令,告訴您的電腦在端口22上監聽TCP / IP連接:

輸入如下命令

Chromebook上,按提示點擊允許。

唯壹要做的就是將APK從您的電腦下載到Chromebook。

在您的電腦上,輸入adb install 命令,其次是要安裝APK的路徑和文件名,例如:

就是這樣!  您的Android應用程式現已安裝在Chromebook上,可以測試了!

總結

在本文中,我們研究了如何更新您的應用程序以便在Chromebook上運行,然後,壹旦能夠在這個新平臺上運行,如何優化它以提供更好的用戶體驗。

對於Chomebook用戶來說,能夠同時在智能手機、平板電腦和筆記本電腦上使用他們最喜歡的應用程序,這是個好消息,對於開發人員來說,Android應用程序的潛在用戶更大了,誰不希望自己的用戶更多呢?

关注我们的公众号
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.