Невозможно создать исполняемую сборку подписанного выпуска dexgaurd. ⇐ Android
Невозможно создать исполняемую сборку подписанного выпуска dexgaurd.
Я обновил свой проект до версии Gradle до 4.0 и библиотеки версий поддержки Android до последней версии (т. 27.0.0) с целевым API с Android O(26) и создал подписанную сборку выпуска.
Теперь у меня происходит сбой при открытии приложения:
java.lang.IllegalAccessError: метод «boolean android.view.ViewGroup.checkLayoutParams(android.view.ViewGroup$LayoutParams)» недоступен для класса «android.support.v7.widget.ActionMenuPresenter» (объявление «android.support.v7.widget.ActionMenuPresenter» появляется в /data/app/com.example-iuW7irEMrfWuoyVjp6OGKA==/base.apk) в android.support.v7.widget.ActionMenuPresenter.getItemView(:202) в android.support.v7.widget.ActionMenuPresenter.flagActionItems(:476) в android.support.v7.view.menu.MenuBuilder.flagActionItems(:1164) в android.support.v7.view.menu.BaseMenuPresenter.updateMenuView(:95) в android.support.v7.widget.ActionMenuPresenter.updateMenuView(:229) в android.support.v7.view.menu.MenuBuilder.dispatchPresenterUpdate(:291) в android.support.v7.view.menu.MenuBuilder.onItemsChanged(:1051) в android.support.v7.view.menu.MenuBuilder.startDispatchingItemsChanged(:1078) в android.support.v7.app.ToolbarActionBar.populateOptionsMenu(:460) в android.support.v7.app.ToolbarActionBar$1.run(:55) в android.os.Handler.handleCallback(Handler.java:789) в android.os.Handler.dispatchMessage(Handler.java:98) в android.os.Looper.loop(Looper.java:164) в android.app.ActivityThread.main(ActivityThread.java:6809) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)' Мой build.gradle:
применить плагин: 'com.android.application' применить плагин: 'io.fabric' применить плагин: 'net.researchgate.release' применить плагин: 'dexguard' андроид { compileSdkVersion project.ext.compile_sdk_version buildToolsVersion project.ext.build_tools_version lintOptions { тихая ложь abortOnError ложь ignoreWarnings false отключить «РесурсТип» } dexOptions { javaMaxHeapSize "4g" } подписываниеConfigs { выпускать { } } «канал» FlavorDimensions ProductFlavors { магазин игр { измерение «канал» ManifestPlaceholders = [channelName: "playstore"] } } конфигурации { все { исключить группу: «org.json», модуль: «json» исключить модуль: 'httpclient' исключить модуль: 'общий журнал' резолюцияСтратегия { Force "com.android.support:gridlayout-v7:${support_version}" принудительное "com.android.support:support-v4:${support_version}" принудительное "com.android.support:appcompat-v7:${support_version}" принудительное "com.android.support:cardview-v7:${support_version}" принудительное "com.android.support:recyclerview-v7:${support_version}" принудительное использование "com.android.support:design:${support_version}" } } } defaultConfig { идентификатор приложения «com.example» minSdkVersion project.ext.min_sdk_version targetSdkVersion project.ext.target_sdk_version VectorDrawables.useSupportLibrary = true код версии манифестаVersionCode имя_версииимя_манифеста_версии buildConfigField BOOLEAN, LOAD_DUMMY_JSON, FALSE // Конфиг для включения фиктивного режима buildConfigField BOOLEAN, SET_SPOOF_REQUEST, FALSE // Конфигурация для подмены запроса buildConfigField BOOLEAN, REPORT_CRASHES, TRUE // Флаг для сообщения о сбоях multiDexEnabled true } типы сборки { выпускать { buildConfigField BOOLEAN, LOG_LEVEL_DEBUG, FALSE SigningConfig SigningConfigs.release buildConfigField STRING, S3_URL, BASE_URL_S3_PROD //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFile getDefaultDexGuardFile('dexguard-release.pro') proguardFile 'dexguard-project.pro' proguardFile 'proguard-rules.pro' } отладка { отлаживаемая правда buildConfigField BOOLEAN, REPORT_CRASHES, FALSE buildConfigField BOOLEAN, LOG_LEVEL_DEBUG, TRUE proguardFile getDefaultDexGuardFile('dexguard-debug.pro') proguardFile 'dexguard-project.pro' proguardFile 'proguard-rules.pro' applicationIdSuffix ".debug" } } компиляцияварианты { исходная совместимость JavaVersion.VERSION_1_8 целевая совместимость JavaVersion.VERSION_1_8 } } защита gitBranchName() { return 'git rev-parse --abbrev-ref HEAD'.execute().text.trim() } android.buildTypes.all { buildType -> android.productFlavors.each { аромат -> Task("exampleOne${flavor.name.capitalize()}${buildType.name.capitalize()}Assemble") { if (buildType.name == android.buildTypes.release.name) { зависит от "выпуска" } еще { зависит от "assemble${flavor.name.capitalize()}${buildType.name.capitalize()}" } } } } /** * переименуйте сгенерированный APK. * используйте SNAPSHOT для промежуточных сборок */ Tasks.whenTaskAdded {задача -> if (task.name == 'generateReleaseBuildConfig') { Task.dependentsOn 'updateVersionProperties' } } /* Переопределить задачу плагина выпуска и обновить файл свойств версии. */ задача('updateVersionProperties')
Я обновил свой проект до версии Gradle до 4.0 и библиотеки версий поддержки Android до последней версии (т. 27.0.0) с целевым API с Android O(26) и создал подписанную сборку выпуска.
Теперь у меня происходит сбой при открытии приложения:
java.lang.IllegalAccessError: метод «boolean android.view.ViewGroup.checkLayoutParams(android.view.ViewGroup$LayoutParams)» недоступен для класса «android.support.v7.widget.ActionMenuPresenter» (объявление «android.support.v7.widget.ActionMenuPresenter» появляется в /data/app/com.example-iuW7irEMrfWuoyVjp6OGKA==/base.apk) в android.support.v7.widget.ActionMenuPresenter.getItemView(:202) в android.support.v7.widget.ActionMenuPresenter.flagActionItems(:476) в android.support.v7.view.menu.MenuBuilder.flagActionItems(:1164) в android.support.v7.view.menu.BaseMenuPresenter.updateMenuView(:95) в android.support.v7.widget.ActionMenuPresenter.updateMenuView(:229) в android.support.v7.view.menu.MenuBuilder.dispatchPresenterUpdate(:291) в android.support.v7.view.menu.MenuBuilder.onItemsChanged(:1051) в android.support.v7.view.menu.MenuBuilder.startDispatchingItemsChanged(:1078) в android.support.v7.app.ToolbarActionBar.populateOptionsMenu(:460) в android.support.v7.app.ToolbarActionBar$1.run(:55) в android.os.Handler.handleCallback(Handler.java:789) в android.os.Handler.dispatchMessage(Handler.java:98) в android.os.Looper.loop(Looper.java:164) в android.app.ActivityThread.main(ActivityThread.java:6809) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)' Мой build.gradle:
применить плагин: 'com.android.application' применить плагин: 'io.fabric' применить плагин: 'net.researchgate.release' применить плагин: 'dexguard' андроид { compileSdkVersion project.ext.compile_sdk_version buildToolsVersion project.ext.build_tools_version lintOptions { тихая ложь abortOnError ложь ignoreWarnings false отключить «РесурсТип» } dexOptions { javaMaxHeapSize "4g" } подписываниеConfigs { выпускать { } } «канал» FlavorDimensions ProductFlavors { магазин игр { измерение «канал» ManifestPlaceholders = [channelName: "playstore"] } } конфигурации { все { исключить группу: «org.json», модуль: «json» исключить модуль: 'httpclient' исключить модуль: 'общий журнал' резолюцияСтратегия { Force "com.android.support:gridlayout-v7:${support_version}" принудительное "com.android.support:support-v4:${support_version}" принудительное "com.android.support:appcompat-v7:${support_version}" принудительное "com.android.support:cardview-v7:${support_version}" принудительное "com.android.support:recyclerview-v7:${support_version}" принудительное использование "com.android.support:design:${support_version}" } } } defaultConfig { идентификатор приложения «com.example» minSdkVersion project.ext.min_sdk_version targetSdkVersion project.ext.target_sdk_version VectorDrawables.useSupportLibrary = true код версии манифестаVersionCode имя_версииимя_манифеста_версии buildConfigField BOOLEAN, LOAD_DUMMY_JSON, FALSE // Конфиг для включения фиктивного режима buildConfigField BOOLEAN, SET_SPOOF_REQUEST, FALSE // Конфигурация для подмены запроса buildConfigField BOOLEAN, REPORT_CRASHES, TRUE // Флаг для сообщения о сбоях multiDexEnabled true } типы сборки { выпускать { buildConfigField BOOLEAN, LOG_LEVEL_DEBUG, FALSE SigningConfig SigningConfigs.release buildConfigField STRING, S3_URL, BASE_URL_S3_PROD //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFile getDefaultDexGuardFile('dexguard-release.pro') proguardFile 'dexguard-project.pro' proguardFile 'proguard-rules.pro' } отладка { отлаживаемая правда buildConfigField BOOLEAN, REPORT_CRASHES, FALSE buildConfigField BOOLEAN, LOG_LEVEL_DEBUG, TRUE proguardFile getDefaultDexGuardFile('dexguard-debug.pro') proguardFile 'dexguard-project.pro' proguardFile 'proguard-rules.pro' applicationIdSuffix ".debug" } } компиляцияварианты { исходная совместимость JavaVersion.VERSION_1_8 целевая совместимость JavaVersion.VERSION_1_8 } } защита gitBranchName() { return 'git rev-parse --abbrev-ref HEAD'.execute().text.trim() } android.buildTypes.all { buildType -> android.productFlavors.each { аромат -> Task("exampleOne${flavor.name.capitalize()}${buildType.name.capitalize()}Assemble") { if (buildType.name == android.buildTypes.release.name) { зависит от "выпуска" } еще { зависит от "assemble${flavor.name.capitalize()}${buildType.name.capitalize()}" } } } } /** * переименуйте сгенерированный APK. * используйте SNAPSHOT для промежуточных сборок */ Tasks.whenTaskAdded {задача -> if (task.name == 'generateReleaseBuildConfig') { Task.dependentsOn 'updateVersionProperties' } } /* Переопределить задачу плагина выпуска и обновить файл свойств версии. */ задача('updateVersionProperties')
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Unity: Как отличить игрока, подписанного анонимно от игрока, подписанного с Apple Win
Anonymous » » в форуме C# - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Unity: Как отличить игрока, подписанного анонимно от игрока, подписанного с Apple Win
Anonymous » » в форуме IOS - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Unity: Как отличить игрока, подписанного анонимно от игрока, подписанного с Apple Win
Anonymous » » в форуме C# - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Unity: Как отличить игрока, подписанного анонимно от игрока, подписанного с Apple Win
Anonymous » » в форуме IOS - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-