我正在尝试构建一个Android开源项目汽车映像,并使用soong预装系统应用程序。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之后,在构建应用程序时,我会得到一个未绑定的前缀错误。
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 如何解决这一问题?
发布于 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,并将其包括如下所示:
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/root/privapp-permissions-<DEVICE>.xml:system/etc/permissions/privapp-permissions-<DEVICE>.xml将应用程序添加到AOSP构建中(不能链接,但可以搜索)
默认启动程序中的库:如何在AOSP构建中设置默认启动程序?
)中。
https://stackoverflow.com/questions/64658888
复制相似问题