• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

354
Views
android:exported debe especificarse explícitamente para <actividad>. Las aplicaciones destinadas a Android 12 y versiones posteriores deben especificar

Después de actualizar a Android 12, la aplicación no se compila. Muestra

"La fusión del manifiesto falló con múltiples errores, consulte los registros"

Error que se muestra en el manifiesto combinado:

Errores de fusión: Error: android:exported debe especificarse explícitamente para . Las aplicaciones destinadas a Android 12 y versiones posteriores deben especificar un valor explícito para android:exported cuando el componente correspondiente tiene un filtro de intenciones definido. Consulte https://developer.android.com/guide/topics/manifest/activity-element#exported para obtener más detalles. manifiesto principal (este archivo)

He configurado toda la actividad con android:exported="false" . Pero todavía muestra este problema.

Mi archivo de manifiesto:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="eu.siacs.conversations"> <uses-sdk tools:overrideLibrary="net.ypresto.androidtranscoder" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="22" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-feature android:name="android.hardware.location" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.microphone" android:required="false" /> <application android:name=".Application" android:allowBackup="false" android:allowClearUserData="true" android:appCategory="social" android:hardwareAccelerated="true" android:icon="@mipmap/ic_app_launch" android:label="@string/app_name" android:largeHeap="true" android:networkSecurityConfig="@xml/network_security_configuration" android:requestLegacyExternalStorage="true" android:roundIcon="@mipmap/ic_app_launch_round" android:theme="@style/ConversationsTheme" android:usesCleartextTraffic="true" android:windowSoftInputMode="adjustPan|adjustResize" tools:replace="android:label" tools:targetApi="q"> <activity android:name=".ui.search.GroupSearchActivity" android:exported="true" /> <activity android:name=".ui.profileUpdating.FavouritesActivity" android:exported="true" /> <activity android:name=".ui.profileUpdating.NameActivity" android:exported="true" /> <activity android:name=".ui.CompulsoryUpdateActivity" android:exported="true" /> <activity android:name=".ui.payments.doPayment.DoPaymentActivity" android:exported="true" /> <activity android:name=".ui.individualList.IndividualListActivity" android:exported="true" /> <activity android:name=".ui.payments.setPayment.SetPaymentActivity" android:exported="true" /> <activity android:name=".ui.login.otpActivity.OTPActivity" android:exported="true" /> <activity android:name=".ui.login.loginActivity.LoginActivity" android:exported="true" /> <service android:name=".services.XmppConnectionService" android:exported="true" /> <receiver android:name=".services.EventReceiver" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.intent.action.ACTION_SHUTDOWN" /> <action android:name="android.media.RINGER_MODE_CHANGED" /> </intent-filter> </receiver> <activity android:name=".ui.ShareLocationActivity" android:label="@string/title_activity_share_location" android:exported="true"/> <activity android:name=".ui.SearchActivity" android:label="@string/search_messages" android:exported="true" /> <activity android:name=".ui.RecordingActivity" android:configChanges="orientation|screenSize" android:theme="@style/ConversationsTheme.Dialog" android:exported="true" /> <activity android:name=".ui.ShowLocationActivity" android:label="@string/title_activity_show_location" android:exported="true" /> <activity android:name=".ui.SplashActivity" android:theme="@style/SplashTheme" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ui.ConversationsActivity" android:label="@string/app_name" android:launchMode="singleTask" android:minWidth="300dp" android:minHeight="300dp" android:exported="true" android:windowSoftInputMode="stateHidden" /> <activity android:name=".ui.ScanActivity" android:screenOrientation="portrait" android:exported="true" android:theme="@style/ConversationsTheme.FullScreen" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".ui.UriHandlerActivity" android:label="@string/app_name" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="xmpp" /> </intent-filter> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="im.app.in" /> <data android:pathPrefix="/i/" /> <data android:pathPrefix="/j/" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="imto" /> <data android:host="jabber" /> </intent-filter> </activity> <activity android:name=".ui.StartConversationActivity" android:label="@string/title_activity_start_conversation" android:launchMode="singleTop" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> </intent-filter> </activity> <activity android:name=".ui.SettingsActivity" android:label="@string/title_activity_settings" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" /> </intent-filter> </activity> <activity android:name=".ui.ChooseContactActivity" android:label="@string/title_activity_choose_contact" android:exported="true" /> <activity android:name=".ui.BlocklistActivity" android:label="@string/title_activity_block_list" android:exported="true"/> <activity android:name=".ui.ChangePasswordActivity" android:label="@string/change_password_on_server" android:exported="true"/> <activity android:name=".ui.ChooseAccountForProfilePictureActivity" android:enabled="false" android:label="@string/choose_account" android:exported="true"> <intent-filter android:label="@string/set_profile_picture"> <action android:name="android.intent.action.ATTACH_DATA" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> </activity> <activity android:name=".ui.ShareViaAccountActivity" android:label="@string/title_activity_share_via_account" android:launchMode="singleTop" android:exported="true" /> <activity android:name=".ui.EditAccountActivity" android:launchMode="singleTop" android:exported="true" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name=".ui.ConferenceDetailsActivity" android:label="@string/action_muc_details" android:exported="true" android:windowSoftInputMode="stateHidden" /> <activity android:name=".ui.ContactDetailsActivity" android:exported="true" android:windowSoftInputMode="stateHidden" /> <activity android:name=".ui.PublishProfilePictureActivity" android:label="@string/mgmt_account_publish_avatar" android:exported="true" android:windowSoftInputMode="stateHidden" /> <activity android:name=".ui.PublishGroupChatProfilePictureActivity" android:exported="true" android:label="@string/group_chat_avatar" /> <activity android:name=".ui.ShareWithActivity" android:label="@string/app_name" android:launchMode="singleTop" android:exported="true"> <intent-filter> <action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter> <!-- the value here needs to be the full class name; independent of the configured applicationId --> <meta-data android:name="android.service.chooser.chooser_target_service" android:value="eu.siacs.conversations.services.ContactChooserTargetService" /> </activity> <activity android:name=".ui.TrustKeysActivity" android:label="@string/trust_omemo_fingerprints" android:exported="true" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity" android:exported="true" android:theme="@style/Base.Theme.AppCompat" /> <activity android:name=".ui.MemorizingActivity" android:exported="true" /> <activity android:name=".ui.MediaBrowserActivity" android:exported="true" android:label="@string/media_browser" /> <service android:name=".services.ExportBackupService" android:exported="true"/> <service android:name=".services.ImportBackupService" android:exported="true"/> <service android:name=".services.ContactChooserTargetService" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE" android:exported="true"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service> <service android:name=".services.CompulsoryUpdateService" android:exported="true"/> <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.files" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> <provider android:name=".services.BarcodeProvider" android:authorities="${applicationId}.barcodes" android:exported="false" android:grantUriPermissions="true" /> <activity android:name=".ui.ShortcutActivity" android:label="@string/contact" android:exported="true"> <intent-filter> <action android:name="android.intent.action.CREATE_SHORTCUT" /> </intent-filter> </activity> <activity android:name=".ui.MucUsersActivity" android:exported="true" android:label="@string/group_chat_members" /> <activity android:name=".ui.ChannelDiscoveryActivity" android:exported="true" android:label="@string/discover_channels" /> <activity android:name=".ui.RtpSessionActivity" android:autoRemoveFromRecents="true" android:exported="true" android:launchMode="singleInstance" android:supportsPictureInPicture="true" /> </application> </manifest>

Mi segundo archivo de manifiesto:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="eu.siacs.conversations"> <application tools:ignore="GoogleAppIndexingWarning"> <activity android:name=".ui.ManageAccountActivity" android:label="@string/title_activity_manage_accounts" android:launchMode="singleTask" android:exported="true"/> <activity android:name=".ui.MagicCreateActivity" android:label="@string/create_new_account" android:launchMode="singleTask" android:exported="true"/> <activity android:name=".ui.EasyOnboardingInviteActivity" android:label="@string/invite_to_app" android:launchMode="singleTask" /> <activity android:name=".ui.ImportBackupActivity" android:label="@string/restore_backup" android:launchMode="singleTask" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="application/vnd.conversations.backup" /> <data android:scheme="content" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="application/vnd.conversations.backup" /> <data android:scheme="file" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="content" /> <data android:host="*" /> <data android:mimeType="*/*" /> <data android:pathPattern=".*\\.ceb" /> <data android:pathPattern=".*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.ceb" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="file" /> <data android:host="*" /> <data android:mimeType="*/*" /> <data android:pathPattern=".*\\.ceb" /> <data android:pathPattern=".*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ceb" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.ceb" /> </intent-filter> </activity> </application> </manifest>

Mi archivo gradle:

 import com.android.build.OutputFile // Top-level build file where you can add configuration options common to all // sub-projects/modules. buildscript { ext.kotlin_version = "1.5.21" repositories { google() mavenCentral() maven { url 'https://jitpack.io' } gradlePluginPortal() } dependencies { classpath 'com.android.tools.build:gradle:4.2.2' classpath 'com.google.gms:google-services:4.3.8' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'com.google.gms.google-services' repositories { google() mavenCentral() jcenter() maven { url 'https://jitpack.io' } } configurations { conversationsFreeCompatImplementation } dependencies { implementation 'androidx.viewpager:viewpager:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'org.sufficientlysecure:openpgp-api:10.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.exifinterface:exifinterface:1.3.2' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.emoji:emoji:1.1.0' implementation 'com.google.android.material:material:1.4.0' conversationsFreeCompatImplementation 'androidx.emoji:emoji-bundled:1.1.0' implementation 'org.bouncycastle:bcmail-jdk15on:1.64' //zxing stopped supporting Java 7 so we have to stick with 3.3.3 //https://github.com/zxing/zxing/issues/1170 implementation 'com.google.zxing:core:3.4.1' implementation 'de.measite.minidns:minidns-hla:0.2.4' implementation 'me.leolin:ShortcutBadger:1.1.22@aar' implementation 'org.whispersystems:signal-protocol-java:2.8.1' implementation 'com.makeramen:roundedimageview:2.3.0' implementation "com.wefika:flowlayout:0.4.1" implementation 'net.ypresto.androidtranscoder:android-transcoder:0.3.0' implementation 'org.jxmpp:jxmpp-jid:1.0.1' implementation 'org.osmdroid:osmdroid-android:6.1.10' implementation 'org.hsluv:hsluv:0.2' implementation 'org.conscrypt:conscrypt-android:2.5.2' implementation 'me.drakeet.support:toastcompat:1.1.0' implementation "com.leinardi.android:speed-dial:3.2.0" implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.squareup.retrofit2:converter-gson:2.9.0" implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.2" implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2' implementation 'com.google.guava:guava:30.1.1-android' implementation 'org.webrtc:google-webrtc:1.0.32006' // Lifecycle Helper implementation "androidx.activity:activity-ktx:1.3.0-rc02" implementation "androidx.fragment:fragment-ktx:1.3.6" //Navigation implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5' implementation 'androidx.navigation:navigation-ui-ktx:2.3.5' //CardView implementation "androidx.cardview:cardview:1.0.0" //Country Code Picker implementation 'com.hbb20:ccp:2.5.3' //Firebase implementation 'com.google.firebase:firebase-bom:28.3.0' implementation 'com.google.firebase:firebase-auth-ktx:21.0.1' implementation 'androidx.browser:browser:1.3.0' //OTP view implementation 'com.github.mukeshsolanki:android-otpview-pinview:2.1.2' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' //Gson implementation 'com.google.code.gson:gson:2.8.7' //Multidex implementation 'androidx.multidex:multidex:2.0.1' //Round Image implementation 'de.hdodenhof:circleimageview:3.1.0' // Button with image and text implementation 'com.github.Omega-R:OmegaCenterIconButton:0.0.4@aar' //Razor pay implementation 'com.razorpay:checkout:1.6.10' //Mixpanel Tracking implementation 'com.mixpanel.android:mixpanel-android:5.9.1' //Loading screen implementation 'com.wang.avi:library:2.1.3' //Loading implementation 'com.wang.avi:library:2.1.3' //Form implementation 'com.quickbirdstudios:surveykit:1.1.0' } ext { travisBuild = System.getenv("TRAVIS") == "true" preDexEnabled = System.getProperty("pre-dex", "true") abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4] } android { compileSdkVersion 31 defaultConfig { minSdkVersion 24 targetSdkVersion 31 versionCode 44 versionName "2.0.4" multiDexEnabled = true archivesBaseName += "-$versionName" applicationId "com.app.app" resValue "string", "applicationId", applicationId def appName = "app" resValue "string", "app_name", appName buildConfigField "String", "APP_NAME", "\"$appName\"" } splits { abi { universalApk true enable true } } configurations { compile.exclude group: 'org.jetbrains' , module:'annotations' } dataBinding { enabled true } dexOptions { // Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false. preDexLibraries = preDexEnabled && !travisBuild jumboMode true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } flavorDimensions("mode", "distribution", "emoji") productFlavors { conversations { dimension "mode" } free { dimension "distribution" versionNameSuffix "+f" } compat { dimension "emoji" versionNameSuffix "c" } } sourceSets { conversationsFreeCompat { java { srcDir 'src/freeCompat/java' srcDir 'src/conversationsFree/java' } } } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' versionNameSuffix "r" } debug { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' versionNameSuffix "d" } } if (new File("signing.properties").exists()) { Properties props = new Properties() props.load(new FileInputStream(file("signing.properties"))) signingConfigs { release { storeFile file(props['keystore']) storePassword props['keystore.password'] keyAlias props['keystore.alias'] keyPassword props['keystore.password'] } } buildTypes.release.signingConfig = signingConfigs.release } lintOptions { disable 'MissingTranslation', 'InvalidPackage','AppCompatResource' } subprojects { afterEvaluate { if (getPlugins().hasPlugin('android') || getPlugins().hasPlugin('android-library')) { configure(android.lintOptions) { disable 'AndroidGradlePluginVersion', 'MissingTranslation' } } } } packagingOptions { exclude 'META-INF/BCKEY.DSA' exclude 'META-INF/BCKEY.SF' } android.applicationVariants.all { variant -> variant.outputs.each { output -> def baseAbiVersionCode = project.ext.abiCodes.get(output.getFilter(OutputFile.ABI)) if (baseAbiVersionCode != null) { output.versionCodeOverride = (100 * variant.versionCode) + baseAbiVersionCode } } } }
over 3 years ago · Hanz Gallego
21 answers
Answer question

0

No estoy seguro de qué está usando para codificar, pero para configurarlo en Android Studio, abra el manifiesto de su proyecto y en la sección "actividad", coloque android:exported="true" (o falso si eso es lo que prefieres). He adjuntado un ejemplo.

over 3 years ago · Hanz Gallego Report

0

Tuve este problema y una de las bibliotecas que usé no estaba configurada correctamente.

Puedes encontrarlo siguiendo los pasos:

  • Establezca el SDK de destino para 30
  • Vaya al manifiesto fusionado: Manifiesto fusionado en Android Studio
  • Vaya al archivo de manifiesto individual de todas las bibliotecas (puede omitir este paso si se crea el manifiesto combinado y solo puede mirar el manifiesto combinado)
  • Encuentre si hay alguna actividad, servicio, receptor o proveedor que no tenga una exported y configúrelo según las necesidades correspondientes. Podemos anular la especificación escrita en el manifiesto de una biblioteca agregándola al manifiesto de nuestra aplicación. Más información: Documentación , Problema similar en un SDK .
  • Establecer SDK de destino para 31
  • Anula todas las entradas que encontraste así:
 <receiver android:name="<name_of_the_entry>" android:exported="false or true" tools:node="merge" />
over 3 years ago · Hanz Gallego Report

0

Encontré esta solución aquí , funciona para mí. Esto lo da el github oficial de razorpay. Han mencionado que lo arreglarán en la próxima versión.

 <receiver android:name="com.razorpay.RzpTokenReceiver" android:exported="false"> <intent-filter> <action android:name="rzp.device_token.share" /> </intent-filter> </receiver> <activity android:name="com.razorpay.CheckoutActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@style/CheckoutTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <data android:host="rzp.io" android:scheme="io.rzp" /> </intent-filter> </activity>
over 3 years ago · Hanz Gallego Report

0

Mi problema era que estábamos usando la versión anterior de empuñadura 2.38.1:

 "com.google.dagger:hilt-android:2.38.1" "com.google.dagger:hilt-android-gradle-plugin:2.38.1" "com.google.dagger:hilt-android-compiler:2.38.1" "com.google.dagger:hilt-android-testing:2.38.1"

"com.google.dagger:hilt-android-testing:2.38.1" bajo el capó depende de la biblioteca de pruebas principal 1.3.0, que establece las propiedades exportadas.

Para solucionar esto, asegúrese de estar usando la última versión de empuñadura de daga (2.40.5 funciona):

 "com.google.dagger:hilt-android:2.40.5" "com.google.dagger:hilt-android-gradle-plugin:2.40.5" "com.google.dagger:hilt-android-compiler:2.40.5" "com.google.dagger:hilt-android-testing:2.40.5"
over 3 years ago · Hanz Gallego Report

0

Cambiar targetSdkVersion de nuevo a 30
Puede dejar compileSdkVersion en 31
Luego presiona Ejecutar

over 3 years ago · Hanz Gallego Report

0

Si su aplicación está orientada a Android 12 o superior, debe declarar estas etiquetas de atribución en el archivo de manifiesto de su aplicación. Si el componente de la aplicación incluye la categoría LAUNCHER, establezca android:exported en verdadero.

 <activity android:name="com.test.activity.SplashActivity" android:clearTaskOnLaunch="true" android:label="@string/app_name" android:launchMode="singleTop" android:noHistory="true" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:exported="true">

También verifique el receptor o el servicio en Androidmanifest, si está utilizando algún receptor o servicio, configure Android: exported="true" o false según el requisito.

 <receiver android:name="com.test.receiver.ShareReceiver" android:exported="true"> <intent-filter> <action android:name="com.test.fcm.android.action.broadcast" /> </intent-filter> </receiver> <service android:name="com.google.android.gms.tagmanager.InstallReferrerService" android:exported="true" />

También actualice toda su dependencia de gradle.

He actualizado la siguiente dependencia según el requisito.

 testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'com.razorpay:checkout:1.6.15'

Espero que te ayude a ti también.

over 3 years ago · Hanz Gallego Report

0

Citando documentos oficiales sobre este cambio de comportamiento en Android 12 , debe buscar actividades que contengan intent-filter y esas son las que deben actualizarse configurando explícitamente el valor de android:exported .

Los registros de compilación deben apuntar exactamente a la actividad con el indicador de exportación no declarado que detuvo la compilación. Debería ver algo como esto entre las últimas líneas de la salida de la consola de los comandos de install de gradle:

 > java.util.concurrent.ExecutionException: com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/xxxxx.tmp/base.apk (at Binary XML file line #129): YOUR.FULLY.QUALIFIED.NAME.FAILING.ACTIVITY: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present

YOUR.FULLY.QUALIFIED.NAME.FAILING.ACTIVITY debe indicarte la actividad específica que está bloqueando tu compilación.

Aquí también está el enlace a las implicaciones de configurar android:exported .

over 3 years ago · Hanz Gallego Report

0

El problema en mi caso fue test:core:1.3.0 (ver captura de pantalla).

Tuve que anular las entradas del manifiesto para esta biblioteca y declarar la propiedad android:exported :

 <activity android:name="androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity" android:exported="true" tools:node="merge"/> <activity android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyActivity" android:exported="true" tools:node="merge"/> <activity android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyFloatingActivity" android:exported="true" tools:node="merge"/>

ingrese la descripción de la imagen aquí

over 3 years ago · Hanz Gallego Report

0

Simplemente actualice todas sus dependencias, debería funcionar

over 3 years ago · Hanz Gallego Report

0

Si está seguro de agregar exportado a cada elemento en el archivo de manifiesto y aún recibe este error, simplemente:

  1. cambie al directorio del proyecto y abra el archivo de manifiesto fusionado en app\build\intermediates\merged_manifest
  2. busque cualquier componente que contenga un filtro de intención y no tenga un atributo exportado
  3. anule este componente en su archivo de manifiesto copiándolo en su archivo de manifiesto principal

Sugerencia: si no puede encontrar el archivo combinado porque ya no pudo generarlo, cambie temporalmente a targetSdkVersion 30 y compileSdkVersion 30 y cree el proyecto para generar este archivo y luego siga los pasos anteriores y luego actualice a 31 (android 12)

over 3 years ago · Hanz Gallego Report

0

Para la prueba instrumentada, si está utilizando la prueba de redacción, asegúrese de agregar androidx.test.ext:junit además de las dependencias de compose.ui

 androidTestImplementation "androidx.test.ext:junit:1.1.3" androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.0.4"
over 3 years ago · Hanz Gallego Report

0

como la actualización de SDK de destino a 31 Android 12, por lo que debe exportar Android en su almuerzo de actividad en manifest.xml

 android:exported="true"
over 3 years ago · Hanz Gallego Report

0

Recibí este error que apuntaba a SDK 31 y descubrí que la solución estaba en mi archivo build.gradle. Estaba usando la implementation en mi dependencia de prueba de redacción en lugar de testImplementation .

Parece no estar relacionado, lo sé, pero cuando observa su manifiesto de fusión con una dependencia de prueba mal utilizada, verá etiquetas agregadas para InstrumentedActivity a las que les faltará el campo exported=true .

over 3 years ago · Hanz Gallego Report

0

Verifique su archivo build.gradle para:

 debugImplementation "androidx.fragment:fragment-testing:<version>"

y si está presente, cámbielo a:

 androidTestImplementation "androidx.fragment:fragment-testing:<version>"

Siempre debería haber sido androidTestImplementation , pero antes había algún problema de dependencia y era necesario usar debugImplementation como solución alternativa. El IDE en realidad le pidió que hiciera esto. Pero evidentemente está arreglado para SDK 31, y si lo deja como debugImplementation, obtiene el error de manifiesto android:exported exported -missing que proviene de un manifest.xml en un paquete dependiente.

over 3 years ago · Hanz Gallego Report

0

Solución temporal

cambie compileSdk, targetSdk a

compilar SDK 30 destino SDK 30

en archivo gradle

over 3 years ago · Hanz Gallego Report

0

Después de que la compilación haya fallado, vaya a AndroidManifest.xml y, en la parte inferior, haga clic en el manifiesto combinado para ver qué actividades tienen intent-filter pero no tienen el atributo exported=true . O simplemente puede obtener las actividades que dan error.

Agregue estas actividades al manifiesto de su aplicación con android:exported="true" y tools:node="merge" esto agregará el atributo exportado a las actividades que dan error. Ejemplo:

 <activity android:name="<activity which is giving error>" android:exported="true" tools:node="merge" />

Tendrá que hacer esto una vez, puede eliminarlo una vez que los desarrolladores de la biblioteca actualicen sus bibliotecas.

over 3 years ago · Hanz Gallego Report

0

Solucionar este problema puede ser un poco engorroso, porque el IDE no brinda detalles sobre el error, solo le dice que hay una Actividad, Receptor o Servicio sin el parámetro exportado, pero no le dice cuál es. Como recomienda Jakos, puede verificar manualmente el manifiesto fusionado o usareste script en caso de que el manifiesto generado sea demasiado grande.

Después de eso, puede modificar las entradas afectadas agregando el atributo exportado si es parte de su proyecto, o anularlo si es parte de una biblioteca con:

 <activity android:name="name_of_the_activity_inside_library>" android:exported="false|true" tools:node="merge" />

ACTUALIZACIÓN: la tarea de fusión del manifiesto parece fallar sin generar el manifiesto cuando se dirige a Android S y se detectan estos problemas, por lo que mi consejo es compilar la aplicación usando un targetSdk inferior a 31 y luego inspeccionar el manifiesto generado manualmente o usando el script enlacé. (puede encontrar el manifiesto fusionado en la carpeta de compilación o inspeccionando el apk generado)

over 3 years ago · Hanz Gallego Report

0

Resulta que conozco ese problema en Android 12 específicamente. Ya hay un error planteado en Android SDK. En la solución de su problema, aquí hay un archivo que puede agregar en Android Studio y ejecutar el método.

Habilitar archivo exportado de Android

Luego ejecute los métodos de definición e intente compilar. Es un método de trabajo probado y probado.

over 3 years ago · Hanz Gallego Report

0

<activity android:name=".MainActivity" android:exported="true" <** add this line on AndroidManifest.xml** android:launchMode="singleTop" android:theme="@style/LaunchTheme" </activity>
over 3 years ago · Hanz Gallego Report

0

Caso 1: sin submódulos ni bibliotecas

Este problema comenzó con SDK 31. Si no tiene bibliotecas o submódulos, agregue

 android:exported="true" <!-- or false as required -->

Puede hacer clic derecho en la etiqueta y Android Studio le sugerirá.

Caso 2: Con submódulos o bibliotecas

Si tiene otras bibliotecas o módulos que está importando, también debe anularlos. Para eso, vea la pestaña 'Manifiesto combinado'. O puede abrir

<ProjectRoot>/app/build/intermediates/merged_manifest/<su sabor>/AndroidManifest.xml

en un editor. Prefiero el segundo método, ya que el manifiesto combinado no permite buscar desde Android Studio.

  1. Copie <actividad>, <receptor> o cualquier otro que cause errores de compilación.
  2. Pégalos en el manifiesto principal
  3. Agregue android:exported="true" o android:exported="false" según sea necesario
  4. Reconstruir

Caso 3: Si nada de lo anterior funciona

Si nada de lo anterior funciona, tendrá que esperar hasta que el proveedor de su biblioteca realice los cambios necesarios. Hasta que realicen cambios, puede revertir la versión SDK a 30 o inferior. Bajar SDK debería solucionar el problema temporalmente.

over 3 years ago · Hanz Gallego Report

0

si está utilizando flutter, actualizar flutter_local_notifications a la última versión (ahora es 9.3.2) puede resolver este error.

over 3 years ago · Hanz Gallego Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error