首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用soong构建AOSP失败

使用soong构建AOSP失败
EN

Stack Overflow用户
提问于 2020-11-03 08:03:57
回答 1查看 1.4K关注 0票数 1

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

Android.bp

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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>

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

代码语言:javascript
复制
/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之后,在构建应用程序时,我会得到一个未绑定的前缀错误

代码语言:javascript
复制
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 

如何解决这一问题?

EN

回答 1

Stack Overflow用户

发布于 2020-11-11 21:01:39

@Pie绝对是一个共同的领域。

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

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

接下来,您将在device.mk中添加这个包名为PRODUCT_PACKAGES += <PACKAGE_NAME>。这将包括该应用程序作为系统应用程序在设备上。不需要其他步骤,您也可以在/system/priv-app下找到这个应用程序。

根据具体情况,您还可能需要priv-app-permissions.xml,并将其包括如下所示:

代码语言:javascript
复制
PRODUCT_COPY_FILES += \
                    $(LOCAL_PATH)/root/privapp-permissions-<DEVICE>.xml:system/etc/permissions/privapp-permissions-<DEVICE>.xml

将应用程序添加到AOSP构建中(不能链接,但可以搜索)

  • 如何在AOSP中添加应用程序?
  • ,如何将第三方库添加到Android构建中?在向Android
  • 添加外部JAR时出现
  • 错误--如何解决错误:该属性必须本地化。(在值为'TOP_LEFT')
  • X的“text”(java:sdk)中,不应该将一个jar文件从libs/链接到Android.mk
  • Add one android项目作为AOSP应用程序

默认启动程序中的库:如何在AOSP构建中设置默认启动程序?

  • 将本机服务添加到aosp
  • Building中的aosp
  • Building源code
  • Dependencies中的一个特定模块(2 Android.mk文件

)中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64658888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档