如何在设备神经上复制crt文件

How to copy crt file on device nerves

我想复制ca文件来建立ssl连接。我将 ca 放在 lib

lib/
   mymodule.ex #using the ca path here
   mycrt.crt

然后使用 mix firmware 我给出这样的相对路径

 def getPath() do
    {path,0} = System.cmd("pwd",[])
    String.replace(path,"\n","/lib/mycrt.crt")
   end

但是我们 运行 在主机上使用 iex -S mix 所以我必须在 mycrt.crt

之前加上 /lib 前缀

我不确定它是否被正确地复制到 /lib 或者 pwd 在设备上刻录后是否获得了正确的路径。这是正确的做法吗?因为当我在设备上执行 ls 时,我看不到在目录

中复制的 mycrt.crt

使用神经在设备上复制文件的正确方法是什么

而不是 lib 使用 priv,所以:

priv/mycrt.crt

然后在代码中:

Path.join(:code.priv_dir(:my_app), "mycrt.crt")

参见https://erlang.org/doc/man/code.html#priv_dir-1

或者,您可以使用模块属性在编译时读取文件内容:

@crt_bin File.read!("lib/mycrt.crt")

无论您只是希望文件在目标上可用,还是想要模块属性版本,我建议将文件存储在 priv per: http://erlang.org/doc/design_principles/applications.html#7.4 中。特别是:

  • priv - Optional. Used for application specific files.

和:

The priv directory holds assets that the application needs during runtime. Executables should reside in priv/bin and dynamically-linked libraries should reside in priv/lib. Other assets are free to reside within the priv directory but it is recommended it does so in a structured manner.