I am trying to build an Android Open Source Project automotive image with a preinstalled system application using soong. The android system application is written in 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>
When I try to build using these files, I get
/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.
After adding 'tools:replace="android:appComponentFactory" to AndroidManifest.xml, I get an unbound prefix error when the application is being built. The error is as below.
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
How to resolve this issue?