需要CCloader.dylib以及*.icns格式的图标。同时要按照love官网的教程打包游戏为*.app形态,修改Info.plist。 我暂时没有办法让游戏在*.love的形态下加载dylib。但是以文件夹形式可以直接将dylib文件放在根目录;app形式可以放在Framworks处。 我稍后会在 https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper 详细描述得到CCloader.dylib的办法。
51 lines
1.4 KiB
Lua
51 lines
1.4 KiB
Lua
return function(name,libName)
|
|
if SYSTEM=='Windows'or SYSTEM=='Linux'then
|
|
local r1,r2,r3=pcall(require,libName[SYSTEM])
|
|
if r1 and r2 then
|
|
return r2
|
|
else
|
|
MES.new('error',"Cannot load "..name..": "..(r2 or r3))
|
|
end
|
|
elseif SYSTEM=='Android'then
|
|
local fs=love.filesystem
|
|
local platform={'arm64-v8a','armeabi-v7a'}
|
|
|
|
for i=1,#platform do
|
|
local soFile,_,_,mes1=fs.read('data','libAndroid/'..platform[i]..'/'..libName.Android)
|
|
if soFile then
|
|
local success,mes2=fs.write('lib/'..libName.Android,soFile)
|
|
if success then
|
|
libFunc,mes2=package.loadlib(SAVEDIR..'/lib/'..libName.Android,libName.libFunc)
|
|
if libFunc then
|
|
MES.new('check',name.." lib loaded")
|
|
break
|
|
else
|
|
MES.new('error',"Cannot load "..name..": "..mes2)
|
|
end
|
|
else
|
|
MES.new('error',("Write %s-%s to saving failed: %s"):format(name,platform[i],mes2))
|
|
end
|
|
else
|
|
MES.new('error',("Read %s-%s to saving failed: %s"):format(name,platform[i],mes1))
|
|
end
|
|
end
|
|
if not libFunc then
|
|
MES.new('error',"Cannot load "..name)
|
|
return
|
|
end
|
|
return libFunc()
|
|
elseif SYSTEM=="OS X" then
|
|
local rtn = package.loadlib(libName["OS X"], libName.libFunc)
|
|
if rtn then
|
|
local a = rtn()
|
|
MES.new('check',name.." lib loaded")
|
|
return a
|
|
else
|
|
MES.new('error',"Cannot load "..name)
|
|
end
|
|
else
|
|
MES.new('error',"No "..name.." for "..SYSTEM)
|
|
return
|
|
end
|
|
return true
|
|
end |