我已添加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.
<?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
在文件build.gradle中我发现了这样的代码
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
如何从初始化位置更改这些值?1
我生成了一个签名的 apk,目标 sdk 版本为 30。(Android 11)。我知道它没有正式发布,但我的应用程序已准备好进行新的更改。我正在尝试将其上传到 google play 控制台,但遇到错误:
您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误:MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET:目标 SDK 版本 30 需要最低签名方案 v2;APK 未使用此签名方案或更高版本的签名方案进行签名。
我试图做的事情:
没有任何效果。我想知道它是否不起作用,因为该版本尚未发布。但是,我知道它应该从文档中工作。
从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通知,我的应用程序不工作为了任何东西.
我承认我对此有点害怕
对不起我的英语.
非常感谢你.
该应用程序使用 Maps SDK 内置了 Google 地图。点击地图工具栏上的图标之一应启动外部地图应用程序。
在 targetSDKVersion=29 之前,外部地图应用程序的启动一直运行良好。当targetSDKVersion=30时,启动失败,屏幕显示:Google Maps is not installed or is disabled。
这是为什么?
最近我的智能手机(Google Pixel 3)从 Android 11 更新到了 12。之后,我想相应地调整我的应用程序Sensor Recording。所以我在“build.gradle”中做了一些更改:
\ncompileSdkVersion 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如何确定我的项目中使用的最低 API 级别或最高 API 级别?有什么方法可以确定我项目中的哪一部分代码使用了哪个 API 级别?
无论如何,android studio 是否可以确定我的项目中使用的最低 API 级别和最高 API 级别?例如,所有任务的“TODO”跟踪等,我们在 Android Studio 中是否有任何功能来确定我的项目中使用的最低 API 级别和最高 API 级别?
我是新手,所以请多多包涵。
我是一个用于 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)模拟器上执行了此测试。)
我正在移植我当前的 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) 我有以下权限:
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) targetsdkversion ×10
android ×9
android-11 ×1
android-12 ×1
dart ×1
delphi ×1
firemonkey ×1
flutter ×1
google-maps ×1
java ×1
manifest ×1
toast ×1