Add versionCode to split manifest; compile.
To verify consistency at install time, all APK manifests must declare the same package name and version code. Also start compiling the manifest, since versionCode is an attribute. Bug: 14975160 Change-Id: I2a1a769bd3dfde05b19563af5ca9b6c15a9c95ff
This commit is contained in:
@@ -900,8 +900,8 @@ status_t updatePreProcessedCache(Bundle* bundle)
|
||||
return 0;
|
||||
}
|
||||
|
||||
status_t generateAndroidManifestForSplit(const String16& package, const sp<ApkSplit>& split,
|
||||
sp<AaptFile>& outFile) {
|
||||
status_t generateAndroidManifestForSplit(Bundle* bundle, const sp<AaptAssets>& assets,
|
||||
const sp<ApkSplit>& split, sp<AaptFile>& outFile, ResourceTable* table) {
|
||||
const String8 filename("AndroidManifest.xml");
|
||||
const String16 androidPrefix("android");
|
||||
const String16 androidNSUri("http://schemas.android.com/apk/res/android");
|
||||
@@ -910,8 +910,19 @@ status_t generateAndroidManifestForSplit(const String16& package, const sp<ApkSp
|
||||
// Build the <manifest> tag
|
||||
sp<XMLNode> manifest = XMLNode::newElement(filename, String16(), String16("manifest"));
|
||||
|
||||
// Add the 'package' attribute which is set to the original package name.
|
||||
manifest->addAttribute(String16(), String16("package"), package);
|
||||
// Add the 'package' attribute which is set to the package name.
|
||||
const char* packageName = assets->getPackage();
|
||||
const char* manifestPackageNameOverride = bundle->getManifestPackageNameOverride();
|
||||
if (manifestPackageNameOverride != NULL) {
|
||||
packageName = manifestPackageNameOverride;
|
||||
}
|
||||
manifest->addAttribute(String16(), String16("package"), String16(packageName));
|
||||
|
||||
// Add the 'versionCode' attribute which is set to the original version code.
|
||||
if (!addTagAttribute(manifest, RESOURCES_ANDROID_NAMESPACE, "versionCode",
|
||||
bundle->getVersionCode(), true, true)) {
|
||||
return UNKNOWN_ERROR;
|
||||
}
|
||||
|
||||
// Add the 'split' attribute which describes the configurations included.
|
||||
String8 splitName("config_");
|
||||
@@ -923,8 +934,8 @@ status_t generateAndroidManifestForSplit(const String16& package, const sp<ApkSp
|
||||
manifest->addChild(app);
|
||||
root->addChild(manifest);
|
||||
|
||||
status_t err = root->flatten(outFile, true, true);
|
||||
if (err != NO_ERROR) {
|
||||
int err = compileXmlFile(assets, root, outFile, table);
|
||||
if (err < NO_ERROR) {
|
||||
return err;
|
||||
}
|
||||
outFile->setCompressionMethod(ZipEntry::kCompressDeflated);
|
||||
@@ -1371,8 +1382,8 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil
|
||||
} else {
|
||||
sp<AaptFile> generatedManifest = new AaptFile(String8("AndroidManifest.xml"),
|
||||
AaptGroupEntry(), String8());
|
||||
err = generateAndroidManifestForSplit(String16(assets->getPackage()), split,
|
||||
generatedManifest);
|
||||
err = generateAndroidManifestForSplit(bundle, assets, split,
|
||||
generatedManifest, &table);
|
||||
if (err != NO_ERROR) {
|
||||
fprintf(stderr, "Failed to generate AndroidManifest.xml for split '%s'\n",
|
||||
split->getPrintableName().string());
|
||||
|
||||
Reference in New Issue
Block a user