android - Android Automotive 支持 Jetpack Compose 吗?

标签 android android-jetpack-compose android-automotive automotive

我们正在尝试发布 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):

  1. Parked apps可以用 Views 或 Compose 编写,并且不使用 Car App Library 模板系统
  2. 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/

相关文章:

android - 从 ListView 获取检查项目时,获取 SparseBooleanArray.size() 总是 0

php - 为 FTP 存储通行证并与 PHP 进行安全通信

代码 View 中的 Android Studio 空指针警告/通知

java - 如何在适配器类的菜单中找到图标的ViewById

android - 无法使用 Android Auto 'android.car' 库 - 引发 RuntimeException : Stub

android - Jetpack compose 在形状上绘图

android - 更新jetpack compose中图像中的位图

Android Jetpack 撰写 : How to show styled Text from string resources

android-auto - Android Automotive 支持 Android Auto 和 CarPlay

android-auto - Android 汽车操作系统中的 TabTemplate 示例