我有一个涉及以下模块的项目:
使用 Android Studio 进行此配置一切正常。 如果我取消勾选
当我创建一个应用程序包并将其上传到Play商店,并在Play商店中单击“立即尝试”,它的行为就像未选择
我是否可以使其表现得像已选择
“立即尝试”按钮是否只运行
app
bookingfeature
(开启即时功能)map
(未开启即时功能)
app
包含一些常用代码和资源,以及一个起始活动,其逻辑可根据是否作为即时应用运行将应用程序路由到正确的目标。
bookingfeature
包含一个活动和一些片段,我想部署到即时应用程序中。
map
包含其余的应用程序(正在进行工作,以将其拆分成更多模块)使用 Android Studio 进行此配置一切正常。 如果我取消勾选
bookingfeature
的框,显然它将无法工作,因为该功能不存在。当我创建一个应用程序包并将其上传到Play商店,并在Play商店中单击“立即尝试”,它的行为就像未选择
bookingfeature
一样。我是否可以使其表现得像已选择
bookingfeature
,并将其包含在 app
模块中?还是我必须将所有代码从 bookingfeature
移动到 app
中?“立即尝试”按钮是否只运行
app
模块,没有改变它的方法吗?
应用程序
清单:
<manifest …>
<dist:module dist:instant="true" />
<application
…
android:name=“.App”>
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
bookingfeature
清单:
<manifest ...>
<dist:module
dist:instant="true"
dist:title="@string/title_bookingfeature">
<dist:delivery>
<dist:install-time />
</dist:delivery>
<dist:fusing dist:include="false" />
</dist:module>
<application>
<activity
android:name=".booking.view.BookingActivity"/>
</application>
</manifest>
MainActivity
:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil
.setContentView(this, R.layout.activity_main)
if (isInstantApp(this)) {
findNavController(R.id.main_nav_host).navigate(R.id.booking_activity)
} else {
findNavController(R.id.main_nav_host).navigate(R.id.splash_activity)
}
finish()
}
}
导航
:
...
<activity
android:id="@+id/booking_activity"
android:name="x.x.x.booking.view.BookingActivity"
app:moduleName="bookingfeature" />
<activity
android:id="@+id/splash_activity"
android:name="x.x.map.splash.SplashActivity"
app:moduleName="map" />
编辑:
当我从活动中移除finish()
时,它实际上会启动BookingActivity并安装功能模块。但这不是我想要的。我希望在下载即时应用程序时包含该模块。