Я использую собственный пример Android в libfont: https://github.com/julienr/libfont, чтобы создать приложение для Android C ++, которое может отображать текст.
Инструментом сборки является Visual Studio https://devblogs.microsoft.com/cppblog/android-and-ios-development-with-c-in-visual-studio/.
Код C / C ++ находится в подкаталоге jni, файл шрифтов LiberationSans-Bold.ttf находится в подкаталоге assets в образце libfont.
Приложение компилируется и собирается нормально. но файл шрифта не включен в окончательный вариант .apk
//
// To test if the assets are in the assets directory
//
bool _testFont()
{
AAssetManager* manager = getApp()->activity->assetManager;
AAssetDir* assetDir = AAssetManager_openDir(manager, ""); // Open root assets dir, assetDir is not NULL
const char* fileName = AAssetDir_getNextFileName(assetDir); // Get first filename there -> fileName is NULL
}
//
// Original code
//
bool _loadFont()
{
LOGI("Loading font");
AAssetManager* manager = getApp()->activity->assetManager;
AAsset* fontFile = AAssetManager_open(manager, "LiberationSans-Bold.ttf", AASSET_MODE_BUFFER);
//
// Here fontfile is always NULL
//
if (!fontFile)
{
LOGE("Error loading font file");
return false;
}
const void* fontData = AAsset_getBuffer(fontFile);
off_t fontLen = AAsset_getLength(fontFile);
font = fontlib::FTLib::getInstance()->loadMemoryFont((const char*)fontData, fontLen, 30);
AAsset_close(fontFile);
if (!font)
{
LOGE("Error loading font");
return false;
}
return true;
}
Так что мой вопрос: Какой механизм в процессе сборки заставляет компоновщик вызыватьфайл (ы) в каталоге активов?