programing

도구를 사용하는 방법:build.gradle 파일에서 라이브러리를 재정의합니까?

itsource 2023. 8. 15. 20:32
반응형

도구를 사용하는 방법:build.gradle 파일에서 라이브러리를 재정의합니까?

안드로이드 17 이상이 필요한 린백 라이브러리를 사용하고 있습니다.그러나 내 앱은 16의 minSDK를 지원하므로 gradle에서 빌드 오류가 발생합니다.

Error:Execution failed for task ':Tasks:processPhoneDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 17 declared in library /Users/mike/Projects/android-for-dummies-v3/Tasks/build/intermediates/exploded-aar/com.android.support/leanback-v17/21.0.2/AndroidManifest.xml
    Suggestion: use tools:overrideLibrary="android.support.v17.leanback" to force usage

빌드 도구 설명서를 보면 다음을 추가하는 방법을 확인할 수 있습니다.overrideLibrary내 매니페스트의 마커입니다. 하지만 문제는 내 minSdk를 매니페스트가 아닌 그래들 파일에 선언한다는 것입니다.

제가 어떻게 이용합니까overrideLibraryminSdk가 AndroidManifest.xml이 아닌 build.gradle로 선언되면 어떻게 됩니까?

Android Studio 열기 -> 매니페스트 파일 열기

더하다<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>포함하는 것을 잊지 마세요.xmlns:tools="http://schemas.android.com/tools"역시, 그 전에.<application>꼬리표를 달다

enter image description here

minSdk를 build.gradle에 선언하는 것은 중요하지 않습니다.복사해야 합니다.overrideLibrary당신의AndroidManifest.xml여기에 기록된 바와 같이

<manifest 
    ... >
<uses-sdk tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
    ...
</manifest>

시스템은 AndroidManifest.xml에 선언된 sdkVersion을 자동으로 무시합니다.

이것으로 당신의 문제가 해결되길 바랍니다.

<manifest xmlns:tools="http://schemas.android.com/tools" ... >
  <uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />

저는 여러 min sdk 버전 간의 충돌 문제에 직면했습니다.그래서 이 해결책은 저에게 효과가 있었습니다.

방금 안드로이드만 변경했습니다. minSdkVersion="16"이고 완벽하게 작동합니다.\MyApp\platforms\안드로이드\CordovaLib\Android Manifest.xml

manifest.xml에서 이 코드 사용

<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="17"
tools:overrideLibrary="x"/>

방금 바꿨습니다.minSdkVersion="7"C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml그리고 그것은 성공하였다.

단계:

  1. 경로:C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
  2. 값:<uses-sdk android:minSdkVersion="7"/>
  3. 새 cmd 프롬프트에서 명령 실행:

    C:\MyApp>phonegap build android --debug [phonegap] executing 'cordova build android --debug'... [phonegap] completed 'cordova build android --debug'

모든 라이브러리에 대한 솔루션으로 SDK 버전을 일치시켜 예기치 않은 이벤트가 발생하지 않도록 할 수 있습니다.

subprojects { 
afterEvaluate {project -> 
    if (project.hasProperty("android")) { 
        android { 
            compileSdkVersion 28 
            buildToolsVersion '28.0.3'
            defaultConfig {
                //It's kinda tricking android studio but anyway it works
                minSdkVersion 17
            }
        } 
    } 
    if (project.hasProperty("dependencies")) {
        dependencies {
            implementation 'com.android.support:support-core-utils:28.0.0'
            implementation 'com.android.support:appcompat-v7:28.0.0'
            implementation 'com.google.android.gms:play-services-base:16.1.0'
        }
    }
} 
}

프로젝트에서 사용하지 않는 라이브러리(gms)를 제거하고 sdk 버전이 앱 수준 Gradle 데이터와 일치하는지 확인합니다.

그것은 나에게 효과가 있습니다.

<uses-sdk 
    android:minSdkVersion="16"
    android:maxSdkVersion="17"
    tools:overrideLibrary="pl.droidsonroids.gif" />
      


   

라이브러리의 요구에 따라minSdkVersion 17그러면 당신은 같은 것을 바꿀 수 있습니다.build.gradle(모듈:Application) 파일:

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

그리고 그 건물 이후에 프로젝트는 어떠한 빌드 오류도 던지지 않아야 합니다.

언급URL : https://stackoverflow.com/questions/27095077/how-do-i-use-toolsoverridelibrary-in-a-build-gradle-file

반응형