集成 car-ui-lib 时出现问题

问题描述

我想将 car-ui-lib 集成到我的项目中。我在此 google git(src/main/jni) 文件中手动创建了 Android.mk 在我构建我的项目后,android studio 创建 cpp 文件夹并在那里添加我的 Android.mk 文件,在 build.gradle 模块中使用这段代码

   sourceSets { main {
        res.srcDirs = ['src/main/res']
    } }

    externalNativeBuild {
        ndkBuild {
            path "src/main/jni/Android.mk"
        }
    }

    useLibrary 'android.car'

现在的问题是,car-ui 组件仍未显示,我尝试了这些导入:

import com.android.car.ui.toolbar.TabLayout;
import com.android.car.ui.core.CarUi;

但它仍然显示“无法解析符号 ui”

我也尝试了以下 Android.mk 代码,但问题仍然存在。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
CAR_UI_RRO_SET_NAME := oem
LOCAL_MODULE := car-ui
CAR_UI_RESOURCE_DIR := $(LOCAL_PATH)/res
CAR_UI_RRO_TARGETS := $(CAR_UI_RRO_PACKAGE_NAMES)
CAR_UI_GENERATE_RRO_SET := $(call my-dir)/generate_rros.mk
LOCAL_STATIC_ANDROID_LIBRARIES := car-ui-lib
include $(BUILD_STATIC_LIBRARY)

我也试过他们的 official documentation 但仍然没有任何效果。 任何教程/帮助将不胜感激:)

解决方法

Android.mk/Android.bp 是 AOSP 构建系统的 makefile,它们与 Android Studio(或 Gradle)不兼容。使用前者构建 Android 操作系统和系统应用程序,使用后者构建常规应用程序。

您需要做的是在 AOSP 树中创建一个新文件夹并从此处构建它。您可以先复制该paintbooth 测试应用程序(不要忘记更改包名称)。然后您可以通过“make YourPackageName”构建应用程序并使用“adb root && adb remount && adb sync”推送到您的设备。请注意,这需要先构建并刷新您自己的整个系统映像(执行并刷新完整的 AAOS 构建)。

,

虽然 Gradle 配置中的这一行 useLibrary 'android.car' 将允许您使用 car-ui-lib,但仍有许多 API 在公共版本中不可用。我相信 car-ui-lib 仍在努力开发中,所以如果您真的需要使用 Android Studio 项目中的代码,则需要使用构建 AAOS 时可以找到的 car-ui-lib jar。你可以在这个路径下找到它:

out/target/common/obj/JAVA_LIBRARIES/android.car_intermediates/classes.jar

如果您将项目从 Android Studio 移至平台,那么您将能够使用这些 api,前提是您的 makefile 中有正确的配置:LOCAL_STATIC_ANDROID_LIBRARIES := car-ui-lib

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...