sourcecode

도구: Android 매니페스트에서 교체하지 않음

copyscript 2023. 10. 6. 21:54
반응형

도구: Android 매니페스트에서 교체하지 않음

저는 도서관 의존성이 많은 그라들 프로젝트를 사용하고 있고 새로운 매니페스트 합병을 사용하고 있습니다.<application />태그를 지정하면 다음과 같이 설정됩니다.

<application tools:replace="android:icon, android:label, android:theme, android:name"
    android:name="com.example.myapp.MyApplcation"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/application_name"
    android:logo="@drawable/logo_ab"
    android:theme="@style/AppTheme"
    >
....
</application>

그러나 저는 오류를 받고 있습니다.

/android/MyApp/app/src/main/AndroidManifest.xml:29:9        Error:
Attribute application@icon value=(@drawable/ic_launcher) from AndroidManifest.xml:29:9
is also present at {Library Name} value=(@drawable/app_icon)
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:26:5 to override

/android/MyApp/app/src/main/AndroidManifest.xml:30:9 Error:
Attribute application@label value=(@string/application_name) from AndroidManifest.xml:30:9
is also present at {Library Name} value=(@string/app_name)
Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:26:5 to override

/android/MyApp/app/src/main/AndroidManifest.xml:27:9 Error:
Attribute application@name value=(com.example.myapp.MyApplication) from AndroidManifest.xml:27:9
is also present at {Another Library}

Suggestion: add 'tools:replace="android:name"' to <application> element at AndroidManifest.xml:26:5 to override

/android/MyApp/app/src/main/AndroidManifest.xml:32:9 Error:
Attribute application@theme value=(@style/AppTheme) from AndroidManifest.xml:32:9
is also present at {Library Name} value=(@style/AppTheme)
Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:26:5 to override

매니페스트 헤더를 이렇게 선언합니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yourpackage"
    xmlns:tools="http://schemas.android.com/tools">

그런 다음 응용 프로그램 태그에 다음 속성을 추가할 수 있습니다.

<application
    tools:replace="icon, label" ../>

예를 들어 아이콘과 라벨을 교체해야 합니다.

저도 같은 문제를 고쳤습니다.솔루션:

  1. xmlns:tools="http://schemas.android.com/tools"을 긋다
  2. 더하다tools:replace=..
  3. 움직이다android:label=...

예:

 <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
              tools:replace="allowBackup, label"
              android:allowBackup="false"
              android:label="@string/all_app_name"/>

그라들 파일에서 종속성의 순서를 바꾸십시오.저는 불쾌감을 주는 도서관을 목록의 맨 아래에서 맨 위로 옮겨야 했고, 그리고 나서 효과가 있었습니다.

했습니다의 했습니다.tools:replace=...OP가 설명한 바와 같이

의 근본 은...tools:replace매니페스트 합병에 의해 무시되는 것은 여기에 설명된 버그입니다.이는 기본적으로 프로젝트에 매니페스트가 포함된 라이브러리가 있는 경우<application ...>tools:ignore=...성,다가 수 .tools:replace=...주 모듈의 매니페스트에 있는 속성은 무시됩니다.

여기서 까다로운 점은 그것이 일어날 수는 있지만, 그럴 필요는 없다는 것입니다.제 경우에는 도서관 A와 함께 2개의 도서관을 가지고 있었습니다.tools:ignore=... 각 및리 B.tools:replace=... module의 에 만약 A의 매니페스트 이전에 B의 매니페스트가 메인 매니페스트에 병합된다면 모든 것이 예상대로 작동했습니다.병합 순서와 반대로 오류가 발생했습니다.

이러한 합병이 일어나는 순서는 다소 무작위적인 것으로 보입니다.합니다.build.gradle맛의 이름을 바꾸는 것 외에는 효과가 없었습니다.

할 수 있는 한 해결책은 , 입니다, 입니다.tools:ignore=...(lint 전용 힌트이므로 문제가 없을 것입니다) 태그를 지정하고 라이브러리를 다시 포장합니다.

그리고 버그를 고치도록 투표해주세요, 당연하죠.

최종 작업 솔루션(샘플 코드의 단계 강조 표시):

  1. xmlns:tools을 긋다
  2. 더하다tools:replace

예:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pagination.yoga.com.tamiltv"
    **xmlns:tools="http://schemas.android.com/tools"**
    >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        **tools:replace="android:icon,android:theme"**
        >

제게 사라진 작품은 이것이었습니다.

xmlns:tools="http://schemas.android.com/tools"

예를 들어 다음과 같습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
    package="com.your.appid">

Manifest 응용프로그램 태그에서 다음 내용을 대체할 수 있습니다.

<application
    tools:replace="android:icon, android:label, android:theme, android:name,android:allowBackup"
android:allowBackup="false"...>

당신을 위해 일할 겁니다

다음과 같은 해킹이 가능합니다.

  1. 을 더하다xmlns:tools="http://schemas.android.com/tools"매니페스트 태그에 줄을 긋다
  2. 더하다tools:replace="android:icon,android:theme,android:allowBackup,label"지원서 태그에
 tools:replace="android:supportsRtl,android:allowBackup,icon,label">

Fixed IT에 정확한 오류가 있었습니다. 다음 도구만 추가하십시오.replace="android:아이콘, android:theme"

매니페스트에 있는 응용 프로그램 태그에 입력하면 잘 작동합니다.

매니페스트에 있는 것들을 대체할 수 있습니다.application태그:

<application
    ...
    tools:replace="android:label, android:icon, android:theme"/>

당신을 위해 일할 겁니다

설명.

이러한 종속성/라이브러리를 사용하여gradle매니페스트의 응용 프로그램 태그에 이러한 레이블이 있는 파일은 이 문제를 발생시키고 당신의 파일에서 대체할 수 있습니다.Manifest해결책입니다.

저의 문제는 기본 모듈, 앱 모듈, 피처 모듈로 멀티 모듈 프로젝트를 진행하는 것입니다.모듈마다 안드로이드 매니페스트가 있고, 디버그와 메인을 위해 빌드 변형을 구현했습니다.따라서 "android:name"이 방금 Manifest of debug 및 main에서만 선언되었는지 확인하고 Manifest in child 모듈에서 설정하지 않아야 합니다.Ex: 메인 매니페스트:

 <application
        android:name=".App"/>

디버그에서 매니페스트:

<application
        tools:replace="android:name"
        android:name=".DebugApp"
        />

다음과 같은 다른 매니페스트 파일에서 "android:name"을 설정하지 마십시오.

<application android:name=".App">

이와 같이 피쳐 모듈에 정의만 하면 잘 병합됩니다.

<application> 

저도 이 문제를 겪으면서 다음과 같이 변경했습니다.

<application  android:debuggable="true" android:icon="@drawable/app_icon" android:label="@string/app_name" android:supportsRtl="true" android:allowBackup="false" android:fullBackupOnly="false" android:theme="@style/UnityThemeSelector">

로.

 <application tools:replace="android:allowBackup" android:debuggable="true" android:icon="@drawable/app_icon" android:label="@string/app_name" android:supportsRtl="true" android:allowBackup="false" android:fullBackupOnly="false" android:theme="@style/UnityThemeSelector">

floter를 위한 새로운 AndroidManifest.xml 입니다.

<application
    android:label="Your app Name"
    tools:replace="android:label"
    android:name="io.flutter.app.FlutterApplication"
    android:networkSecurityConfig="@xml/network_security_config"
    android:usesCleartextTraffic="true"
    android:icon="@mipmap/ic_launcher">

<어플리케이션>의 첫줄에 안드로이드:label을 추가하도록 해주세요. 위의 예시처럼 정렬되지 않으면 이 패키지 flotter_app_name을 사용하면 오류가 발생하기 때문입니다.

가져오던 프로젝트에서 비슷한 오류가 발생했습니다.

동일한 키를 가진 여러 항목: Android:icon=REFACE 및 도구:icon=REFACE

응용프로그램 태그 내에서 아래 줄을 변경한 후 수정:

tools:replace="icon, label, theme"

로.

tools:replace="android:icon, android:label, android:theme"

언급URL : https://stackoverflow.com/questions/25981156/tools-replace-not-replacing-in-android-manifest

반응형