小编piw*_*iwi的帖子

无法在 Docker 容器中启动 Android 模拟器 x86_64(在 VM 中)

我在 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 android-emulator docker

5
推荐指数
1
解决办法
1696
查看次数

如何避免剥离仅用于调试构建类型的AAR中打包的本机库?

我有一个为Android构建的C ++库,将其打包为Android归档文件(.aar),以及一些Java类和清单。

一切都在Android Studio之外完成。要打包.aar,我有一个目录,其中包含:

  • app/src/main/jniLibs/arm64-v8a/:带库的目录
  • app/src/main/java:带有Java类的目录

该目录还包含清单和Gradle文件。

这里是build.gradleapp目录:

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)

android gradle android-ndk

5
推荐指数
1
解决办法
539
查看次数

是否可以使用SFINAE检测类方法的常量?

考虑这个结构:

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.

谢谢,

c++ templates boost sfinae c++11

4
推荐指数
2
解决办法
196
查看次数

std::string::resize() 方法是否管理终止字符?

我正在将流中的一些数据复制到字符串中,因此我考虑使用实际字符数加一作为终止字符来调整字符串大小,如下所示:

std::istringstream stream { "data" };
const std::size_t count = 4;

std::string copy;
copy.resize(count + 1);

stream.read(&copy[0], count);
copy[count] = 0;
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,copy表示它的大小为5(自从我调用以来,这是一致的resize(5))。这是否意味着resize()会添加额外的终止字符本身?这意味着我不必担心\0在调用后追加read(&data[0], count)

c++ string c++11

4
推荐指数
1
解决办法
3477
查看次数

使用stid :: forward和typeid运算符是否有意义?

我想知道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)会产生相同的结果吗?

c++ rtti perfect-forwarding c++11

3
推荐指数
1
解决办法
178
查看次数

重置Android对话框

我发现了很多关于如何保存对话框状态的主题,例如使用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);可以做到这一点,但事实并非如此.

对不起,如果这是一个愚蠢的问题(或者如果已经解决了......我没有找到它)...任何帮助表示赞赏.非常感谢!

android android-2.2-froyo android-dialog

1
推荐指数
1
解决办法
3616
查看次数