调整loadLib加载安卓so库的策略(需要等待后续测试)
This commit is contained in:
@@ -1,51 +1,23 @@
|
||||
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)
|
||||
package.cpath=package.cpath..';'..SAVEDIR..'/lib/lib?.so;'..'?.dylib'
|
||||
return function(libName)
|
||||
if SYSTEM=='Android'then
|
||||
local platform=(function()
|
||||
local p=io.popen('uname -m')
|
||||
local arch=p:read('*a'):lower()
|
||||
p:close()
|
||||
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
|
||||
arch=='aarch64'or arch=='arm64'and'arm64-v8a'or
|
||||
'armeabi-v7a'
|
||||
end)()
|
||||
love.filesystem.write(
|
||||
'lib/libCCloader.so',
|
||||
love.filesystem.read('data','libAndroid/'..platform..'/libCCloader.so')
|
||||
)
|
||||
end
|
||||
local r1,r2,r3=pcall(require,libName)
|
||||
if r1 and r2 then
|
||||
return r2
|
||||
else
|
||||
MES.new('error',"Cannot load "..libName..": "..(r2 or r3))
|
||||
end
|
||||
return true
|
||||
end
|
||||
Reference in New Issue
Block a user