标签: targetsdkversion

添加了 android:exported 但仍然出现错误面向 Android 12 及更高版本的应用程序需要为 android:exported 指定显式值

我已添加android:exported="true"到清单中唯一的活动,但在将编译 sdk 和目标 sdk 版本更新为 31 后仍然出现以下错误。我还尝试重建项目、使缓存无效并重新启动,但这没有帮助

错误- Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

AndroidManifest文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xyz.abc">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:name=".framework.presentation.BaseApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.xyz.presentation.MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

合并清单错误

play-services-auth-api-phone:17.4.0 清单、leakcanary-android:2.0-alpha-3 清单、firebase-auth-interop:20.0.0 清单、生命周期-viewmodel:2.3.1 清单、浏览器:1.0。 0 …

android manifest android-manifest targetsdkversion android-12

47
推荐指数
6
解决办法
8万
查看次数

新版本flutter 2.8.0中如何更新minSdkVersion和targetSdkVersion

在文件build.gradle中我发现了这样的代码

minSdkVersion flutter.minSdkVersion

targetSdkVersion flutter.targetSdkVersion

如何从初始化位置更改这些值?1

dart flutter targetsdkversion

13
推荐指数
2
解决办法
1万
查看次数

无法上传 targetSdkVersion 为 30 的签名 apk

我生成了一个签名的 apk,目标 sdk 版本为 30。(Android 11)。我知道它没有正式发布,但我的应用程序已准备好进行新的更改。我正在尝试将其上传到 google play 控制台,但遇到错误:

您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误:MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET:目标 SDK 版本 30 需要最低签名方案 v2;APK 未使用此签名方案或更高版本的签名方案进行签名。

我试图做的事情:

  1. 我在生成 apk 时仔细检查了我是否选择了 v2(完整 APK Singature)。
  2. 我尝试使用 apksigner 手动签署 apk。

没有任何效果。我想知道它是否不起作用,因为该版本尚未发布。但是,我知道它应该从文档中工作。

android targetsdkversion android-11

8
推荐指数
3
解决办法
9108
查看次数

Delphi - Google Play上的新应用必须定位到Android 8(API级别26) - 后台的PUSH通知

从2018年8月起,Google Play上的所有新应用都必须定位到Android 8(API级别26)或更高级别,从2018年11月起,Google Play上的所有应用更新都必须使用Google Play上的相同应用.

现在,你必须上传一个面向Android 8的新应用程序的唯一方法是编辑文件AndroidManifest.template.xml并将targetSdkVersion ="%targetSdkVersion%"替换为:Android:targetSdkVersion ="26"

问题是,从那一刻起,应用程序就有了Android O引入的限制.被认为是危险的权限(相机,位置,短信......)不会被仅仅通过将它们包含在AndroidManifest中的事实授予应用程序文件.再见相机,GPS,......

在此Web中,您可以按照几个简单的步骤开始向用户请求权限:http: //delphiworlds.com/2018/05/targeting-android-8-and-higher/

但是,目标Android 8有更多的含义.我的应用程序,因为仅将应用程序未运行(或在后台运行)时将targetSDKVersion从25更改为26的事实不会收到推送通知.

我的测试很简单:我更改了targetSDK,它不再起作用了.我回放它再次运行,无论是应用程序运行还是应用程序在后台或关闭.

关键是TARGETSDKVERSION的更改,因为我一直尝试在SDK Manager中选择SDK 24.3.3.

我认为其中一个主要原因是Android O中背景服务的消失,正如他们在https://blog.klinkerapps.com/android-o-background-services/中解释的那样但我不确定.

我的大问题.

我刚刚将Google 7(Level 25)应用程序上传到Google Play.问题是,截至2018年11月,如果我没有将TARGETSDKVERSION更改为26级,我将无法上传更新.但如果我这样做...我将停止接收PUSH通知,并且没有PUSH通知,我的应用程序不工作为了任何东西.

我承认我对此有点害怕

对不起我的英语.

非常感谢你.

delphi android firemonkey targetsdkversion

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

Android Google Map SDK Toolbar 问题——不启动外部地图

该应用程序使用 Maps SDK 内置了 Google 地图。点击地图工具栏上的图标之一应启动外部地图应用程序。

在此处输入图片说明

在 targetSDKVersion=29 之前,外部地图应用程序的启动一直运行良好。当targetSDKVersion=30时,启动失败,屏幕显示:Google Maps is not installed or is disabled。

这是为什么?

android google-maps targetsdkversion

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

Android 12:从 targetSdkVersion 31 开始,Toast 消息被剪裁

最近我的智能手机(Google Pixel 3)从 Android 11 更新到了 12。之后,我想相应地调整我的应用程序Sensor Recording。所以我在“build.gradle”中做了一些更改:

\n
compileSdkVersion 31    // 30 before\ndefaultConfig {\n    targetSdkVersion 31    // 30 before\n    \xe2\x80\xa6\n}\ndependencies {\n    implementation \'androidx.appcompat:appcompat:1.4.0\'         // 1.3.1 before\n    \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

一切正常。但是,我发现 Toast 消息现在有所不同:它们包含一个无用的图标,并且 \xe2\x80\x93 更糟糕的是 \xe2\x80\x93 文本消息被截断。

\n

在 SdkVersion 30 的 \xe2\x80\x93 之前

\n

在此输入图像描述

\n

在 SdkVersion 31 的 \xe2\x80\x93 之后

\n

在此输入图像描述

\n

两个 Toast 都是使用相同的代码生成的。但在新版本中,文本的重要部分缺失了。我怎样才能恢复旧的 Toast 行为?

\n

android toast targetsdkversion

7
推荐指数
0
解决办法
2295
查看次数

如何确定为我的 Android 应用设置哪个 minSDKVersion

如何确定我的项目中使用的最低 API 级别或最高 API 级别?有什么方法可以确定我项目中的哪一部分代码使用了哪个 API 级别?

无论如何,android studio 是否可以确定我的项目中使用的最低 API 级别和最高 API 级别?例如,所有任务的“TODO”跟踪等,我们在 Android Studio 中是否有任何功能来确定我的项目中使用的最低 API 级别和最高 API 级别?

我是新手,所以请多多包涵。

android android-studio android-min-sdk targetsdkversion

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

使用不同 targetSdkVersion 构建库和应用程序时 Android 中的行为

我是一个用于 Android 应用程序的库的作者。目前正在检查我的库在 Android 14 (API 34) 上的行为方式。

现在,API 34 删除了几个现有方法。例如,该方法android.webkit.WebSettings#setAppCacheEnabled已被删除。 https://developer.android.com/about/versions/14/behavior-changes-14#non-sdk-restrictions

值得注意的是,我的图书馆使用WebSettings#setAppCacheEnabled.

我已将该库安装到新创建的应用程序中以确保其正常工作。我的图书馆是用targetSdkVersion 28和构建的compileSdkVersion 28。我为 Android 14 创建的应用程序是使用targetSdkVersion 34和构建的compileSdkVersion 34

该库和应用程序的 AndroidManifest 将由 ManifestMerger 合并,并且两者都应适用于 API 34。

我预计这个测试应用程序无法正常工作,因为WebSettings#setAppCacheEnabled它在 API 34 中被删除了。但事实上,与我的预期相反,没有发生错误。为什么是这样?

谁知道为什么,请告诉我。

(我在 Android 14(UpsideDown Preview)模拟器上执行了此测试。)

java android android-studio targetsdkversion

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

错误:资源 'attr/actionBarSize' 与配置 '' 的重复值

我正在移植我当前的 android apk 以满足最近的 playstore 指令 - “targetSdkVersion 26”

这是我的 gradle 文件。我从 compileSdkVersion 26 开始,最后是 28。所以对于 28,我不得不使用 AndroidX 依赖项。我坚持主题行中发布的错误。任何帮助将不胜感激。

错误信息是

AGPBI: {"kind":"error","text":"error: duplicate value for resource \u0027attr/actionBarSize\u0027 with config \u0027\u0027.","sources":[{"file":"/Users/sk/.gradle/caches/transforms-1/files-1.1/appcompat-1.0.0.aar/34c8fa33903fb2b3203e5c70952da588/res/values/values.xml","position":{"startLine":1303,"startColumn":4,"startOffset":70911,"endColumn":68,"endOffset":70975}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: resource previously defined here.","sources":[{"file":"/Users/sk/.gradle/caches/transforms-1/files-1.1/appcompat-1.0.0.aar/34c8fa33903fb2b3203e5c70952da588/res/values/values.xml","position":{"startLine":1303,"startColumn":4,"startOffset":70911,"endColumn":68,"endOffset":70975}}],"original":"","tool":"AAPT"}
:app:mergeDebugResources

    apply plugin: 'com.android.application'

    android {

    compileSdkVersion 28
    buildToolsVersion "28.0.3"


    defaultConfig {
        applicationId "pack.age.net"
        minSdkVersion 16

        //Since no updates to app can be published in Playstore beginning Nov 1, 2018  - bumping targetSdk to 26 from 19
        targetSdkVersion 26

        //Double check this before you …
Run Code Online (Sandbox Code Playgroud)

android android-studio targetsdkversion

5
推荐指数
3
解决办法
7510
查看次数

targetSdkVersion 30 的 ActivityCompat.requestPermissions 不起作用

我有以下权限:

private static final String[] LOCATION_PERMISSIONS = {
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_BACKGROUND_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION,
};
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下行在我的代码中请求权限(活动是我当前的活动引用):

ActivityCompat.requestPermissions(activity, LOCATION_PERMISSIONS, 1);
Run Code Online (Sandbox Code Playgroud)

如果targetSdkVersion 29我的 build.gradle 文件中有或更低,一切正常。权限对话框出现,我可以按下按钮来授予权限。一切都很好

但!在我将目标 sdk 更改为 Android 11 后:targetSdkVersion 30此功能停止工作。权限系统对话框未出现 - 我无法为我的应用授予位置权限。

那么有人可以帮助我吗?我怎么了?我应该在代码中更改哪些内容 - 以正确使用 Android 11?

现在targetSdkVersion 29我也可以在 android 11 模拟器下运行我的应用程序。可能我根本不应该将目标 sdk 版本增加到:30?


解决办法是:

第 1 步:应用程序应请求前台位置权限:

private static final String[] FOREGROUND_LOCATION_PERMISSIONS = {
            Manifest.permission.ACCESS_FINE_LOCATION,       // GPS
            Manifest.permission.ACCESS_COARSE_LOCATION,     // GPS approximate location
    };
Run Code Online (Sandbox Code Playgroud)

第 2 步:应用程序应请求后台位置权限:

@RequiresApi(api = Build.VERSION_CODES.Q)
    private static final String[] BACKGROUND_LOCATION_PERMISSIONS = { …
Run Code Online (Sandbox Code Playgroud)

android targetsdkversion

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