尝试从 ubuntu 18.04 开始在 docker 容器中构建适用于 android 的 webview。
按照说明进行所有操作,最后一个版本可以使用命令构建:
autoninja -C out/Default system_webview_apk
Run Code Online (Sandbox Code Playgroud)
但我需要一个旧版本。所以我这样做:
git checkout 80.0.3987.99 -b 80-version
Run Code Online (Sandbox Code Playgroud)
之后运行同步:
gclient sync
Run Code Online (Sandbox Code Playgroud)
默认情况下,它也会在同步后运行钩子。然后我再次使用相同的 cmd 开始构建:
autoninja -C out/Default system_webview_apk
Run Code Online (Sandbox Code Playgroud)
但这一次在结账构建时它给了我错误,我几个小时都无法修复:
user@0bb1627b6f62:~/workdir/chromium/src$ autoninja -c out/Default/ system_webview_apk
depot_tools/ninja.py: Could not find Ninja in the third_party of the current project, nor in your PATH.
Please take a following action to install Ninja.
- If your project has DEPS, Add a CIPD Ninja dependency to DEPS.
- Otherwise, add Ninja to …Run Code Online (Sandbox Code Playgroud) 我在Qt工作,我没有提到它,因为我认为这只是C++问题。
我用共享指针解决了这个问题,所以不要给我解决方案。但这是理解的问题,我想了解为什么它不起作用。
我正在尝试以下操作:
测试.h:
#include <QObject>
#include "response.h"
#include <memory>
class Test : public QObject
{
Q_OBJECT
public:
explicit Test(QObject *parent = nullptr);
signals:
void signal(std::unique_ptr<Response> resp);
public slots:
};
Run Code Online (Sandbox Code Playgroud)
测试.cpp:
Test::Test(QObject *parent) : QObject(parent)
{
std::unique_ptr<Response> response(new Response(5));
emit signal(std::move(response));
}
Run Code Online (Sandbox Code Playgroud)
Response 班级:
class Response
{
public:
Response(int data);
private:
int data;
};
Run Code Online (Sandbox Code Playgroud)
我知道std::unique_ptr不能复制,我std::move在这里使用。但尽管如此,我还是收到了一个错误:
moc_test.cpp:75:85: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = Response; _Dp = std::default_delete<Response>]’
case 0: _t->signal((*reinterpret_cast< std::unique_ptr<Response>(*)>(_a[1]))); …Run Code Online (Sandbox Code Playgroud)