什么是Android Instant Apps?
每次發(fā)布Android應(yīng)用程序時(shí),您至少會(huì)對(duì)要實(shí)現(xiàn)的應(yīng)用程序有一個(gè)大概的了解。
這些目標(biāo)可能非常具體,例如在第一季度產(chǎn)生了一定數(shù)量的廣告收入,也可能更廣泛,例如在Google Play上獲得了很高的評(píng)價(jià)。
無論您的愿望清單上有什么其他內(nèi)容,只要能在盡可能多的用戶面前展示您的應(yīng)用程序, 總會(huì)在該列表中的某個(gè)位置出現(xiàn)功能-Android Instant Apps是一項(xiàng)新功能,可以幫助您做到這一點(diǎn)。
Instant Apps通過使您的應(yīng)用程序可從支持URL的任何位置(包括電子郵件,Google搜索結(jié)果,社交媒體上的帖子)被發(fā)現(xiàn)和訪問,從而為您提供了一種全新的方式來吸引當(dāng)前尚未在其設(shè)備上安裝應(yīng)用程序的用戶。平臺(tái),YouTube評(píng)論和論壇。
本質(zhì)上,Instant Apps允許您將每個(gè)應(yīng)用程序功能分離到一個(gè)獨(dú)立的模塊中。 然后,用戶可以通過點(diǎn)按已映射到該特定模塊的URL來按需加載這些即時(shí)應(yīng)用程序模塊中的任何一個(gè),而無需隨時(shí)安裝您的應(yīng)用程序。
在這個(gè)由三部分組成的系列文章中,我將向您展示如何向您的Android項(xiàng)目添加Instant App支持。 在本系列文章的最后,您將創(chuàng)建一個(gè)包含兩個(gè)單獨(dú)的Instant App功能模塊的應(yīng)用程序,您可以在任何兼容的Android設(shè)備上啟動(dòng)和測(cè)試這些模塊。
我們要涵蓋的內(nèi)容
在第一篇文章中,我將重點(diǎn)介紹什么是Instant Apps,它們?nèi)绾喂ぷ饕约盀槭裁匆P(guān)心它們。 為了給您一些Instant Apps的第一手經(jīng)驗(yàn),我們將使用Android Studio的項(xiàng)目創(chuàng)建向?qū)砩梢粋€(gè)預(yù)先配置有Instant App支持的應(yīng)用程序,這樣您就可以查看所有不同的Instant App組件,而不是而不是簡(jiǎn)單地閱讀它們。
在創(chuàng)建預(yù)先配置有Instant App支持的應(yīng)用程序是使用此功能的最快,最簡(jiǎn)單的方法時(shí),實(shí)際上,您更有可能將Instant App支持添加到現(xiàn)有項(xiàng)目中-因此在第二部分中,我將向您展示如何做到這一點(diǎn)。 我將提供一個(gè)可從GitHub下載的應(yīng)用程序,然后逐步完成重新配置該項(xiàng)目以支持Instant Apps的分步過程。
難題的最后一步是創(chuàng)建多功能的Instant App,因此在第三部分中,我將向您展示如何向應(yīng)用程序中添加第二個(gè)功能模塊,以及如何使用Android App鏈接將此模塊映射到其他URL 。
什么是即時(shí)應(yīng)用程序?
描述即時(shí)應(yīng)用程序的最佳方法之一是查看一個(gè)何時(shí)使用它們的示例。
想象一下,有一個(gè)朋友給您發(fā)送了一個(gè)貓視頻的鏈接,他們承諾您會(huì)愛上您,但是當(dāng)您點(diǎn)擊該鏈接時(shí),很明顯,您需要先下載一個(gè)應(yīng)用,然后才能觀看該特定視頻。
無論您最終要下載該應(yīng)用程序,還是忽略鏈接,并有可能錯(cuò)過互聯(lián)網(wǎng)所能提供的最佳貓視頻,這都是糟糕的用戶體驗(yàn),而且這是許多Android用戶都熟悉的情況。
我們大多數(shù)人都有安裝應(yīng)用程序以完成一次性任務(wù)的經(jīng)驗(yàn)。 例如,您可能下載一個(gè)應(yīng)用程序只是為了查看某人發(fā)送給您的電子郵件附件,在特定網(wǎng)站上完成購買或跟蹤當(dāng)前正在發(fā)送到您地址的包裹。
現(xiàn)在讓我們?cè)俅蜗胂笠幌仑堃曨l場(chǎng)景,但是這次應(yīng)用程序的開發(fā)人員將播放視頻內(nèi)容所需的所有代碼和資源都放置在自己的即時(shí)應(yīng)用程序功能模塊中,并將該模塊映射到www.example.com/video URL。 這次,當(dāng)您點(diǎn)擊www.example.com/video/cat-video時(shí) ,Google Play識(shí)別出該URL與即時(shí)應(yīng)用模塊相關(guān)聯(lián),并檢索了播放該視頻所需的所有代碼和資源。 最終結(jié)果? 您可以享受在一個(gè)盒子一只貓打了20秒,而無需安裝任何東西,這是一個(gè)更好的用戶體驗(yàn)。
為什么要開始使用即時(shí)應(yīng)用功能?
正如您將在本系列的下一篇文章中看到的那樣,向現(xiàn)有項(xiàng)目添加Instant App支持可能是一個(gè)艱巨的過程,通常需要您完全改變應(yīng)用程序的結(jié)構(gòu)方式。
由于重組項(xiàng)目并不是一個(gè)輕而易舉的決定,因此在本節(jié)中,我將通過涵蓋為您的應(yīng)用程序添加Instant App支持的所有主要好處,來幫助您確定所有時(shí)間和精力是否真的值得項(xiàng)目:
- 它消除了您的應(yīng)用程序與新用戶之間的障礙。 通過Google Play安裝應(yīng)用程序并不是一個(gè)特別困難或耗時(shí)的過程,但這仍然是您的應(yīng)用程序與潛在新用戶之間的最大障礙。 無論您花多少時(shí)間來制作引人注目的Google Play頁面,大多數(shù)用戶都會(huì)爭(zhēng)搶該“ 安裝”按鈕,某些人總是會(huì)在安裝時(shí)退出。
- 它可以幫助您吸引新用戶。 盡管您始終可以在網(wǎng)絡(luò)上的各個(gè)位置(例如您自己的網(wǎng)站,博客或社交媒體)上推廣應(yīng)用,但以前與新用戶建立聯(lián)系需要他們?cè)谀硞€(gè)時(shí)候訪問您應(yīng)用的Google Play頁面(極少喜歡側(cè)加載其應(yīng)用的用戶)。 即時(shí)應(yīng)用程序使應(yīng)用程序可以從任何支持URL的位置直接訪問,從而消除了對(duì)應(yīng)用程序Google Play頁面的依賴,從而為您提供了幾乎無限的與新用戶聯(lián)系的機(jī)會(huì)。
- 它可以確保共享內(nèi)容是您應(yīng)用的最佳廣告。 共享您應(yīng)用內(nèi)容的用戶是吸引新受眾的最有效方法之一,因此,您將給人留下良好的第一印象! 以前,很難為沒有在您的設(shè)備上安裝您的應(yīng)用程序的用戶提供一致的體驗(yàn),但是即時(shí)應(yīng)用程序可讓您確保所有人的無縫原生體驗(yàn)。
- 即使面對(duì)互聯(lián)網(wǎng)限制,也可以幫助用戶訪問您的應(yīng)用。 盡管Internet覆蓋范圍一直在不斷改善,但是您有時(shí)仍可能難以找到快速可靠的網(wǎng)絡(luò),或者您可能正在接近每月的數(shù)據(jù)限額,并擔(dān)心會(huì)產(chǎn)生額外的費(fèi)用。 當(dāng)您遇到Internet連接緩慢或不一致的問題時(shí),下載整個(gè)應(yīng)用程序可能是一個(gè)耗時(shí)且令人沮喪的過程,并且當(dāng)您有可能超出數(shù)據(jù)限額的危險(xiǎn)時(shí),下載新應(yīng)用程序可能就足夠了。附加費(fèi)用。 所有即時(shí)應(yīng)用程序模塊必須為4MB或更小,因此即使無法下載整個(gè)應(yīng)用程序,訪問即時(shí)應(yīng)用程序模塊仍然是可行的選擇。
- 提升位置和時(shí)間敏感型應(yīng)用程序的吸引力。 雖然針對(duì)特定地點(diǎn)或活動(dòng)而設(shè)計(jì)的應(yīng)用程序不是一個(gè)新概念,但請(qǐng)問自己:我安裝一個(gè)我知道只能在有限時(shí)間段內(nèi)使用的應(yīng)用程序的可能性有多大?某個(gè)位置? 即時(shí)應(yīng)用程序通過允許用戶點(diǎn)擊URL即可訪問您應(yīng)用程序所有最重要的功能,從而可以增加對(duì)時(shí)間和位置敏感的應(yīng)用程序的吸引力。
限制與限制
在開始即時(shí)應(yīng)用之旅之前,值得注意的是,目前有一些即時(shí)應(yīng)用無法完成的事情:
- 訪問設(shè)備標(biāo)識(shí)符,例如IMEI和MAC地址。
- 使用后臺(tái)服務(wù)。
- 執(zhí)行后臺(tái)通知。
- 訪問設(shè)備的外部存儲(chǔ)。
- 訪問已安裝在用戶設(shè)備上的應(yīng)用程序列表,除非這些應(yīng)用程序特別使自己可被即時(shí)應(yīng)用程序發(fā)現(xiàn)。
此外,您的應(yīng)用程序必須:
- 可從Google Play商店免費(fèi)下載。
- 使用Android 6.0(API級(jí)別23)中引入的新權(quán)限模型。 由于用戶未安裝即時(shí)應(yīng)用程序,因此沒有機(jī)會(huì)提前請(qǐng)求權(quán)限。 如果您的即時(shí)應(yīng)用程序功能模塊需要訪問敏感的設(shè)備功能或用戶信息,那么您將需要在運(yùn)行時(shí)請(qǐng)求這些權(quán)限。
- 支持應(yīng)用鏈接。 這是用于將每個(gè)即時(shí)應(yīng)用程序模塊映射到特定URL的機(jī)制。 在下一篇文章中,我將詳細(xì)介紹App Links。
最后,如果您的應(yīng)用屬于Designed for Families計(jì)劃的一部分,則您不能將其作為即時(shí)應(yīng)用提供。
設(shè)置您的開發(fā)環(huán)境
在創(chuàng)建具有即時(shí)應(yīng)用程序支持的第一個(gè)項(xiàng)目之前,您需要安裝以下內(nèi)容或更高版本:
- Android Studio 3.0預(yù)覽版
- Android SDK 6.0
- Android SDK構(gòu)建工具26.x
- Android SDK工具25.x
- Android SDK平臺(tái)工具25.x
您還應(yīng)該確保擁有最新版本的Android支持庫和Android存儲(chǔ)庫,因此請(qǐng)打開Android Studio的SDK Manager并安裝所有可用的更新。
安裝完上述所有內(nèi)容后,就可以下載Instant Apps Development SDK:
- 打開“ SDK管理器”,然后選擇“ SDK工具”選項(xiàng)卡。
- 選擇Instant Apps Development SDK 。
- 點(diǎn)擊應(yīng)用 。
目前,您只能在運(yùn)行Android 6.0或更高版本的Nexus 5X,Nexus 6P,Pixel,Pixel XL或Galaxy S7上測(cè)試即時(shí)應(yīng)用。 但是,如果您不擁有這些設(shè)備中的任何一個(gè),則可以在以下條件下創(chuàng)建一個(gè)模擬這些設(shè)備之一的Android虛擬設(shè)備(AVD):該AVD必須使用x86映像,并且必須包含Google API 。
由于我不擁有任何這些設(shè)備,因此我將創(chuàng)建一個(gè)模擬Pixel的AVD:
- 啟動(dòng)AVD管理器。
- 單擊創(chuàng)建虛擬設(shè)備...按鈕。
- 選擇“ 像素” ,然后單擊“ 下一步” 。
- 選擇x86圖像選項(xiàng)卡。
- 選擇運(yùn)行Android 6.0并包含Google API的系統(tǒng)映像,例如Marshmallow / 23 / x86 / Android 6.0(Google API) 。
- 單擊下一步 。
- 為您的AVD命名,然后點(diǎn)擊Finish 。
- 啟動(dòng)您的AVD。
最后,您需要在AVD上登錄Google帳戶:
- 切換到您的AVD,然后打開設(shè)備的啟動(dòng)器。
- 選擇Google應(yīng)用。
- 輸入Gmail地址和密碼。 這可以是您的真實(shí)帳戶,也可以是僅為測(cè)試您的Android項(xiàng)目而創(chuàng)建的帳戶。
創(chuàng)建您的第一個(gè)即時(shí)應(yīng)用
在Android Studio 3.0 Preview 1及更高版本中,創(chuàng)建具有內(nèi)置Instant App支持的項(xiàng)目就像選擇一個(gè)復(fù)選框一樣簡(jiǎn)單,因此,我們將創(chuàng)建一個(gè)Instant App項(xiàng)目,然后花費(fèi)本文的其余部分將獲得有關(guān)其各種組件的第一手經(jīng)驗(yàn)。
請(qǐng)注意,該項(xiàng)目沒有任何應(yīng)用程序鏈接,因此您將無法在AVD上測(cè)試其Instant App組件(這是我們將在第二部分中詳細(xì)探討的內(nèi)容)。
創(chuàng)建項(xiàng)目:
- 通過從Android Studio工具欄中選擇“ 文件”>“新建”>“新建項(xiàng)目” ,或在Android Studio的“ 歡迎”屏幕中單擊“ 啟動(dòng)新的Android Studio項(xiàng)目” ,啟動(dòng)項(xiàng)目創(chuàng)建向?qū)А?
- 為您的項(xiàng)目命名,然后單擊“ 下一步” 。
- 將最低SDK設(shè)置為Android 6.0(棉花糖)。
- 選擇包括Android Instant應(yīng)用程序支持復(fù)選框,然后單擊下一步 。
- 為了使事情變得簡(jiǎn)單,請(qǐng)接受默認(rèn)的模塊名稱( 功能 ),然后單擊“ 下一步” 。
- 選擇基本活動(dòng) ,然后單擊下一步 。
- 在下一個(gè)屏幕上,接受所有默認(rèn)值,然后單擊“ 完成” 。
馬上,我們可以看到該項(xiàng)目的結(jié)構(gòu)與典型的Android項(xiàng)目完全不同,并且由以下模塊組成:
- 應(yīng)用程式 可安裝的應(yīng)用程序模塊,也稱為APK模塊。
- 基礎(chǔ)。 基本功能模塊。
- 特征。 盡管此特定項(xiàng)目只有一個(gè),但一個(gè)應(yīng)用程序可以包含多個(gè)功能模塊。
- Instantapp。 即時(shí)應(yīng)用模塊。
除功能模塊外,任何支持即時(shí)應(yīng)用程序的項(xiàng)目都必須具有上述所有模塊,因此讓我們?cè)敿?xì)研究每個(gè)模塊。
1.應(yīng)用模塊
應(yīng)用程序模塊的概念可能并不是什么新鮮事物,但是當(dāng)您的項(xiàng)目支持即時(shí)應(yīng)用程序時(shí),應(yīng)用程序模塊的清單似乎比您以前習(xí)慣的要空得多:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.jessicathornsby.myapplication.app" />該文件之所以如此空是有原因的:構(gòu)建項(xiàng)目時(shí),整個(gè)基本要素和要素模塊中所有其他清單文件的內(nèi)容都會(huì)與此文件合并,因此不會(huì)永遠(yuǎn)保持空白!
如果打開此模塊的build.gradle文件,則會(huì)注意到兩個(gè)新元素:
dependencies {implementation project(':feature')implementation project(':base') }在這里,我們聲明我們的應(yīng)用程序模塊依賴于feature模塊和base模塊。
當(dāng)您將Instant App支持添加到項(xiàng)目時(shí),您會(huì)將相關(guān)的代碼和資源分離到功能模塊中,這些功能模塊可以獨(dú)立于可安裝的應(yīng)用程序運(yùn)行。 但是,這些模塊仍然是可安裝應(yīng)用程序的一部分,而不是單獨(dú)的實(shí)體,因此我們的應(yīng)用程序模塊將功能模塊和基本模塊聲明為依賴項(xiàng)。
2.基本功能模塊
每個(gè)即時(shí)應(yīng)用程序項(xiàng)目都必須包含一個(gè)基本功能模塊,該模塊包含在所有應(yīng)用程序模塊中使用的代碼和資源。 例如,如果打開項(xiàng)目的base / res / mipmap文件夾,則會(huì)看到該應(yīng)用程序的所有啟動(dòng)器圖標(biāo),這些圖標(biāo)顯然將在多個(gè)模塊中使用。
由于它包含通用代碼和資源,因此您項(xiàng)目的所有功能模塊都依賴于此單個(gè)基本功能模塊。
延續(xù)這個(gè)主題,基本功能模塊包含在整個(gè)項(xiàng)目中使用的清單條目。 例如,您項(xiàng)目的base / src / main / AndroidManifest.xml文件包含應(yīng)用程序圖標(biāo),主題和標(biāo)簽的設(shè)置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.jessicathornsby.myapplication"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme" /> </manifest>另一個(gè)值得注意的元素是基本模塊的build.gradle文件,其中包含一些新屬性:
//All base feature and “regular” feature modules use the com.android.feature plugin, rather than the com.android.application plugin//apply plugin: 'com.android.feature'android {compileSdkVersion 26buildToolsVersion "26.0.0"//Specify that this is the project’s one and only base feature, using the ‘baseFeature true’ expression//baseFeature true … … … dependencies {//Use ‘a(chǎn)pplication project’ to add a dependency from the base feature module, to your project’s installable ‘a(chǎn)pp’ module//application project(':app')//Use ‘feature project’ to reference our project’s feature module, aptly named ‘feature’//feature project(':feature')您還會(huì)注意到,這個(gè)特定的build.gradle文件缺少applicationID屬性,并且(擾流器警報(bào))當(dāng)您檢查功能模塊的build.gradle文件時(shí),會(huì)發(fā)現(xiàn)完全一樣的東西。 我們項(xiàng)目applicationID 僅在應(yīng)用模塊的的build.gradle文件中聲明。
基本模塊的build.gradle文件中的application project( : app)行(請(qǐng)參見上文)可確保在所有 build.gradle文件中傳播項(xiàng)目的單個(gè)applicationID屬性,這就是為什么我們其余部分都缺少此屬性的原因項(xiàng)目。
3.功能模塊
當(dāng)您最終要向現(xiàn)有項(xiàng)目添加Instant App支持時(shí),您的最大任務(wù)是將應(yīng)用程序的每個(gè)功能提取到其自己的功能模塊中,因?yàn)槊總€(gè)功能模塊都包含僅提供此功能所需的代碼和資源。
如果打開項(xiàng)目的功能模塊,則會(huì)看到它包含MainActivity類,以及activity_main和content_main資源文件-本質(zhì)上是Basic Activity模板中包括的所有組件。
一個(gè)功能模塊可以包含多個(gè)活動(dòng),但是每個(gè)模塊必須至少具有一個(gè)指定為該模塊的入口點(diǎn)活動(dòng)的活動(dòng)。
每個(gè)入口點(diǎn)活動(dòng)都映射到特定的URL,因此,當(dāng)用戶點(diǎn)擊此URL時(shí),它將加載關(guān)聯(lián)的活動(dòng),并且用戶可以訪問此特定功能模塊。
您可以通過該模塊的清單指定模塊的入口點(diǎn)活動(dòng)。 本質(zhì)上,您需要打開此文件,并將以下內(nèi)容添加到要用作入口點(diǎn)的“活動(dòng)”中:
- 具有CATEGORY_LAUNCHER和ACTION_MAIN意圖的意圖過濾器。
- <data>元素,包含有關(guān)您要映射到此入口點(diǎn)活動(dòng)的URL的所有信息。
- android:autoVerify屬性。 這告訴系統(tǒng)檢查您的應(yīng)用是否有權(quán)充當(dāng)此特定URL的默認(rèn)處理程序。 這是一種重要的安全機(jī)制,有助于保護(hù)網(wǎng)站所有者免受可能試圖劫持其URL的惡意應(yīng)用的侵害。
如果打開功能模塊的清單文件,則會(huì)看到所有這些代碼已添加到我們的MainActivity聲明中:
<activityandroid:name=".MainActivity"android:label="@string/app_name"android:theme="@style/AppTheme.NoActionBar"><intent-filter android:order="1"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" /><dataandroid:host="jessicathornsby.com"android:path="www.example.com/MainActivity"android:scheme="https" /></intent-filter><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><intent-filter android:autoVerify="true">我們將在此模塊中查看的最終文件是build.gradle文件,其中包含幾行值得注意的代碼:
//Again, we’re using com.android.feature plugin, rather than com.android.application//apply plugin: 'com.android.feature'android {//As previously mentioned, this section is missing an ‘a(chǎn)pplicationID’ attribute//… … … dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})//All feature modules have a dependency on the base feature module, which we’re declaring here//implementation project(':base')testImplementation 'junit:junit:4.12'由于所有功能模塊都依賴于基本功能模塊,因此,當(dāng)用戶首次從您的應(yīng)用程序請(qǐng)求任何功能時(shí),他們將收到基本功能模塊以及他們實(shí)際嘗試訪問的功能模塊。
請(qǐng)注意,盡管此特定項(xiàng)目由基本功能模塊和功能模塊組成,但是如果您的應(yīng)用僅具有一個(gè)您想作為Instant App提供的功能,則可以創(chuàng)建僅由基本功能模塊組成的項(xiàng)目。 在整個(gè)系列中,我們將討論Instant App項(xiàng)目的兩種“類型”。
4.即時(shí)應(yīng)用模塊
Instant App模塊的目的很簡(jiǎn)單:它充當(dāng)一個(gè)容器,可以容納您所有的功能模塊并將其轉(zhuǎn)換為Instant App APK。
如果打開該項(xiàng)目的Instant App模塊,那么除了build.gradle文件外,它幾乎是空的,該文件只是將基本功能模塊和功能模塊聲明為依賴項(xiàng):
apply plugin: 'com.android.instantapp'dependencies {implementation project(':feature')implementation project(':base') }測(cè)試您的應(yīng)用
由于該項(xiàng)目不包含任何應(yīng)用程序鏈接,因此我們將無法測(cè)試其即時(shí)應(yīng)用程序組件,但是我們?nèi)匀豢梢詫⒃擁?xiàng)目作為可安裝的應(yīng)用程序運(yùn)行。 這似乎并不特別令人興奮,但是請(qǐng)記住,我們項(xiàng)目的大部分代碼和資源都位于即時(shí)應(yīng)用程序功能模塊中,因此測(cè)試我們的項(xiàng)目作為可安裝應(yīng)用程序的功能非常重要。
啟動(dòng)我們之前創(chuàng)建的AVD或?qū)⒓嫒莸奈锢鞟ndroid智能手機(jī)或平板電腦連接到您的開發(fā)計(jì)算機(jī),然后從Android Studio工具欄中選擇“運(yùn)行”>“運(yùn)行…”>“應(yīng)用 ”。
盡管事實(shí)上我們所有的MainActivity代碼都位于功能模塊中,但是一旦我們的應(yīng)用加載,您將看到MainActivity的浮動(dòng)操作按鈕(FAB)和Hello World消息。 我們?cè)谶@里看到的是我們的應(yīng)用程序模塊,它獲取位于單獨(dú)的Instant App功能和基本功能模塊中的代碼和資源,并將它們組合為可安裝的應(yīng)用程序。
結(jié)論
在本教程中,我們對(duì)Instant Apps的工作原理進(jìn)行了深入的研究,并探討了您可能希望向Android項(xiàng)目中添加Instant App支持的各種原因。
在理想的情況下,您決定探索Instant Apps的決定與新的Android項(xiàng)目的開始完全吻合,但是不幸的是,成為開發(fā)人員很少這么方便! 這是更有可能的是,你必須重新配置現(xiàn)有的項(xiàng)目,以支持即時(shí)應(yīng)用程序,這是不是很簡(jiǎn)單,因?yàn)檫x擇Android Studio中的項(xiàng)目創(chuàng)建向?qū)?fù)選框!
在下一篇文章中,我們將深入研究如何向現(xiàn)有項(xiàng)目添加即時(shí)應(yīng)用支持。 我還將向您展示如何實(shí)現(xiàn)App Links,因此,在下一篇文章結(jié)束時(shí),您將創(chuàng)建一個(gè)功能齊全的Instant App,可以在任何兼容的AVD或Android設(shè)備上啟動(dòng)和測(cè)試。
翻譯自: https://code.tutsplus.com/tutorials/what-are-android-instant-apps--cms-29283
總結(jié)
以上是生活随笔為你收集整理的什么是Android Instant Apps?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息收集之——FOFA网站常用搜索语法
- 下一篇: 如何制作sis文件