Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62408403 authored by Adam Lesinski's avatar Adam Lesinski
Browse files

Ensure that split names are valid

Generate valid split names for resource splits.
Validate split names for features.

Change-Id: I3040438af0156778c2bd66ddeffdf62fe9dcc9fc
parent d7c1fae1
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -85,11 +85,24 @@ ApkSplit::ApkSplit(const std::set<ConfigDescription>& configs, const sp<Resource
        if (mName.size() > 0) {
            mName.append(",");
            mDirName.append("_");
            mPackageSafeName.append(".");
        }

        String8 configStr = iter->toString();
        String8 packageConfigStr(configStr);
        size_t len = packageConfigStr.length();
        if (len > 0) {
            char* buf = packageConfigStr.lockBuffer(len);
            for (char* end = buf + len; buf < end; ++buf) {
                if (*buf == '-') {
                    *buf = '_';
                }
            }
            packageConfigStr.unlockBuffer(len);
        }
        mName.append(configStr);
        mDirName.append(configStr);
        mPackageSafeName.append(packageConfigStr);
    }
}

+5 −0
Original line number Diff line number Diff line
@@ -95,6 +95,10 @@ public:
        return mDirName;
    }

    const android::String8& getPackageSafeName() const {
        return mPackageSafeName;
    }

    bool isBase() const {
        return mIsBase;
    }
@@ -111,6 +115,7 @@ private:
    const bool mIsBase;
    String8 mName;
    String8 mDirName;
    String8 mPackageSafeName;
    std::set<OutputEntry> mFiles;
};

+2 −2
Original line number Diff line number Diff line
@@ -937,8 +937,8 @@ status_t generateAndroidManifestForSplit(Bundle* bundle, const sp<AaptAssets>& a
    }

    // Add the 'split' attribute which describes the configurations included.
    String8 splitName("config_");
    splitName.append(split->getDirectorySafeName());
    String8 splitName("config.");
    splitName.append(split->getPackageSafeName());
    manifest->addAttribute(String16(), String16("split"), String16(splitName));

    // Build an empty <application> tag (required).