By overriding LOCAL_MANIFEST_FILE, a package can now specify which
AndroidManifest.xml file to use. This also allows for AndroidManifest.xml to
be in a non-standard location, though that's not recommended.
Change-Id: Ib6d1baeef7601e5a93d4ce64d18883d45373fc12
This lets you use the source code from one apk to build a new one
with a new module name, a new android package name and optionally,
a new certificate.
To use this, in a makefile, add this:
$(call inherit-package, \
packages/apps/Music/Android.mk, \
Music, \
MusicFork, \
my_cert, \
com.example.music)
You don't need the LOCAL_PATH and CLEAR_VARS stuff. It will override
only the packages that are defined in the makefile name you give, but
if other modules of other types are defined, you will get an error
saying that it's defined twice. In that case, you need to move the
duplicate library (for example a .so) out into a different makefile.
A LOCAL_OVERRIDES_PACKAGES entry is automatically created for the
forked app.
Before, LOCAL_RESOURCE_DIR got messed up when the build system
tried to find the whole LOCAL_RESOURCE_DIR string in each
overlay directory.
This change splits LOCAL_RESOURCE_DIR before appending it to
the overlay directory paths.
I've verified that this now works:
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/overlay $(LOCAL_PATH)/res
Change-Id: Iea47f94a14720af0ca4b422aec30acf4acbe13cf
Setting LOCAL_CERTIFICATE to "EXTERNAL" now marks an apk (either a
prebuilt or otherwise) as needing the default test key within the
system, but one that should be signed after the target_files is
produced but before sign_target_files_apks does the rest of the
signing. (We use this to ship apps on the system that are signed by
third parties, like Facebook.)
1. Dedup LOCAL_JAVA_LIBRARIES.
2. Even no resource or asset for a package, we still need to set
package_expected_intermediates_COMMON, which is anyway used by ProGuard.