小编use*_*413的帖子

警告:应用必须面向 Android 13(API 级别 33)或更高版本。确实如此

我收到来自 Google Play Console 的以下警告,表明我们的应用不符合最低目标 API 级别。然而,它确实如此,下面是它的代码:

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        //TODO: Keep an eye on targetSdkVersion number, as it has to be within one year of major android release.
        applicationId "com.com"
        minSdkVersion 24
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }
Run Code Online (Sandbox Code Playgroud)

这是显示警告的图像: 在此输入图像描述

然后,当我单击影响应用程序包时,它们实际上是两年多前的旧应用程序包: 在此输入图像描述

我应该删除这些旧的捆绑包还是需要做其他事情?我很担心,因为它说除非我们满足要求(最新的代码就是这样做的),否则我们将无法更新应用程序。

更新:首先根据下面的答案使用兼容的应用程序包更新每个曲目(甚至暂停的曲目),将其发送以供审核,然后发布这些更改(即使曲目处于非活动状态,再次发布),我警告无法更新应用程序仍然存在。因此,我直接联系了 Google,并收到了以下有关警告的消息。我想我们下次尝试更新应用程序时会看到会发生什么

“根据检查,此警告是针对 Google Play 的目标 API 级别要求,仅警告开发者有关不发布合规应用版本的风险。在这种情况下,您可以忽略此警告,您可以放心仍然能够发布应用更新。我希望这会有所帮助。如果您对 Play 管理中心还有任何其他疑问,请告诉我,我们将很乐意为您提供帮助。”

更新更新:发布并点击收件箱中的消息后,出现一条新消息,指出违规已解决(如下所述)。

android google-play-console

78
推荐指数
2
解决办法
5万
查看次数

通过引用传递的 Lambda 在构造函数中调用时运行,但稍后存储在数据成员中时不会运行

以下 C++ 代码打印11.1然后崩溃。lambda 函数似乎在构造函数内被正确调用,但后来,相同的函数不再起作用!为什么会发生这种情况?lambda 的寿命有限制吗?

#include <functional>
#include <iostream>

class LambdaStore
{
public:
    LambdaStore(const std::function<void(float)>& _fn)
    : fn(_fn)
    {
        fn(11.1f);    // works
    }

    void ExecuteStoredLambda()
    {
        fn(99.9f);    // crashes
    }

private:
    const std::function<void(float)>& fn;
};

int main()
{
    LambdaStore lambdaStore([](float a) { std::cout << a << '\n'; });

    lambdaStore.ExecuteStoredLambda();
}
Run Code Online (Sandbox Code Playgroud)

c++ lambda lifetime c++11

43
推荐指数
4
解决办法
6361
查看次数

使用 std::array 声明 2D(甚至更高维度)数组的便捷方法

我即将将大量旧的 C++ 代码转换为更现代的 C++。

该代码中有许多原始的二维数组,例如:

Foo bar[XSIZE][YSIZE];
Run Code Online (Sandbox Code Playgroud)

我即将用以下内容替换这些声明

std::array<std::array<Foo, YSIZE>, XSIZE> bar;
Run Code Online (Sandbox Code Playgroud)

这是一种方便的方法,因为语句保持不变,并且代码的行为应该与原始数组相同,并且具有能够在调试版本中进行越界检查的额外好处。

但在我看来,这std::array<std::array<Foo, YSIZE>>有点麻烦而且不容易阅读,而且如果使用 3D 数组(虽然我没有),情况会更糟。

现在我正在使用这个宏来使声明更具可读性:

#define DECLARE_2D_ARRAY(type, x, y) std::array<std::array<type, y>, x>
...
DECLARE_2D_ARRAY(Foo, XSIZE, YSIZE) bar;
Run Code Online (Sandbox Code Playgroud)

但我觉得这是一个宏黑客,我想知道是否有一种更干净、更 C++ 的方法来做类似的事情。

c++ arrays multidimensional-array stdarray

42
推荐指数
3
解决办法
3115
查看次数

在 C 和 C++ 中比较不同大小的无符号整数时如何收到警告?

C 或 C++ 中错误的常见来源是这样的代码:

size_t n = // ...

for (unsigned int i = 0; i < n; i++) // ...
Run Code Online (Sandbox Code Playgroud)

当溢出时可以无限循环unsigned int

例如,在 Linux 上,unsigned int是 32 位,而size_t是 64 位,因此 if n = 5000000000,我们会得到一个无限循环。

我如何使用 GCC 或 Clang 获得有关此问题的警告?

GCC不这样做:-Wall -Wextra

#include <stdint.h>

void f(uint64_t n)
{
    for (uint32_t i = 0; i < n; ++i) {
    }
}
Run Code Online (Sandbox Code Playgroud)
gcc-13 -std=c17 \
       -Wall -Wextra -Wpedantic \
       -Warray-bounds -Wconversion \
       -fanalyzer \ …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc clang compiler-warnings

37
推荐指数
4
解决办法
2610
查看次数

Docker 错误,只读文件系统未知

我正在使用Windows 10 x64并刚刚下载了 Docker,我尝试运行一个简单的“hello-world”dockerfile,但我不断收到错误:

docker: Error response from daemon: error creating temporary lease: file resize error: truncate /var/lib/desktop-containerd/daemon/io.containerd.metadata.v1.bolt/meta.db: read-only file system: unknown.

每次我尝试时,都会遇到相同的文件只读错误。

docker dockerfile

28
推荐指数
2
解决办法
7万
查看次数

有没有比仅通过“for”循环更优雅的方法将两种状态字符串转换为位集?

我编写了以下代码片段,将两种状态的字符串 ("+++--+-""yynnny") 转换为std::bitset

#include <bitset>
#include <cstddef>
#include <string>
#include <iostream>

std::bitset<70> convertTwoStateString(std::string twoState)
{
    std::bitset<70> a{0b0};
    std::bitset<70> eins{0b1};

    for(const auto c : twoState) {
        if(c == '+') {
            a <<= 1;
            a |= eins;
        }
        if(c == '-') {
            a <<= 1;
        }
    }
    return a;
}


int main()
{
    std::string s{"-+--+++--+--+"};
    std::bitset<70> set = convertTwoStateString(s);

    std::cout << set << std::endl;
    //0000000000000000000000000000000000000000000000000000000000100111001001
}
Run Code Online (Sandbox Code Playgroud)

是否有更算法和/或更优雅的方法来进行此类转换?

c++ std-bitset

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

React-Native 捏合手势处理程序缩放位置

我在捏合手势处理程序内有一个平移手势处理程序,用于创建多方向滚动可缩放视图的效果,该效果一切正常。但我遇到的问题是,当用户放大时,视图不会在手指下放大,而当用户缩放时,视图会放大其他地方,而不是保持相同的位置。这是我的代码:

这是一个可复制的演示:Expo Demo

这是视图:

<PinchGestureHandler
          simultaneousHandlers={[panRef]}
          ref={pinchRef}
          onGestureEvent={pinchGestureHandler}>
          <Animated.View style={animatedStyle}>
            <PanGestureHandler
              simultaneousHandlers={[pinchRef]}
              ref={panRef}
            onGestureEvent={panGestureHandler}></PanGestureHandler>
        </Animated.View>
        </PinchGestureHandler>
Run Code Online (Sandbox Code Playgroud)

这是我的处理程序:

const translateX = useSharedValue(0);
  const translateY = useSharedValue(0);
  const scale = useSharedValue(1);
  const panRef = useRef();
  const pinchRef = useRef();

  const panGestureHandler = useAnimatedGestureHandler({
    onStart: (_, ctx) => {
      ctx.startX = translateX.value;
      ctx.startY = translateY.value;
    },
    onActive: (event, ctx) => {
      translateX.value = ctx.startX + event.translationX;
      translateY.value = ctx.startY + event.translationY;
    },
    onEnd: (event, ctx) => {
      translateX.value = withDecay({
        velocity: event.velocityX, …
Run Code Online (Sandbox Code Playgroud)

javascript pinchzoom react-native react-native-gesture-handler

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

无法读取脚本react.gradle,因为它不存在

我是反应本机开发的新手,我面临着这个错误。react.gradle does not exist

我想从 android 运行并制作 apk,然后我想上传到 Google Play 商店。我无法理解为什么会发生这个错误,尽管我已经在 macOS 上安装了 npm 但错误仍然出现。提前致谢



apply plugin: "com.android.application"

import com.android.build.OutputFile

/**
 * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
 * and bundleReleaseJsAndAssets).
 * These basically call `react-native bundle` with the correct arguments during the Android build
 * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
 * bundle directly from the development server. Below you can see …
Run Code Online (Sandbox Code Playgroud)

gradle apk android-studio react-native

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

在 Jupyter 笔记本中添加或删除单元格时,VS Code 中的 Pylance 崩溃

我在使用 Python 笔记本时遇到了 VS Code 中 Pylance 扩展的问题。有时,如果我添加或删除单元格,语言服务器会崩溃并抛出以下错误:

Error: Debug Failure. False expression: Chained file path undefined doesn't match cellFilePaths [REDACTED PATH].ipynb:pylance-notebook-cell:W5sZmlsZQ==.py
    at _0x225e6a ([REDACTED PATH]\server.bundle.js:1:1015920)
    at [REDACTED PATH]\server.bundle.js:1:1023143
    at _0x32da0b.<computed> ([REDACTED PATH]\server.bundle.js:1:1023175)
    at _0x382c6c._onDidChangeNotebookDocumentAsync ([REDACTED PATH]\server.bundle.js:1:1001957)
Run Code Online (Sandbox Code Playgroud)

这是我的设置:

  • VS 代码版本:2023 年 6 月(版本 1.80)
  • Pylance 扩展版本:2023.8.21
  • 操作系统:Windows 10 和 Linux

重现步骤:

  • 在 VS Code 中打开 Jupyter 笔记本。
  • 添加或删除单元格。
  • Pylance 语言服务器因上述错误而崩溃。

以前有人遇到过这个问题吗?任何指导或解决方案将不胜感激。

先感谢您!

我已经尝试了几个故障排除步骤:

  • 重新安装了 VS 代码。
  • 重新安装了 Pylance 扩展。
  • 将 VS Code 和 Pylance 更新到最新版本。

尽管做出了这些努力,问题仍然存在。

我的主要目标是让 Pylance 在 VS …

python visual-studio-code jupyter-notebook pylance

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

taint-mode perl:通过 system() 运行外部程序时保留 suid

我正在尝试向旧脚本添加一项功能。该脚本是 suid,并使用 perl -T(污点模式:man perlsec),以提高安全性。我需要添加的功能是用Python实现的。

问题是我无法说服 perlsec 保留 suid 权限,无论我如何清理环境和命令行。

这很令人沮丧,因为它保留了其他二进制文件(例如 /bin/id)的 suid。/usr/bin/perl 是否有未记录的特殊情况?这似乎不太可能。

有谁知道如何进行这项工作?(按原样:我们没有资源来重新构建整个事情。)


解决方案:(根据@gbacon)

# use the -p option to bash
system('/bin/bash', '-p', '-c', '/usr/bin/id -un');

# or set real user and group ids
$< = $>;
$( = $);
system('/usr/bin/python', '-c', 'import os; os.system("/usr/bin/id -un")');
Run Code Online (Sandbox Code Playgroud)

这给出了期望的结果!


这是我的脚本的精简版本,它仍然显示了我的问题。

#!/usr/bin/perl -T
## This is an SUID script: man perlsec
%ENV = ( "PATH" => "" );

##### PERLSEC HELPERS #####
sub tainted (@) {
    # Prevent …
Run Code Online (Sandbox Code Playgroud)

bash perl suid taint suexec

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