【问题标题】:AOSP build failure using soong使用 soong 的 AOSP 构建失败
【发布时间】:2021-02-15 21:32:17
【问题描述】:

我正在尝试使用 soong 构建一个带有预装系统应用程序的 Android 开源项目汽车图像。 android系统应用是用Kotlin编写的。

Android.bp

android_app {
    name: "CarApp",

    srcs: ["src/**/*.kt", "src/**/*.java"],

    resource_dirs: [
     "res/"
    ],

    libs: [
     "telephony-common",
    ],
    certificate: "platform",
    privileged: true,
    platform_apis: true,
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },
    static_libs: [
     "android.car",
        "androidx.recyclerview_recyclerview",
        "androidx.recyclerview_recyclerview-selection",
        "androidx.preference_preference",
        "androidx-constraintlayout_constraintlayout",
        "android-support-design"
     ],

     
     plugins: ["dagger2-compiler-2.19"],

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media.mycarapp">

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-permission android:name="android.car.permission.CAR_SPEED" />
    <uses-permission android:name="android.car.permission.CAR_POWERTRAIN" />
    <uses-permission android:name="android.car.permission.CAR_ENERGY" />

    <application 
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
        <activity android:name=".SetupOptionsList"></activity>
        <activity android:name=".StatusActivity"></activity>
        <activity android:name=".SetupActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

当我尝试使用这些文件进行构建时,我得到了

/out/soong/.intermediates/packages/apps/Car/CarApp/CarApp/android_common/manifest_fixer/AndroidManifest.xml:21:18-86 Error:
    Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from AndroidManifest.xml:21:18-86
    is also present at AndroidManifest.xml:21:18-91 value=(android.support.v4.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:12:5-23:19 to override.

'tools:replace="android:appComponentFactory" 添加到 AndroidManifest.xml 后,我在构建应用程序时收到未绑定的 prefix error。错误如下。

out/soong/host/linux-x86/bin/manifest_fixer --minSdkVersion 30 --targetSdkVersion 30 --raise-min-sdk-version --extract-native-libs=true --uses-non-sdk-api packages/apps/Car/JulioApp/AndroidManifest.xml o
ut/soong/.intermediates/packages/apps/Car/CarApp/CarApp/android_common/manifest_fixer/AndroidManifest.xml
error: unbound prefix: line 13, column 4 

如何解决这个问题?

【问题讨论】:

  • 切勿使用不常见的缩写。什么是 AOSP? Is it Android Open Source Project?
  • 是的。更新
  • AOSP 是一个很常见的缩写。

标签: android android-source android-soong


【解决方案1】:

@Pie - AOSP 肯定在公共域中。

如果您专门尝试使用 soong 构建此代码,那么此答案不适合您。但下面我描述了一种替代方法。

您无需在 AOSP 中构建 kotlin 代码。在 Android Studio 中构建 APK,使用系统证书签名,然后在可能 ~/AOSP/packages/apps/&lt;your-app&gt; 下创建一个文件夹,并在其中添加两个文件。您将找到有关如何将 APK 添加到 AOSP 的许多不同 SO 问题的确切信息。因此,您将创建 Android.mk 文件并将该 apk 文件放在那里。在您的 mk 文件中,您会提到它是预签名的。

接下来,您将在 device.mk 中将此包名称添加为 PRODUCT_PACKAGES += &lt;PACKAGE_NAME&gt;。这将包括该应用程序作为设备上的系统应用程序。无需其他步骤,您也可以在/system/priv-app 下找到此应用。

根据情况,您可能还需要priv-app-permissions.xml 并像这样包含:

PRODUCT_COPY_FILES += \
                    $(LOCAL_PATH)/root/privapp-permissions-<DEVICE>.xml:system/etc/permissions/privapp-permissions-<DEVICE>.xml

将应用程序添加到 AOSP 构建(无法链接,但在 SO 上搜索)

  • 如何在 AOSP 中添加应用程序?
  • 如何将第 3 方库添加到 Android AOSP 构建中?
  • 将外部 JAR 添加到 Android AOSP 构建时出错
  • 如何解决错误:该属性必须本地化。 (在“文本”处,值为“TOP_LEFT”)
  • X (java:sdk) 不应链接到 Y (java:platform)
  • 将 jar 文件从 libs/ 添加到 Android.mk
  • 在 AOSP App 中添加一个 android 项目作为库
  • 默认启动器:如何在 AOSP 构建中设置默认启动器?
  • 将本机服务添加到 aosp
  • 在 android 源代码中构建特定模块
  • 2 个 Android.mk 文件之间的依赖关系

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 2022-01-03
    • 2020-03-08
    • 2023-03-29
    • 2018-06-09
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多