am b5ef7ee1: Default to UTF8 resources when packaging with aapt

Merge commit 'b5ef7ee1644b099498ddd29c1d051e7ee26ccfd3' into eclair-mr2-plus-aosp

* commit 'b5ef7ee1644b099498ddd29c1d051e7ee26ccfd3':
  Default to UTF8 resources when packaging with aapt
This commit is contained in:
Kenny Root
2009-12-10 20:23:04 -08:00
committed by Android Git Automerger
2 changed files with 37 additions and 3 deletions

View File

@@ -114,7 +114,10 @@ public:
void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); }
const char* getMinSdkVersion() const { return mMinSdkVersion; }
void setMinSdkVersion(const char* val) { mMinSdkVersion = val; }
void setMinSdkVersion(const char* val) {
mMinSdkVersion = val;
setUTF8(isUTF8Available());
}
const char* getTargetSdkVersion() const { return mTargetSdkVersion; }
void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; }
const char* getMaxSdkVersion() const { return mMaxSdkVersion; }
@@ -197,6 +200,20 @@ private:
/* misc stuff */
int mPackageCount;
#endif
/* UTF-8 is only available on APIs 7 or above or
* SDK levels that have code names.
*/
bool isUTF8Available() {
char *end;
int minSdkNum = (int)strtol(mMinSdkVersion, &end, 0);
if (*end == '\0') {
if (minSdkNum < 7) {
return false;
}
}
return true;
}
};
#endif // __BUNDLE_H

View File

@@ -171,7 +171,8 @@ static sp<AaptFile> getResourceFile(const sp<AaptAssets>& assets, bool makeIfNec
NULL, String8());
}
static status_t parsePackage(const sp<AaptAssets>& assets, const sp<AaptGroup>& grp)
static status_t parsePackage(Bundle* bundle, const sp<AaptAssets>& assets,
const sp<AaptGroup>& grp)
{
if (grp->getFiles().size() != 1) {
fprintf(stderr, "warning: Multiple AndroidManifest.xml files found, using %s\n",
@@ -215,6 +216,22 @@ static status_t parsePackage(const sp<AaptAssets>& assets, const sp<AaptGroup>&
assets->setPackage(String8(block.getAttributeStringValue(nameIndex, &len)));
String16 uses_sdk16("uses-sdk");
while ((code=block.next()) != ResXMLTree::END_DOCUMENT
&& code != ResXMLTree::BAD_DOCUMENT) {
if (code == ResXMLTree::START_TAG) {
if (strcmp16(block.getElementName(&len), uses_sdk16.string()) == 0) {
ssize_t minSdkIndex = block.indexOfAttribute("android",
"minSdkVersion");
if (minSdkIndex >= 0) {
String8 minSdkString = String8(
block.getAttributeStringValue(minSdkIndex, &len));
bundle->setMinSdkVersion(minSdkString.string());
}
}
}
}
return NO_ERROR;
}
@@ -597,7 +614,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
return UNKNOWN_ERROR;
}
status_t err = parsePackage(assets, androidManifestFile);
status_t err = parsePackage(bundle, assets, androidManifestFile);
if (err != NO_ERROR) {
return err;
}