日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

什么是Android Instant Apps?

發布時間:2023/12/16 Android 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是Android Instant Apps? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每次發布Android應用程序時,您至少會對要實現的應用程序有一個大概的了解。

這些目標可能非常具體,例如在第一季度產生了一定數量的廣告收入,也可能更廣泛,例如在Google Play上獲得了很高的評價。

無論您的愿望清單上有什么其他內容,只要能在盡可能多的用戶面前展示您的應用程序, 總會在該列表中的某個位置出現功能-Android Instant Apps是一項新功能,可以幫助您做到這一點。

Instant Apps通過使您的應用程序可從支持URL的任何位置(包括電子郵件,Google搜索結果,社交媒體上的帖子)被發現和訪問,從而為您提供了一種全新的方式來吸引當前尚未在其設備上安裝應用程序的用戶。平臺,YouTube評論和論壇。

本質上,Instant Apps允許您將每個應用程序功能分離到一個獨立的模塊中。 然后,用戶可以通過點按已映射到該特定模塊的URL來按需加載這些即時應用程序模塊中的任何一個,而無需隨時安裝您的應用程序。

在這個由三部分組成的系列文章中,我將向您展示如何向您的Android項目添加Instant App支持。 在本系列文章的最后,您將創建一個包含兩個單獨的Instant App功能模塊的應用程序,您可以在任何兼容的Android設備上啟動和測試這些模塊。

我們要涵蓋的內容

在第一篇文章中,我將重點介紹什么是Instant Apps,它們如何工作以及為什么要關心它們。 為了給您一些Instant Apps的第一手經驗,我們將使用Android Studio的項目創建向導來生成一個預先配置有Instant App支持的應用程序,這樣您就可以查看所有不同的Instant App組件,而不是而不是簡單地閱讀它們。

在創建預先配置有Instant App支持的應用程序是使用此功能的最快,最簡單的方法時,實際上,您更有可能將Instant App支持添加到現有項目中-因此在第二部分中,我將向您展示如何做到這一點。 我將提供一個可從GitHub下載的應用程序,然后逐步完成重新配置該項目以支持Instant Apps的分步過程。

難題的最后一步是創建多功能的Instant App,因此在第三部分中,我將向您展示如何向應用程序中添加第二個功能模塊,以及如何使用Android App鏈接將此模塊映射到其他URL 。

什么是即時應用程序?

描述即時應用程序的最佳方法之一是查看一個何時使用它們的示例。

想象一下,有一個朋友給您發送了一個貓視頻的鏈接,他們承諾您會愛上您,但是當您點擊該鏈接時,很明顯,您需要先下載一個應用,然后才能觀看該特定視頻。

無論您最終要下載該應用程序,還是忽略鏈接,并有可能錯過互聯網所能提供的最佳貓視頻,這都是糟糕的用戶體驗,而且這是許多Android用戶都熟悉的情況。

我們大多數人都有安裝應用程序以完成一次性任務的經驗。 例如,您可能下載一個應用程序只是為了查看某人發送給您的電子郵件附件,在特定網站上完成購買或跟蹤當前正在發送到您地址的包裹。

現在讓我們再次想象一下貓視頻場景,但是這次應用程序的開發人員將播放視頻內容所需的所有代碼和資源都放置在自己的即時應用程序功能模塊中,并將該模塊映射到www.example.com/video URL。 這次,當您點擊www.example.com/video/cat-video時 ,Google Play識別出該URL與即時應用模塊相關聯,并檢索了播放該視頻所需的所有代碼和資源。 最終結果? 您可以享受在一個盒子一只貓打了20秒,而無需安裝任何東西,這是一個更好的用戶體驗。

為什么要開始使用即時應用功能?

正如您將在本系列的下一篇文章中看到的那樣,向現有項目添加Instant App支持可能是一個艱巨的過程,通常需要您完全改變應用程序的結構方式。

由于重組項目并不是一個輕而易舉的決定,因此在本節中,我將通過涵蓋為您的應用程序添加Instant App支持的所有主要好處,來幫助您確定所有時間和精力是否真的值得項目:

  • 它消除了您的應用程序與新用戶之間的障礙。 通過Google Play安裝應用程序并不是一個特別困難或耗時的過程,但這仍然是您的應用程序與潛在新用戶之間的最大障礙。 無論您花多少時間來制作引人注目的Google Play頁面,大多數用戶都會爭搶該“ 安裝”按鈕,某些人總是會在安裝時退出。
  • 它可以幫助您吸引新用戶。 盡管您始終可以在網絡上的各個位置(例如您自己的網站,博客或社交媒體)上推廣應用,但以前與新用戶建立聯系需要他們在某個時候訪問您應用的Google Play頁面(極少喜歡側加載其應用的用戶)。 即時應用程序使應用程序可以從任何支持URL的位置直接訪問,從而消除了對應用程序Google Play頁面的依賴,從而為您提供了幾乎無限的與新用戶聯系的機會。
  • 它可以確保共享內容是您應用的最佳廣告。 共享您應用內容的用戶是吸引新受眾的最有效方法之一,因此,您將給人留下良好的第一印象! 以前,很難為沒有在您的設備上安裝您的應用程序的用戶提供一致的體驗,但是即時應用程序可讓您確保所有人的無縫原生體驗。
  • 即使面對互聯網限制,也可以幫助用戶訪問您的應用。 盡管Internet覆蓋范圍一直在不斷改善,但是您有時仍可能難以找到快速可靠的網絡,或者您可能正在接近每月的數據限額,并擔心會產生額外的費用。 當您遇到Internet連接緩慢或不一致的問題時,下載整個應用程序可能是一個耗時且令人沮喪的過程,并且當您有可能超出數據限額的危險時,下載新應用程序可能就足夠了。附加費用。 所有即時應用程序模塊必須為4MB或更小,因此即使無法下載整個應用程序,訪問即時應用程序模塊仍然是可行的選擇。
  • 提升位置和時間敏感型應用程序的吸引力。 雖然針對特定地點或活動而設計的應用程序不是一個新概念,但請問自己:我安裝一個我知道只能在有限時間段內使用的應用程序的可能性有多大?某個位置? 即時應用程序通過允許用戶點擊URL即可訪問您應用程序所有最重要的功能,從而可以增加對時間和位置敏感的應用程序的吸引力。

限制與限制

在開始即時應用之旅之前,值得注意的是,目前有一些即時應用無法完成的事情:

  • 訪問設備標識符,例如IMEI和MAC地址。
  • 使用后臺服務。
  • 執行后臺通知。
  • 訪問設備的外部存儲。
  • 訪問已安裝在用戶設備上的應用程序列表,除非這些應用程序特別使自己可被即時應用程序發現。

此外,您的應用程序必須:

  • 可從Google Play商店免費下載。
  • 使用Android 6.0(API級別23)中引入的新權限模型。 由于用戶未安裝即時應用程序,因此沒有機會提前請求權限。 如果您的即時應用程序功能模塊需要訪問敏感的設備功能或用戶信息,那么您將需要在運行時請求這些權限。
  • 支持應用鏈接。 這是用于將每個即時應用程序模塊映射到特定URL的機制。 在下一篇文章中,我將詳細介紹App Links。

最后,如果您的應用屬于Designed for Families計劃的一部分,則您不能將其作為即時應用提供。

設置您的開發環境

在創建具有即時應用程序支持的第一個項目之前,您需要安裝以下內容或更高版本:

  • Android Studio 3.0預覽版
  • Android SDK 6.0
  • Android SDK構建工具26.x
  • Android SDK工具25.x
  • Android SDK平臺工具25.x

您還應該確保擁有最新版本的Android支持庫和Android存儲庫,因此請打開Android Studio的SDK Manager并安裝所有可用的更新。

安裝完上述所有內容后,就可以下載Instant Apps Development SDK:

  • 打開“ SDK管理器”,然后選擇“ SDK工具”選項卡。
  • 選擇Instant Apps Development SDK
  • 點擊應用 。

目前,您只能在運行Android 6.0或更高版本的Nexus 5X,Nexus 6P,Pixel,Pixel XL或Galaxy S7上測試即時應用。 但是,如果您不擁有這些設備中的任何一個,則可以在以下條件下創建一個模擬這些設備之一的Android虛擬設備(AVD):該AVD必須使用x86映像,并且必須包含Google API 。

由于我不擁有任何這些設備,因此我將創建一個模擬Pixel的AVD:

  • 啟動AVD管理器。
  • 單擊創建虛擬設備...按鈕。
  • 選擇“ 像素” ,然后單擊“ 下一步” 。
  • 選擇x86圖像選項卡。
  • 選擇運行Android 6.0并包含Google API的系統映像,例如Marshmallow / 23 / x86 / Android 6.0(Google API) 。
  • 單擊下一步 。
  • 為您的AVD命名,然后點擊Finish 。
  • 啟動您的AVD。

最后,您需要在AVD上登錄Google帳戶:

  • 切換到您的AVD,然后打開設備的啟動器。
  • 選擇Google應用。
  • 輸入Gmail地址和密碼。 這可以是您的真實帳戶,也可以是僅為測試您的Android項目而創建的帳戶。

創建您的第一個即時應用

在Android Studio 3.0 Preview 1及更高版本中,創建具有內置Instant App支持的項目就像選擇一個復選框一樣簡單,因此,我們將創建一個Instant App項目,然后花費本文的其余部分將獲得有關其各種組件的第一手經驗。

請注意,該項目沒有任何應用程序鏈接,因此您將無法在AVD上測試其Instant App組件(這是我們將在第二部分中詳細探討的內容)。

創建項目:

  • 通過從Android Studio工具欄中選擇“ 文件”>“新建”>“新建項目” ,或在Android Studio的“ 歡迎”屏幕中單擊“ 啟動新的Android Studio項目” ,啟動項目創建向導。
  • 為您的項目命名,然后單擊“ 下一步”
  • 最低SDK設置為Android 6.0(棉花糖)。
  • 選擇包括Android Instant應用程序支持復選框,然后單擊下一步
  • 為了使事情變得簡單,請接受默認的模塊名稱( 功能 ),然后單擊“ 下一步”
  • 選擇基本活動 ,然后單擊下一步
  • 在下一個屏幕上,接受所有默認值,然后單擊“ 完成” 。

馬上,我們可以看到該項目的結構與典型的Android項目完全不同,并且由以下模塊組成:

  • 應用程式 可安裝的應用程序模塊,也稱為APK模塊。
  • 基礎。 基本功能模塊。
  • 特征。 盡管此特定項目只有一個,但一個應用程序可以包含多個功能模塊。
  • Instantapp。 即時應用模塊。

除功能模塊外,任何支持即時應用程序的項目都必須具有上述所有模塊,因此讓我們詳細研究每個模塊。

1.應用模塊

應用程序模塊的概念可能并不是什么新鮮事物,但是當您的項目支持即時應用程序時,應用程序模塊的清單似乎比您以前習慣的要空得多:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.jessicathornsby.myapplication.app" />

該文件之所以如此空是有原因的:構建項目時,整個基本要素和要素模塊中所有其他清單文件的內容都會與此文件合并,因此不會永遠保持空白!

如果打開此模塊的build.gradle文件,則會注意到兩個新元素:

dependencies {implementation project(':feature')implementation project(':base') }

在這里,我們聲明我們的應用程序模塊依賴于feature模塊和base模塊。

當您將Instant App支持添加到項目時,您會將相關的代碼和資源分離到功能模塊中,這些功能模塊可以獨立于可安裝的應用程序運行。 但是,這些模塊仍然是可安裝應用程序的一部分,而不是單獨的實體,因此我們的應用程序模塊將功能模塊和基本模塊聲明為依賴項。

2.基本功能模塊

每個即時應用程序項目都必須包含一個基本功能模塊,該模塊包含在所有應用程序模塊中使用的代碼和資源。 例如,如果打開項目的base / res / mipmap文件夾,則會看到該應用程序的所有啟動器圖標,這些圖標顯然將在多個模塊中使用。


由于它包含通用代碼和資源,因此您項目的所有功能模塊都依賴于此單個基本功能模塊。

延續這個主題,基本功能模塊包含在整個項目中使用的清單條目。 例如,您項目的base / src / main / AndroidManifest.xml文件包含應用程序圖標,主題和標簽的設置:

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

另一個值得注意的元素是基本模塊的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 ‘application project’ to add a dependency from the base feature module, to your project’s installable ‘app’ module//application project(':app')//Use ‘feature project’ to reference our project’s feature module, aptly named ‘feature’//feature project(':feature')

您還會注意到,這個特定的build.gradle文件缺少applicationID屬性,并且(擾流器警報)當您檢查功能模塊的build.gradle文件時,會發現完全一樣的東西。 我們項目applicationID 僅在應用模塊的的build.gradle文件中聲明。

基本模塊的build.gradle文件中的application project( : app)行(請參見上文)可確保在所有 build.gradle文件中傳播項目的單個applicationID屬性,這就是為什么我們其余部分都缺少此屬性的原因項目。

3.功能模塊

當您最終要向現有項目添加Instant App支持時,您的最大任務是將應用程序的每個功能提取到其自己的功能模塊中,因為每個功能模塊都包含僅提供此功能所需的代碼和資源。

如果打開項目的功能模塊,則會看到它包含MainActivity類,以及activity_maincontent_main資源文件-本質上是Basic Activity模板中包括的所有組件。


一個功能模塊可以包含多個活動,但是每個模塊必須至少具有一個指定為該模塊的入口點活動的活動。

每個入口點活動都映射到特定的URL,因此,當用戶點擊此URL時,它將加載關聯的活動,并且用戶可以訪問此特定功能模塊。

您可以通過該模塊的清單指定模塊的入口點活動。 本質上,您需要打開此文件,并將以下內容添加到要用作入口點的“活動”中:

  • 具有CATEGORY_LAUNCHER和ACTION_MAIN意圖的意圖過濾器。
  • <data>元素,包含有關您要映射到此入口點活動的URL的所有信息。
  • android:autoVerify屬性。 這告訴系統檢查您的應用是否有權充當此特定URL的默認處理程序。 這是一種重要的安全機制,有助于保護網站所有者免受可能試圖劫持其URL的惡意應用的侵害。

如果打開功能模塊的清單文件,則會看到所有這些代碼已添加到我們的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 ‘applicationID’ 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'

由于所有功能模塊都依賴于基本功能模塊,因此,當用戶首次從您的應用程序請求任何功能時,他們將收到基本功能模塊以及他們實際嘗試訪問的功能模塊。

請注意,盡管此特定項目由基本功能模塊和功能模塊組成,但是如果您的應用僅具有一個您想作為Instant App提供的功能,則可以創建僅由基本功能模塊組成的項目。 在整個系列中,我們將討論Instant App項目的兩種“類型”。

4.即時應用模塊

Instant App模塊的目的很簡單:它充當一個容器,可以容納您所有的功能模塊并將其轉換為Instant App APK。

如果打開該項目的Instant App模塊,那么除了build.gradle文件外,它幾乎是空的,該文件只是將基本功能模塊和功能模塊聲明為依賴項:

apply plugin: 'com.android.instantapp'dependencies {implementation project(':feature')implementation project(':base') }

測試您的應用

由于該項目不包含任何應用程序鏈接,因此我們將無法測試其即時應用程序組件,但是我們仍然可以將該項目作為可安裝的應用程序運行。 這似乎并不特別令人興奮,但是請記住,我們項目的大部分代碼和資源都位于即時應用程序功能模塊中,因此測試我們的項目作為可安裝應用程序的功能非常重要。

啟動我們之前創建的AVD或將兼容的物理Android智能手機或平板電腦連接到您的開發計算機,然后從Android Studio工具欄中選擇“運行”>“運行…”>“應用 ”。

盡管事實上我們所有的MainActivity代碼都位于功能模塊中,但是一旦我們的應用加載,您將看到MainActivity的浮動操作按鈕(FAB)和Hello World消息。 我們在這里看到的是我們的應用程序模塊,它獲取位于單獨的Instant App功能和基本功能模塊中的代碼和資源,并將它們組合為可安裝的應用程序。

結論

在本教程中,我們對Instant Apps的工作原理進行了深入的研究,并探討了您可能希望向Android項目中添加Instant App支持的各種原因。

在理想的情況下,您決定探索Instant Apps的決定與新的Android項目的開始完全吻合,但是不幸的是,成為開發人員很少這么方便! 這是更有可能的是,你必須重新配置現有的項目,以支持即時應用程序,這是不是很簡單,因為選擇Android Studio中的項目創建向導復選框!

在下一篇文章中,我們將深入研究如何向現有項目添加即時應用支持。 我還將向您展示如何實現App Links,因此,在下一篇文章結束時,您將創建一個功能齊全的Instant App,可以在任何兼容的AVD或Android設備上啟動和測試。

翻譯自: https://code.tutsplus.com/tutorials/what-are-android-instant-apps--cms-29283

總結

以上是生活随笔為你收集整理的什么是Android Instant Apps?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。