Default to UTF8 resources when packaging with aapt
This change makes it so with API level 7 and above all resources will be packaged in UTF-8 format. Any minSdkVersion level that is named will also have resources packaged in UTF-8, because it is assumed that previous releases will only be rebuilt with their proper integer number and only future releases will temporarily have names. Change-Id: If5d1ee5e48fbaf31798816b068ac44b14a93121b
This commit is contained in:
@@ -114,7 +114,10 @@ public:
|
|||||||
void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); }
|
void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); }
|
||||||
|
|
||||||
const char* getMinSdkVersion() const { return mMinSdkVersion; }
|
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; }
|
const char* getTargetSdkVersion() const { return mTargetSdkVersion; }
|
||||||
void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; }
|
void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; }
|
||||||
const char* getMaxSdkVersion() const { return mMaxSdkVersion; }
|
const char* getMaxSdkVersion() const { return mMaxSdkVersion; }
|
||||||
@@ -197,6 +200,20 @@ private:
|
|||||||
/* misc stuff */
|
/* misc stuff */
|
||||||
int mPackageCount;
|
int mPackageCount;
|
||||||
#endif
|
#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
|
#endif // __BUNDLE_H
|
||||||
|
|||||||
@@ -171,7 +171,8 @@ static sp<AaptFile> getResourceFile(const sp<AaptAssets>& assets, bool makeIfNec
|
|||||||
NULL, String8());
|
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) {
|
if (grp->getFiles().size() != 1) {
|
||||||
fprintf(stderr, "warning: Multiple AndroidManifest.xml files found, using %s\n",
|
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)));
|
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;
|
return NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -597,7 +614,7 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)
|
|||||||
return UNKNOWN_ERROR;
|
return UNKNOWN_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t err = parsePackage(assets, androidManifestFile);
|
status_t err = parsePackage(bundle, assets, androidManifestFile);
|
||||||
if (err != NO_ERROR) {
|
if (err != NO_ERROR) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user