45

I need to add some 3rd party APKs to my AOSP build. What folder should I keep these APKs so that when I build the code and the image is created, it is installed in the emulator?

It looks like the system apps are kept in the packages/app folder so I need to know where the third party APKs are kept.

4

4 回答 4

67

Adding third party APKs to the build is definitely possible.

Also APKs and APPs with source code go to the same place; the package/app folder.

Adding a new APK to the build

In the AOSP root add the folder:

<aosp root>/package/app/< yourappfolder >

Then inside this folder add:

  • empty Android.mk
  • < yourapp.apk >

The android make file should have the reference to your apk, add this to your Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := < your app folder name >

LOCAL_CERTIFICATE := < desired key >

LOCAL_SRC_FILES := < app apk filename >

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

include $(BUILD_PREBUILT)

Create an entry in the commons.mk (from AOSP 8.1.0 onwards it is called core.mk, and is usually found in build/target/product) for your apk add the line (check where all the others are)

PRODUCT_PACKAGES += < what you have defined in LOCAL_MODULE, it should be your app folder name >

Compile the AOSP and you have a brand new app installed on the system.

Notes

  • If your APK is already signed, use the special value PRESIGNED as value for LOCAL_CERTIFICATE
  • If you want your APK to end up in the /data/app/ directory, add the line LOCAL_MODULE_PATH := $(TARGET_OUT_DATA) before the line include $(BUILD_PREBUILT)
于 2013-11-22T05:25:40.173 回答
7

The Android.mk presented above will install the APK in /system/app

If you wish to install the APK in /data/app you will need to add the following the line to Android.mk before line include $(BUILD_PREBUILT)

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)
于 2015-11-30T12:02:10.003 回答
5

You could also do the following in the target output dir:

<path-to-your-build-dir>/host/linux-x86/bin/simg2img system.img temp.img
mkdir system_root
sudo mount -t ext4 -o loop temp.img system_root

At this point you can make whatever changes you'd like to the files in system_root, i.e. adding apks to system/app etc...

When you're done just go back down to the output dir and do:

sudo umount system_root
<path-to-your-build-dir>/host/linux-x86/bin/img2simg temp.img system.img

You can now flash system.img using fastboot as usual.

于 2013-01-26T17:33:33.743 回答
1

Follow the first answer to make the apk and Android.mk file and place it where it is supposed to. But now there is no core.mk file in build/target/product but it has been renamed to handheld_product.mk So, add your app's folder name there.

于 2020-12-23T04:22:24.893 回答