如何快速地開(kāi)發(fā)一款 Android App — 非原生App開(kāi)發(fā)流程詳解
一、環(huán)境搭建與工具安裝
想要快速開(kāi)發(fā)Android App,首先需安裝必要的開(kāi)發(fā)工具。主要包括:1. 安裝node.js:確保開(kāi)發(fā)環(huán)境的穩(wěn)定運(yùn)行。

2. 安裝git:用于版本控制和代碼管理。
3. 安裝ionic和cordova:命令行輸入“npm install–g cordova ionic”,-g表示全局安裝,推薦全局安裝以方便后續(xù)操作。
4. 安裝Java JDK:用于Android開(kāi)發(fā)的環(huán)境搭建。
5. 安裝Apache Ant:一個(gè)自動(dòng)化構(gòu)建工具,用于編譯和部署應(yīng)用程序。
6. 安裝Android SDK:開(kāi)始搭建Android開(kāi)發(fā)環(huán)境,此處以Android為例,iOS安裝類似。

二、環(huán)境變量設(shè)置
環(huán)境變量設(shè)置是開(kāi)發(fā)環(huán)境搭建的重要步驟:1. 打開(kāi)計(jì)算機(jī),進(jìn)入“系統(tǒng)屬性”->“高級(jí)系統(tǒng)設(shè)置”->“環(huán)境變量”。
2. 在系統(tǒng)變量中新建“ANDROID_HOME”變量,變量值為sdk所在目錄。
3. 新建“CLASSPATH”變量,包含相關(guān)的Java路徑。
4. 新建“JAVA_HOME”變量,變量值為jdk所在目錄。

5. 編輯系統(tǒng)變量中的path變量,添加相關(guān)路徑。
三、創(chuàng)建項(xiàng)目
環(huán)境搭建完成后,即可開(kāi)始創(chuàng)建項(xiàng)目:1. 命令行cd進(jìn)入你喜歡的目錄。
2. 輸入“ionic start AnyNameYouLike blank”創(chuàng)建一個(gè)新的ionic項(xiàng)目。
四、平臺(tái)添加

五、項(xiàng)目開(kāi)發(fā)
在項(xiàng)目目錄中有一個(gè)www的文件夾,里面包含html,js,css等文件,可自由編寫代碼實(shí)現(xiàn)功能。platform中的www文件不建議修改。 注意保持項(xiàng)目的結(jié)構(gòu)清晰,便于后續(xù)的測(cè)試、調(diào)試和發(fā)布。使用ionic和cordova可以快速地同時(shí)產(chǎn)出iOS和Android兩端的非原生APP,大大提高開(kāi)發(fā)效率和便捷性。三、測(cè)試項(xiàng)目
項(xiàng)目啟動(dòng)與編譯
進(jìn)入項(xiàng)目目錄,執(zhí)行Ionic構(gòu)建Android項(xiàng)目。這是開(kāi)發(fā)流程中的關(guān)鍵一步,確保我們的應(yīng)用能在Android平臺(tái)上順利運(yùn)行。

測(cè)試方法探索
接下來(lái)是測(cè)試階段。我們有多種測(cè)試方法:
1. 桌面瀏覽器測(cè)試法:通過(guò)Ionic serve模擬器在桌面瀏覽器上進(jìn)行測(cè)試,這是最直觀也最方便的方式。
2. 模擬器測(cè)試法:使用Ionic的模擬器進(jìn)行測(cè)試。雖然這種方法可能運(yùn)行較慢,但在某些情況下非常有用。
3. 手機(jī)瀏覽測(cè)試法:直接在手機(jī)上測(cè)試應(yīng)用,模擬真實(shí)環(huán)境的使用情況。

4. 手機(jī)直接測(cè)試法:通過(guò)連接手機(jī)數(shù)據(jù)線,開(kāi)啟開(kāi)發(fā)者選項(xiàng),執(zhí)行Ionic run android進(jìn)行測(cè)試。
四、項(xiàng)目編寫
項(xiàng)目構(gòu)建指南
編寫項(xiàng)目時(shí),我們需逐步構(gòu)建出完整的應(yīng)用框架和功能模塊。由于涉及的英文內(nèi)容較多,我們?cè)跇?gòu)建過(guò)程中可能需要查閱相關(guān)資料或文檔。這是一個(gè)逐步積累和實(shí)踐的過(guò)程,每一步的進(jìn)展都是項(xiàng)目成功的基石。
五、應(yīng)用發(fā)布流程

應(yīng)用發(fā)布前的準(zhǔn)備
經(jīng)過(guò)前期的開(kāi)發(fā)和測(cè)試,我們終于迎來(lái)了應(yīng)用的發(fā)布環(huán)節(jié)。我們需要調(diào)整開(kāi)發(fā)過(guò)程中使用的插件,確保它們?cè)谏a(chǎn)環(huán)境中也能正常工作。執(zhí)行命令“cordova plugin rm cordova-plugin-console”以移除不必要的插件。接下來(lái),執(zhí)行“cordova build--release android”來(lái)構(gòu)建發(fā)布版本的應(yīng)用。在構(gòu)建完成后,我們會(huì)得到一個(gè)未簽名的apk文件。
簽名與發(fā)布
為了將應(yīng)用發(fā)布到Android平臺(tái),我們需要對(duì)apk進(jìn)行簽名。使用keytool生成私有密鑰,然后用jarsigner對(duì)apk進(jìn)行簽名。使用zipalign對(duì)apk進(jìn)行對(duì)齊優(yōu)化。這一系列操作完成后,我們的應(yīng)用就準(zhǔn)備好了發(fā)布到用戶的設(shè)備上。
六、可能出現(xiàn)的問(wèn)題與解決方案

Android創(chuàng)建桌面快捷方式(兼容Android 8.0)
一、應(yīng)用程序的快捷方式固定功能
1. 引入
應(yīng)用程序如今可以通過(guò)編程方式將快捷方式固定到支持的啟動(dòng)器上,這一功能為用戶提供了更為便捷的訪問(wèn)方式。這一操作主要通過(guò)調(diào)用requestPinShortcut(ShortcutInfo, IntentSender)方法實(shí)現(xiàn)。
二、方法參數(shù)詳解

2. 方法參數(shù)介紹
此方法需要傳入兩個(gè)參數(shù):
ShortcutInfo對(duì)象:若快捷方式已存在,該對(duì)象只需包含快捷方式的ID。若要?jiǎng)?chuàng)建新的快捷方式,則需要在此對(duì)象中包含ID、意圖和新的快捷方式的簡(jiǎn)短標(biāo)簽。
PendingIntent對(duì)象:此意圖代表如果快捷方式成功固定到設(shè)備啟動(dòng)器上,應(yīng)用程序接收到的回調(diào)。
三、注意事項(xiàng)

3. 潛在問(wèn)題與解決方案
需要注意,如果用戶不允許將快捷方式固定到啟動(dòng)器上,固定過(guò)程會(huì)失敗,且傳入的Intent對(duì)象不會(huì)被執(zhí)行。由于Android O引入的背景執(zhí)行限制,建議使用在清單文件中聲明的接收器來(lái)接收回調(diào)。為防止其他應(yīng)用調(diào)用接收器,請(qǐng)?jiān)诮邮掌鞯那鍐螚l目中添加android:exported="false"屬性。
四、兼容性考量
4. 設(shè)備兼容性
當(dāng)在應(yīng)用程序中添加邏輯以請(qǐng)求固定快捷方式時(shí),需要注意并非所有啟動(dòng)器都支持固定快捷方式功能。可通過(guò)檢查isRequestPinShortcutSupported()方法的返回值來(lái)判斷特定設(shè)備是否支持此功能。根據(jù)此返回值,你可能需要決定是否在應(yīng)用程序中隱藏允許固定快捷方式的選項(xiàng)。

五、舊版Android的支持
5. 舊版Android的支持庫(kù)API
對(duì)于Android版本低于O的設(shè)備,可使用支持庫(kù)API isRequestPinShortcutSupported(Context)和requestPinShortcut(Context, ShortcutInfoCompat, IntentSender)。若目標(biāo)版本低于O的設(shè)備,這些方法會(huì)通過(guò)回退到私有的com.android.launcher.action.INSTALL_SHORTCUT意圖來(lái)實(shí)現(xiàn)功能。開(kāi)發(fā)者需要根據(jù)目標(biāo)設(shè)備的版本選擇合適的API進(jìn)行調(diào)用。
一、背景介紹
在現(xiàn)代移動(dòng)應(yīng)用中,快捷方式為用戶提供了快速訪問(wèn)應(yīng)用功能的方式。在Android開(kāi)發(fā)中,要想實(shí)現(xiàn)快捷方式的創(chuàng)建和管理,我們需要關(guān)注一些關(guān)鍵對(duì)象和注意事項(xiàng)。本文將詳細(xì)介紹如何使用ShortcutInfo對(duì)象、PendingIntent對(duì)象以及ShortcutManager類來(lái)創(chuàng)建快捷方式,并強(qiáng)調(diào)一些重要的注意事項(xiàng)。

二、ShortcutInfo對(duì)象
ShortcutInfo對(duì)象是描述快捷方式的關(guān)鍵信息載體。如果快捷方式已存在,該對(duì)象僅包含快捷方式的ID;若需創(chuàng)建新的快捷方式,則需提供新快捷方式的ID、意圖(Intent)和短標(biāo)簽。
三、PendingIntent對(duì)象
PendingIntent對(duì)象表示如果快捷方式成功固定到設(shè)備的啟動(dòng)器,應(yīng)用程序?qū)⑹盏交卣{(diào)。此意圖用于通知開(kāi)發(fā)者,當(dāng)用戶通過(guò)快捷方式啟動(dòng)應(yīng)用或執(zhí)行特定任務(wù)時(shí),應(yīng)用可以做出相應(yīng)的響應(yīng)。
四、注意事項(xiàng)

1. 用戶權(quán)限:如果用戶不允許將快捷方式固定在啟動(dòng)器上,則固定進(jìn)程會(huì)失敗,且未執(zhí)行傳入PendingIntent對(duì)象的Intent對(duì)象。開(kāi)發(fā)者需要確保用戶授權(quán)固定快捷方式。
2. 安卓O的后臺(tái)執(zhí)行限制:為了防止?jié)撛诘陌踩L(fēng)險(xiǎn),Android O引入了后臺(tái)執(zhí)行限制。為了穩(wěn)定接收快捷方式的回調(diào),建議使用清單聲明的接收器。為了防止其他應(yīng)用程序調(diào)用接收器,需要將屬性“android:exported”設(shè)置為“false”。
3. 設(shè)備兼容性:并非所有啟動(dòng)器都支持固定快捷方式。在引導(dǎo)應(yīng)用程序的快捷方式邏輯時(shí),開(kāi)發(fā)者應(yīng)檢查isRequestPinShortcutSupported()的返回值以確定設(shè)備是否支持該功能。根據(jù)此返回值,可以決定是否顯示允許用戶固定快捷方式的選項(xiàng)。
4. 跨版本兼容性:對(duì)于低于API level 26的設(shè)備,可以使用支持庫(kù)API isRequestPinShortcutSupported(Context)和requestPinShortcut(Context,ShortcutInfoCompat,IntentSender)。對(duì)于低于Android O的設(shè)備,可能需要回落到不推薦使用的私有意圖com.android.launcher.action.INSTALL_SHORTCUT。
五、ShortcutManager類的新功能

在API level 26上,ShortcutManager類增加了對(duì)isRequestPinShortcutSupported、requestPinShortcut、createShortcutResultIntent三個(gè)方法,為開(kāi)發(fā)者提供了更強(qiáng)大的快捷方式管理能力。開(kāi)發(fā)者可以利用這些新方法創(chuàng)建更豐富的快捷方式體驗(yàn),提高用戶的使用便捷性。
第一章:isRequestPinShortcutSupported功能概述
當(dāng)我們談?wù)撘苿?dòng)設(shè)備的應(yīng)用程序功能時(shí),isRequestPinShortcutSupported這個(gè)特性引起了我們的注意。此功能主要是檢查當(dāng)前運(yùn)行的設(shè)備其默認(rèn)的啟動(dòng)器是否支持特定的快捷操作——即requestPinShortcut方法。簡(jiǎn)而言之,如果默認(rèn)桌面應(yīng)用程序支持此功能,該方法將返回TRUE。
第二章:功能的實(shí)際運(yùn)作
深入了解這一特性,我們發(fā)現(xiàn)它具有一定的動(dòng)態(tài)性。設(shè)備的默認(rèn)啟動(dòng)器可能會(huì)隨著用戶的個(gè)人喜好進(jìn)行更改,這也意味著此功能的返回值并非一成不變。也就是說(shuō),如果用戶在后續(xù)更改了默認(rèn)的啟動(dòng)器應(yīng)用程序,isRequestPinShortcutSupported的返回值可能會(huì)有所變動(dòng)。

第三章:理解requestPinShortcut方法
requestPinShortcut是一個(gè)重要的方法,它涉及到ShortcutInfo和IntentSender兩個(gè)關(guān)鍵參數(shù)。通過(guò)調(diào)用此方法,應(yīng)用程序能夠請(qǐng)求將特定的快捷方式固定在設(shè)備上,從而為用戶提供更便捷的操作體驗(yàn)。而isRequestPinShortcutSupported就是為了確認(rèn)當(dāng)前的啟動(dòng)器環(huán)境是否支持這種操作。
第四章:關(guān)于舊版本Android的支持庫(kù)
對(duì)于那些運(yùn)行在低版本Android的設(shè)備,有一個(gè)對(duì)應(yīng)的支持庫(kù)函數(shù)isRequestPinShortcutSupported(Context)。這個(gè)函數(shù)主要是為了兼容舊版本的Android系統(tǒng),它使用了舊的私有意圖com.android.launcher.action.INSTALL_SHORTCUT。這使得在這些舊系統(tǒng)上也能實(shí)現(xiàn)類似的功能和操作。
第五章:總結(jié)與展望

isRequestPinShortcutSupported這一特性為應(yīng)用程序提供了檢查設(shè)備啟動(dòng)器功能的重要工具。隨著技術(shù)的發(fā)展和用戶的個(gè)性化需求增長(zhǎng),我們期待未來(lái)更多的便捷操作能夠通過(guò)這種方式實(shí)現(xiàn),并帶給用戶更出色的體驗(yàn)。開(kāi)發(fā)者也需要持續(xù)關(guān)注這一領(lǐng)域的動(dòng)態(tài),以便更好地適應(yīng)未來(lái)的變化和發(fā)展。
一、方法概述
requestPinShortcut方法的主要功能是請(qǐng)求創(chuàng)建固定的快捷方式。當(dāng)應(yīng)用程序希望用戶在啟動(dòng)器上創(chuàng)建一個(gè)持久的、易于訪問(wèn)的快捷方式時(shí),就會(huì)使用此方法。

二、請(qǐng)求與響應(yīng)流程
1. 請(qǐng)求流程:應(yīng)用程序發(fā)起requestPinShortcut請(qǐng)求。
2. 默認(rèn)啟動(dòng)器響應(yīng):默認(rèn)啟動(dòng)器接收到此請(qǐng)求后,會(huì)提示用戶是否批準(zhǔn)創(chuàng)建快捷方式。
3. 用戶決策:如果用戶同意,快捷方式將被創(chuàng)建,并發(fā)送resultIntent;如果用戶拒絕,則不會(huì)向應(yīng)用程序發(fā)送任何響應(yīng)。

三、調(diào)用條件與限制
只有具備前臺(tái)活動(dòng)或前臺(tái)服務(wù)的應(yīng)用程序才有權(quán)調(diào)用此方法。這是為了確保應(yīng)用程序在請(qǐng)求創(chuàng)建快捷方式時(shí)處于活躍狀態(tài)。如果不滿足這些條件,調(diào)用此方法將拋出IllegalStateException異常。
四、處理連續(xù)請(qǐng)求的策略
當(dāng)同一應(yīng)用程序連續(xù)多次調(diào)用requestPinShortcut方法時(shí),啟動(dòng)器的處理方式取決于其內(nèi)部策略。一種常見(jiàn)的策略是忽略先前的請(qǐng)求,只處理最新的請(qǐng)求,確保用戶界面的整潔和高效。

五、版本兼容性與替代方案
對(duì)于低于Android O的版本,該方法提供了支持庫(kù)對(duì)應(yīng)件requestPinShortcut(Context,ShortcutInfoCompat,IntentSender)作為替代方案。這個(gè)替代方案支持使用舊的私有意圖com.android.launcher.action.INSTALL_SHORTCUT,以確保在舊版本Android上的兼容性。
requestPinShortcut方法為應(yīng)用程序提供了一個(gè)強(qiáng)大的工具,使其能夠在用戶的啟動(dòng)器上創(chuàng)建固定的快捷方式,從而提高用戶的使用體驗(yàn)和便利性。它的設(shè)計(jì)也確保了兼容性和用戶選擇的尊重,使得整個(gè)過(guò)程流暢且富有吸引力。3.createShortcutResultIntent的使用研究
一、基本功能與用途

`
Returns an Intent which can be used by the default launcher
`此方法用于返回一個(gè)Intent,該Intent可以被默認(rèn)啟動(dòng)器使用,以固定包含特定ShortcutInfo的快捷方式。當(dāng)Activity響應(yīng)ACTION_CREATE_SHORTCUT動(dòng)作時(shí),應(yīng)使用此方法來(lái)設(shè)置結(jié)果。簡(jiǎn)而言之,它為創(chuàng)建桌面快捷方式提供了一種機(jī)制。
二、操作體驗(yàn)與反饋
用戶可以通過(guò)拖動(dòng)圖標(biāo)到桌面來(lái)添加快捷方式,或者通過(guò)點(diǎn)擊自動(dòng)添加按鈕,由系統(tǒng)在桌面的默認(rèn)位置添加。這一過(guò)程中,系統(tǒng)會(huì)響應(yīng)并展示相應(yīng)的操作提示與反饋。例如,當(dāng)桌面上已存在相同快捷方式時(shí),系統(tǒng)會(huì)迅速響應(yīng)并彈出提示。
三、圖標(biāo)展示與效果

在桌面上成功添加的快捷方式會(huì)顯示特定的圖標(biāo),這個(gè)圖標(biāo)可以根據(jù)應(yīng)用的需求進(jìn)行定制,提供用戶快速訪問(wèn)特定功能或應(yīng)用的路徑。
四、Receiver的回調(diào)機(jī)制
在創(chuàng)建快捷方式的流程中,存在一個(gè)Receiver負(fù)責(zé)接收并處理相關(guān)。通過(guò)打印日志可以發(fā)現(xiàn),當(dāng)點(diǎn)擊彈框的自動(dòng)添加按鈕后,onReceive會(huì)被回調(diào)。值得注意的是,如果桌面上已存在相同快捷方式,再次請(qǐng)求添加時(shí),onReceive也會(huì)在調(diào)用requestPinShortcut時(shí)立即被觸發(fā)。
五、版本適配與第三方工具的使用
為了實(shí)現(xiàn)窗口化并指定位置顯示app的功能,除了使用Android官方的方法外,還可以借助第三方工具如ShortcutManagerCompat進(jìn)行版本適配。若希望實(shí)現(xiàn)更高級(jí)的窗口化功能,如MIUI V5系統(tǒng)中的Portal(Floating Apps) [BETA],可以結(jié)合Xposed安裝器、Xhalo Floating Window等工具來(lái)達(dá)到目的。這一系列工具允許用戶通過(guò)簡(jiǎn)單操作,實(shí)現(xiàn)將任意應(yīng)用窗口化并在指定位置顯示。

通過(guò)合理使用Android系統(tǒng)及第三方工具,我們可以輕松實(shí)現(xiàn)桌面快捷方式的創(chuàng)建以及應(yīng)用窗口化的顯示,從而提升用戶體驗(yàn)與應(yīng)用功能。