Google Play:將現(xiàn)有游戲轉(zhuǎn)換為免安裝游戲

來源: Google Developers
作者:Google Developers
時(shí)間:2020-12-07
16878
用于設(shè)置支持Google Play免安裝體驗(yàn)的應(yīng)用的步驟(如創(chuàng)建您的第一個(gè)免安裝應(yīng)用中所述)也適用于游戲。本指南著重介紹專用于游戲的一些設(shè)置步驟。

用于設(shè)置支持Google Play免安裝體驗(yàn)的應(yīng)用的步驟(如創(chuàng)建您的第一個(gè)免安裝應(yīng)用中所述)也適用于游戲。本指南著重介紹專用于游戲的一些設(shè)置步驟。

您可以使用Unity(無論是否帶有Google Play Instant Unity插件)、Cocos2D、Android Studio或自己的自定義引擎,開發(fā)支持Google Play免安裝體驗(yàn)的游戲。

本指南假定您已了解自己想要提供的游戲體驗(yàn)。如果您想了解制作高品質(zhì)游戲的理念和最佳做法,請參閱支持Google Play免安裝體驗(yàn)的游戲的用戶體驗(yàn)最佳做法。

此外,在發(fā)布支持Google Play免安裝體驗(yàn)的游戲前,您還應(yīng)查閱技術(shù)要求核對清單。

指定入口點(diǎn)

包含以下intent過濾器的Activity將作為Google Play免安裝體驗(yàn)的入口點(diǎn):

<activity android:name=".GameActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

當(dāng)用戶點(diǎn)按Play商店中的立即體驗(yàn)或Google Play游戲應(yīng)用中的立刻開玩按鈕時(shí),系統(tǒng)便會(huì)啟動(dòng)該Activity。您也可使用深層鏈接API直接啟動(dòng)該Activity。

注意:您可以將此入口點(diǎn)Activity與其他幾個(gè)Activity一起打包在一個(gè)模塊中,用以提供游戲的免安裝體驗(yàn)。

定義正確的版本號(hào)

游戲的免安裝體驗(yàn)版的版本號(hào)必須低于游戲的可安裝版本的版本號(hào)。通過這種方式對應(yīng)用進(jìn)行版本控制,有助于讓玩家從Google Play免安裝體驗(yàn)過渡到在自己的設(shè)備上下載并安裝游戲。Android框架將這一過渡視為應(yīng)用更新。

注意:如果玩家在自己的設(shè)備上安裝了游戲,則當(dāng)用戶通過Google Play或某個(gè)鏈接啟動(dòng)免安裝體驗(yàn)時(shí),將始終運(yùn)行該安裝版,而非免安裝體驗(yàn)版。即使所安裝的游戲版本低于免安裝體驗(yàn)的版本,也是如此。

為確保遵循建議的版本控制方案,請遵循以下某種策略:

從頭開始重新設(shè)置Google Play免安裝體驗(yàn)的版本號(hào)。

將安裝式APK的版本號(hào)提高一個(gè)較大的數(shù)值(如1000),以確保有足夠的空間來提高免安裝體驗(yàn)的版本號(hào)。

您可以在兩個(gè)單獨(dú)的Android Studio項(xiàng)目中開發(fā)您的免安裝游戲和可安裝游戲。但是,如果您這樣做,則必須執(zhí)行以下操作才能將游戲發(fā)布到Google Play平臺(tái)上:

在兩個(gè)Android Studio項(xiàng)目中使用相同的軟件包名稱。

在Google Play管理中心將兩個(gè)變體上傳到同一應(yīng)用。

注意:版本號(hào)不是面向用戶的值,主要由系統(tǒng)使用。面向用戶的版本名稱沒有限制。

如需詳細(xì)了解游戲版本設(shè)置,請參閱控制應(yīng)用版本。

支持執(zhí)行環(huán)境

與其他應(yīng)用一樣,支持Google Play免安裝體驗(yàn)的游戲也在設(shè)備上的受限沙盒內(nèi)運(yùn)行。為了支持此執(zhí)行環(huán)境,請完成以下各部分中所示的步驟。

選擇停用明文流量

支持Google Play免安裝體驗(yàn)的游戲不支持HTTP流量。如果游戲以Android 9(API級(jí)別28)或更高版本為目標(biāo)平臺(tái),Android會(huì)默認(rèn)停用游戲中的明文支持。

而如果游戲以Android 8.1(API級(jí)別27)或更低版本為目標(biāo)平臺(tái),則必須創(chuàng)建一個(gè)網(wǎng)絡(luò)安全配置文件。在此文件中,應(yīng)將cleartextTrafficPermitted設(shè)為false,如以下代碼段所示:

res/xml/network_security_config.xml

<?xml version="1.0"encoding="utf-8"?>

<network-security-config&gt;

<domain-config cleartextTrafficPermitted="false">

<domain includeSubdomains="true"&gt;secure.example.com&lt;/domain>

</domain-config>

</network-security-config>

更新目標(biāo)沙盒版本

更新免安裝游戲的AndroidManifest.xml文件,使其以Google Play免安裝體驗(yàn)支持的沙盒環(huán)境為目標(biāo)平臺(tái)。您可以通過將android:targetSandboxVersion屬性添加到游戲的<manifest&gt;元素來完成此更新,如以下代碼段所示:

<manifest

xmlns:android="http://schemas.android.com/apk/res/android"

...

android:targetSandboxVersion="2"...>

如需了解詳情,請參閱targetSandboxVersion屬性文檔。

不要依賴于緩存或應(yīng)用數(shù)據(jù)的存在

已下載的免安裝體驗(yàn)仍會(huì)保留在用戶的設(shè)備上,直到免安裝體驗(yàn)緩存被清除。系統(tǒng)會(huì)在出現(xiàn)以下情況時(shí)執(zhí)行清除操作:

由于設(shè)備的可用內(nèi)存不足,系統(tǒng)會(huì)對免安裝體驗(yàn)緩存進(jìn)行垃圾回收。

用戶重啟設(shè)備。

如果出現(xiàn)上述任一情況,用戶必須重新下載免安裝體驗(yàn)才能與之互動(dòng)。

如果系統(tǒng)運(yùn)行所用的存儲(chǔ)空間很少,可能會(huì)將免安裝體驗(yàn)的用戶數(shù)據(jù)從內(nèi)部存儲(chǔ)空間中移除。因此,建議您定期將用戶數(shù)據(jù)與游戲服務(wù)器進(jìn)行同步,以便保留用戶的進(jìn)度。

縮減APK的大小

與其他類型的應(yīng)用不同,支持Google Play免安裝體驗(yàn)的游戲具有15MB的下載大小限制。為了創(chuàng)建此大小的游戲,您可能需要重構(gòu)游戲的邏輯。本部分將介紹一些可以幫助您優(yōu)化游戲大小的工具和技巧。

工具

下面的工具可以幫助您確定哪些內(nèi)容構(gòu)成了游戲的大?。?/span>

APK分析器:提供關(guān)于已編譯的APK所含內(nèi)容的完整視圖。通過該視圖,您可以了解各個(gè)元素在總體大小中所占的字節(jié)數(shù)。此工具可以快速檢查游戲所用的資源、素材資源、邏輯和原生庫的大小。

Bloaty McBloatface:顯示二進(jìn)制文件的大小配置文件。

Android GPU檢查器:在不重新編譯游戲的情況下,查看縮減紋理大小對文件大小的影響。

技巧

下面列出的技巧可以幫助您縮減游戲的大?。?/span>

提取游戲的部分邏輯并將其放入一個(gè)或多個(gè)功能模塊中,這些模塊不會(huì)計(jì)入大小限制。

降低游戲紋理的分辨率。

考慮使用WebP格式,特別是在GPU上使用未壓縮的紋理時(shí)。以WebP格式創(chuàng)建的圖像的質(zhì)量與JPEG圖像的質(zhì)量相同,但大小會(huì)縮減15%到30%。雖然解壓縮WebP圖像需要花費(fèi)更長的時(shí)間,但此時(shí)間仍然比下載游戲紋理所需的時(shí)間要短得多。Google也將此格式整合到了開源游戲引擎中。

壓縮或重復(fù)使用聲音和音樂。

使用不同的編譯標(biāo)記來幫助縮小二進(jìn)制文件:

-fvisibility=hidden是最重要的一個(gè)。在cmake中,您可以按照如下方式來指定它:

$set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)

-Oz對縮減大小也很重要。如果使用gcc進(jìn)行編譯,請改用-Os。

-flto有時(shí)可以縮減文件大小。

連接器標(biāo)記:將--gc-sections和編譯器標(biāo)記(如-ffunction-sections和-fdata-sections)搭配使用。

使用Proguard壓縮代碼和資源。

使用Gradle 4.4或更高版本生成更小的DEX文件。

實(shí)現(xiàn)資源的云端分發(fā)。

將大型游戲分割為多個(gè)APK

即使采用了縮減APK大小的建議,也可能很難通過優(yōu)化Google Play免安裝體驗(yàn)來使游戲容納到單個(gè)15MB的APK中。為克服這一困難,您可以將游戲分割為多個(gè)APK。玩家可以先下載主要的基礎(chǔ)APK,然后在他們玩游戲的過程中,游戲可以從后臺(tái)調(diào)用其他拆分APK。

例如,基礎(chǔ)APK可以包含核心游戲引擎以及顯示加載屏幕所需的資源?;A(chǔ)APK啟動(dòng)后,它會(huì)顯示加載屏幕,并立即請求包含游戲和關(guān)卡數(shù)據(jù)的其他拆分APK。在這個(gè)拆分APK可用后,它可以將其資源加載到游戲引擎中,并向玩家提供開始游戲所需的內(nèi)容。

采用用戶體驗(yàn)最佳做法

將游戲配置為支持免安裝體驗(yàn)后,您可以添加以下各部分中介紹的邏輯以提供良好的用戶體驗(yàn)。

檢查游戲是否在運(yùn)行免安裝體驗(yàn)

如果游戲的部分邏輯依賴于用戶是否參與了免安裝體驗(yàn),請調(diào)用isInstantApp()方法。如果當(dāng)前正在運(yùn)行的進(jìn)程是免安裝體驗(yàn),此方法會(huì)返回true。

通過執(zhí)行此檢查,您可以確定應(yīng)用是需要在有限的執(zhí)行環(huán)境中運(yùn)行,還是可以利用平臺(tái)功能。

顯示安裝提示

如果您構(gòu)建了Google Play免安裝試玩體驗(yàn),游戲應(yīng)在某個(gè)時(shí)刻提示玩家在其設(shè)備上安裝完整版游戲。為此,請使用Google APIs for Android中的showInstallPrompt()方法。

如需進(jìn)一步了解應(yīng)如何以及何時(shí)提示玩家安裝游戲,請參閱支持Google Play免安裝體驗(yàn)的游戲的用戶體驗(yàn)最佳做法。

將數(shù)據(jù)轉(zhuǎn)移到安裝式體驗(yàn)

如果玩家喜歡您的試玩體驗(yàn),他們可能會(huì)決定安裝完整版游戲。為了提供良好的用戶體驗(yàn),請務(wù)必將玩家的游戲進(jìn)度從免安裝體驗(yàn)轉(zhuǎn)移到完整版游戲上。

如果玩家使用的設(shè)備搭載的是Android 8.0(API級(jí)別26)或更高版本,并且您的游戲?qū)argetSandboxVersion指定為2,則玩家的游戲進(jìn)度會(huì)自動(dòng)轉(zhuǎn)移到完整版游戲上。否則,您必須手動(dòng)轉(zhuǎn)移與玩家游戲進(jìn)度相關(guān)的數(shù)據(jù)。為此,請使用以下某個(gè)API:

對于使用搭載Android 8.0(API級(jí)別26)或更高版本的設(shè)備的用戶,請使用Cookie API-應(yīng)用示例

如果玩家可以在搭載Android 7.1(API級(jí)別25)及更低版本的設(shè)備上與您的體驗(yàn)互動(dòng),請?zhí)砑訉torage API的支持-應(yīng)用示例

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Google Developers,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號(hào)登錄/注冊
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家