亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android 即時功能:這種方法是否存在根本缺陷?

Android 即時功能:這種方法是否存在根本缺陷?

達令說 2021-12-30 20:54:47
在從 google gradle 插件 3.1.4 更新到現在最新的 3.2.1 之后,我試圖讓我的應用程序再次構建,我認為我首先讓我的 Instantapp 工作的方法可能有問題,所以我發布此問題以丟棄或確認該問題,并在這種情況下要求采用不同的方法。簡而言之,我的應用程序是一個在資產文件夾中有許多圖形的游戲。為了使 Instantapp 符合 Google Play 規定的 10 MB 限制,我必須刪除一些我在免安裝版本中不需要的資產以及具有更高分辨率的資產,同時保留其余資產。此外, Instantapp 的代碼與安裝的代碼略有不同,因此我覆蓋了那里的一些方法和類。最小的 com.android.instantapp 模塊似乎不能包含資產和代碼,所以我創建了一個中間功能模塊來保存這些。因此,經過一番努力(主要是使用 firebase 和 com.google.gms.google-services 插件)后,我想出了這種方法,最終在 3.1.4 版的 gradle 插件(com.android.tools.構建:gradle:3.1.4)唯一奇怪的是,我必須將標志“baseFeature”設置為 android_instant_feature 和 android_common 功能模塊。但它奏效了,我終于可以發布我的游戲的即時版本,而安裝的版本也繼續構建得很好?,F在,一旦我更新到 google gradle 插件的 3.2.1 版,即使我沒有更改任何其他內容,問題也會開始。在對 gradle 腳本進行一些調整后,包括從 android_instant_feature 模塊中刪除 baseFeature true 標志,我得到了一個更簡短的錯誤,但我真的不能說我是否比以前更好。錯誤是這樣的:預期配置 ':android_instant_feature:debugFeatureCompileClasspath' 只包含一個文件,但是它不包含任何文件?,F在我只是被擋在了這里,不知道該做什么或下一步該往哪里看,所以我想知道我的方法是否存在根本性的缺陷,因為我經過一些反復試驗想出了它,但我沒有確定沒問題,在這種情況下,我可以使用哪種其他方法來滿足我的要求和 Google 的要求,無論它們是什么。根據@TWL 的要求,這些是我用于這些模塊的 Gradle 文件。我已經用 com.myapp.id 替換了真實的應用程序 ID,其余的正是我所擁有的,包括很多我認為與問題無關的 libGDX 內容,盡管我更愿意以準確性的名義將其留在那里
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

感謝您提供 gradle 文件,看起來您的 gradle 依賴項被混淆了。


包含 的com.android.feature模塊baseFeature true應該是其依賴項也包含application project()和 的模塊feature project()。這是您錯誤的主要原因:


預期配置 ':___:debugFeatureCompileClasspath' 只包含一個文件,但它不包含任何文件。


因此,從您提供的內容來看,您的application project()和feature project()是分開的。


要解決此問題,您的“基礎”android_common應該是:


application project(':android')

feature project(":android_instant_feature")

你的“非基本特征”android_instant_feature應該是:


implementation project(':android_common)

這不會改變您項目的整體結構。


您com.android.application將使用以下庫進行編譯:core和android_common.

您com.android.instantapp將使用免安裝應用 apks:android_common.apk和android_instant_feature.apk.

現在,為什么它baseFeature以前使用 2x ?不知道,不應該...


曾經有一個頁面 @ https://g.co/instantapps解釋了免安裝應用的結構,但您可以參考我之前的一篇文章,其中涉及概述和參考鏈接:如何訪問來自另一個功能模塊的活動


旁注:我注意到implementation project(":core")你的模塊中有一個共同點(減去 Instantapp)。如果那純粹是一個像 的庫com.android.library,那么你不應該像那樣設置它。您實際上可以將它放在您的基礎中:api project(":core")并刪除其他地方的所有其他引用。將它聲明為api意味著任何也實現了基類的模塊也將暴露于這個依賴項。(試試看,在一些罕見的情況下,這取決于您core擁有的其他庫,但請嘗試查看)。


查看完整回答
反對 回復 2021-12-30
  • 1 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號