我在 VM(Debian 稳定版)中使用 Docker。我想在 Docker 容器中为 x86_64 运行一个 Android 模拟器。
以下是 Docker 镜像的构建方式:
FROM debian:stable
RUN apt-get update && apt-get install --yes curl unzip openjdk-8-jdk libqt5widgets5
RUN useradd foo --shell /bin/bash --create-home --user-group
USER foo
WORKDIR /home/foo
RUN curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
RUN unzip sdk-tools-linux.zip && rm sdk-tools-linux.zip
RUN yes | tools/bin/sdkmanager 'system-images;android-24;default;x86_64' 'emulator' 'build-tools;26.0.1' 'platform-tools' 'platforms;android-24'
RUN echo no | tools/bin/avdmanager create avd --package 'system-images;android-24;default;x86_64' --name android-x86_64
Run Code Online (Sandbox Code Playgroud)
在容器内像这样启动模拟器时:
emulator/emulator -avd android-x86_64 -no-window -no-audio -no-boot-anim -no-accel -gpu off
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
emulator: …Run Code Online (Sandbox Code Playgroud) 我有一个为Android构建的C ++库,将其打包为Android归档文件(.aar),以及一些Java类和清单。
一切都在Android Studio之外完成。要打包.aar,我有一个目录,其中包含:
app/src/main/jniLibs/arm64-v8a/:带库的目录app/src/main/java:带有Java类的目录该目录还包含清单和Gradle文件。
这里是build.gradle在app目录:
apply plugin: 'com.android.library'
android {
compileSdkVersion 27
buildToolsVersion "27.0.2"
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
}
buildTypes {
release {
minifyEnabled false
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:27.0.2'
}
apply plugin: 'maven-publish'
publishing {
publications {
fooapp(MavenPublication) {
groupId 'com.example'
artifactId 'fooapp'
version "develop"
artifact('build/outputs/aar/app-release.aar')
}
}
repositories {
maven {
mavenLocal()
}
} …Run Code Online (Sandbox Code Playgroud) 考虑这个结构:
struct foo {
void dummy() const {}
};
Run Code Online (Sandbox Code Playgroud)
是否可以使用SFINAE检测此方法的常量?
例如,我想在一个可用于以下内容的特征中捕获此属性static_assert:
static_assert(is_const_method<decltype(&foo::dummy)>::value, "Not const!");
Run Code Online (Sandbox Code Playgroud)
我认为这里std::is_const或者std::remove_const会帮助我,但他们似乎并没有包含这种"类型" const.
谢谢,
我正在将流中的一些数据复制到字符串中,因此我考虑使用实际字符数加一作为终止字符来调整字符串大小,如下所示:
std::istringstream stream { "data" };
const std::size_t count = 4;
std::string copy;
copy.resize(count + 1);
stream.read(©[0], count);
copy[count] = 0;
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,copy表示它的大小为5(自从我调用以来,这是一致的resize(5))。这是否意味着resize()会添加额外的终止字符本身?这意味着我不必担心\0在调用后追加read(&data[0], count)?
我想知道std::forward<>在提交实例时使用是否有意义typeid?
template <typename T>
void foo(T&& value) {
std::cout << typeid(std::forward<T>(value)).name() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
调用typeid(value)会产生相同的结果吗?
我发现了很多关于如何保存对话框状态的主题,例如使用Bundle实例.但是,我似乎无法找到如何"正确"重置对话框.
考虑这个示例自定义对话框(XML布局带有ID为"input_text"的EditText):
public class CustomDialog extends Dialog {
public CustomDialog (Context context) { super (context); }
protected onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView(R.layout.input_query);
EditText txt = (EditText) findViewById(R.id.input_text);
// Consider that I'm declaring here the use of listeners
// in order to retrieve input text.
}
}
Run Code Online (Sandbox Code Playgroud)
在主Activity中单击按钮时,我弹出此对话框.第二次执行此操作时,我的EditText包含上一个实例的输入.
现在,我知道我可以重置此EditText的内容,但我想知道是否有一个通用的,已经存在的方法来执行此操作,对话框范围内.例如,如果我有一个更复杂的对话框,我希望每次实例化该对象时它都有"默认"值.我认为删除呼叫super.onCreate(savedInstanceState);可以做到这一点,但事实并非如此.
对不起,如果这是一个愚蠢的问题(或者如果已经解决了......我没有找到它)...任何帮助表示赞赏.非常感谢!