我们正在尝试发布 Android Automotive 应用,但在扩展 CarAppService 时遇到一些问题。
免责声明:我对 Android Automotive 非常陌生,因此这个问题可能有一个明显的答案。
我们正在处理的代码是由之前的团队(我们没有与之联系)开发的,他们在应用程序中使用了 Jetpack Compose。他们使用 MainActivity 代替 CarAppService,使用 setContent 代替 onGetTemplate(下面的代码 fragment )。
MainActivity 中实现主组件的函数(Calculator())
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
carInfo = fetchCarInfo()
fetchUxRestrictions()
setContent {
Theme {
Calculator(this, isCarRestrictionNoSetup)
}
}
}
来自 AndroidManifest.xml 文件:
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="androidx.car.app.category.POI" />
</intent-filter>
<meta-data android:name="distractionOptimized" android:value="true" />
</activity>
我发现有关在 Android Automotive 中使用 Jetpack Compose 的文档非常少,在此视频 https://android-developers.googleblog.com/2021/03/android-auto-apps-powered-by-jetpack.html 中,在 09:38,它表示“[...]目前以及可能在可预见的 future ,您只能构建依赖于模板的应用程序”。
在我通过 CarAppService 在线找到的示例中,onGetTemplate 始终用于构建 Android Automotive 应用程序并为其设计样式。
经过一些研究,我越来越确定我们不能将 Jetpack Compose 用于该应用程序,并且它必须基于预定义的模板构建。如果是这样的话,我担心的是我们必须废弃以前团队编写的代码并重新开始,这就是为什么我想在做任何事情之前在这里问一下。
我的问题是,是否可以使用 Jetpack Compose 来设计 Android Automotive 应用程序的样式,还是必须使用模板?
最佳答案
一般来说,不可能使用 Jetpack Compose 为 Android Automotive OS 编写将通过 Play Store 分发的应用程序。不过,也有一些异常(exception):
- Parked apps可以用 Views 或 Compose 编写,并且不使用 Car App Library 模板系统
- The Settings/Sign In activities of Media applications还可以使用 Views 或 Compose。
需要注意的一点是,目前 Android Automotive OS 的 Play 商店仅允许使用以下类别的应用
- 媒体(音频 - 例如音乐、播客、有声读物)
- 兴趣点
- 导航
- 停放的应用程序
- 视频
- 游戏
- 浏览器
关于android - Android Automotive 支持 Jetpack Compose 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74652736/