有效缩小Android静态库大小

Home / Android MrLee 2016-4-20 4378

在开写之前,可以先看下这篇文章:Android NDK 如何缩减库的大小
iostream 会大幅增加大小,查了下代码, 只有读取文件这一个功能有用到iostream,以下面代码为例
void * FileUtils::readFileData(const std::string & filename, ssize_t * size) {
    std::ifstream in (filename, std::ifstream::ate | std::ifstream::binary);
    if (! in .is_open()) {
        throw std::runtime_error("file " + filename + " open error");
    }
    int fileSize = in .tellg();
    void * data = malloc(fileSize); in .seekg(0, std::ifstream::beg); in .read((char * ) data, fileSize); in .close();
    if (size) { *
        size = fileSize;
    }
    return data;
}

代码改为:
void * FileUtils::readFileData(const std::string & filename, ssize_t * size) {
    FILE * file = fopen(filename.c_str(), "rb");
    if (!file) {
        throw std::runtime_error("file " + filename + " open error");
    }
    struct stat info;
    if (stat(filename.c_str(), & info) != 0)
        throw std::runtime_error("get " + filename + " stat error");
    int fileSize = info.st_size;
    void * data = malloc(fileSize);
    fread(data, sizeof(void), fileSize, file);
    fclose(file);
    if (size) { *
        size = fileSize;
    }
    return data;
}

最后生成的.so文件将缩小300KB

本文链接:https://www.it72.com/9272.htm

推荐阅读
最新回复 (0)
返回