关于在 Google Play 控制台上推出应用程序的问题,包括关于 `aewt` 和 `UID` 和 SDK、API 版本的问题

Posted

技术标签:

【中文标题】关于在 Google Play 控制台上推出应用程序的问题,包括关于 `aewt` 和 `UID` 和 SDK、API 版本的问题【英文标题】:Questions on rolling-out app on Google Play Console which includes questions on `aewt` and `UID` and SDK, API versions 【发布时间】:2021-04-07 11:07:16 【问题描述】:

亲爱的 android 开发者天才们,

在 Google Play 管理中心推出我的应用时,我需要帮助。我偶然发现了一系列问题,这些问题看起来像是第 22 条问题。我已经开始使用内部测试推出我的应用程序,很快我发现当我收到预发布报告时,我的应用程序触发了两个错误,我被告知这将阻止我继续推出,直到它们得到修复。这两个错误是:

`java.lang.SecurityException: Calling from not trusted UID!`

`java.lang.NoClassDefFoundError: aewt` 

我已经在这个平台和其他地方进行了研究,并找到了一些我尝试修复的可能解决方案。然后我重建另一个包并将其上传到内部测试但无济于事,这些问题仍然存在。 我按照这个链接尝试解决问题aewthttps://***.com/questions/64706041/fatal-exception-firebase-messaging-intent-handle-java-lang-noclassdeffounder 这解决了UID! 问题 Calling from not trusted UID

都没有用。

然后我恍然大悟,这些问题出现在 android 5 及以下的旧版本的 Android 上。所以我决定将我的应用程序的使用限制在 android 6.0 及更高版本。我几乎不知道这也将成为一项令人困惑的任务。而且我一头雾水。

我按照此处的说明进行操作:[https://developer.android.com/training/basics/supporting-devices/platforms] 并将建议的代码添加到我的应用程序中。但在这里,它再次不起作用,我能够在运行 Android 5.0 及更低版本的模拟器上运行我的应用程序。

我使用的第一个代码是这样的:

`<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-sdk android:minSdkVersion="6" android:targetSdkVersion="15" />
    ...
</manifest>`.

但是,我不知道什么是 SDK 版本。是操作系统版本吗?还是API版本?或者也许是另一组我在网上找不到参考的数字。我知道这个问题在这个平台上已经讨论了很长时间,但我仍然找不到正确的答案。无论如何,我已经尝试了使用 OS 版本和 API 版本组合的所有合理可能性,但它们似乎都没有阻止我的应用在旧的 Android 版本上运行。

我也将此代码添加到 MainActivity:

`private void setUpActionBar() 
   // Make sure we're running on Marshmallow or higher to use ActionBar APIs
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
       ActionBar actionBar = getActionBar();
       actionBar.setDisplayHomeAsUpEnabled(true);
   
`

但是,我的应用很高兴在旧操作系统上运行

这里是我的问题的回顾。我在推出我的应用程序时收到错误消息,这似乎无法解决,这使我无法继续推出我的应用程序。将我的应用分发限制在 OS 6.0 及更高版本的尝试也失败了。

我现在该怎么办?

    尝试在生产轨道上推出我的应用并希望获得最好的结果? SDK 编号是 OS 编号还是 API,还是两者都不是? 是否有另一种方法可以告诉 Android 不要安装在旧版本上?请帮忙!

【问题讨论】:

【参考方案1】:

SDK 版本是 API 版本。示例 OS 版本 6.0 是 API 版本 23

因此,如果您只希望您的应用在操作系统版本 6.0+ 上运行,请将 build.gradle(模块)文件中的 minSdkVersion 设置为 23(参见第 10 行)

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android 
    compileSdkVersion 30
    buildToolsVersion "29.0.3"

    defaultConfig 
        applicationId "your.package.name"
        minSdkVersion 23
        targetSdkVersion 30
        multiDexEnabled true
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

这是最重要的。在 manifest.xml 文件中设置它是可以的,但这才是真正重要的。

编辑: 此外,不需要在 manifest.xml 文件中指定 minSdkVersiontargetSdkVersion;但是,如果要指定它,则需要确保 manifest.xml 文件和 gradle.build 文件具有相同的设置。

<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="30" />

【讨论】:

以上是关于关于在 Google Play 控制台上推出应用程序的问题,包括关于 `aewt` 和 `UID` 和 SDK、API 版本的问题的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Google Play 控制台上重置敏感应用权限声明

如何在 Google Play 控制台上记录卸载?

如何在 Google Play 控制台上记录卸载?

如何在自动“发布”并在 Google Play 上显示之前将新应用“推出”到内部测试人员列表?

我无法测试我在Google Play控制台上注册的应用

尽管提交了更新/修改,但“应用被拒绝”横幅仍保留在 Google Play 控制台上