সরঞ্জামগুলি: অ্যান্ড্রয়েড ম্যানিফেস্টে প্রতিস্থাপন না করে প্রতিস্থাপন করুন


147

আমি বিভিন্ন লাইব্রেরি নির্ভরতা সহ গ্রেডেল প্রকল্পটি ব্যবহার করছি এবং নতুন ম্যানিফেস্ট মার্জারটি ব্যবহার করছি। আমার <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

1
মুছে ফেলা এবং পুনরায় পোস্ট করা প্রশ্নগুলি সম্পর্কে মেটাতে এই পোস্টটি দেখুন: মেটা.স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 265233/… । এটি একবার করে বিশেষত আপনার ক্ষতি করবে না তবে এটির নিয়মিত অনুশীলন করা ভাল হবে না।
স্কট বার্তা

1
আমার ধারণা <application>প্রকল্পটিতে বার বার ট্যাগ রয়েছে। প্লিজ নিশ্চিত করে যে সেখানে কেবল একটি আছে <application>
প্যান্থার

একটি প্রকল্পে অনেকগুলি <অ্যাপ্লিকেশন> ট্যাগ থাকতে পারে বিশেষত যদি আপনি কোনও সংখ্যক গ্রন্থাগার সাবমডিউল ব্যবহার করেন।
কৃষক

আমার কাছে এমন উদাহরণ রয়েছে যেখানে এটি ঠিক কাজ করে। আপনি Android বিল্ড সরঞ্জামগুলির কোন সংস্করণ ব্যবহার করছেন?
জি। ব্লেক মাইক

আপনি কি ম্যানিফেস্ট ট্যাগে xmlns: সরঞ্জামগুলি = " স্কিমাস.অ্যান্ড্রয়েড / টলস " যুক্ত করেছেন? সরঞ্জামস.অ্যান্ড্রয়েড.com
tech-

উত্তর:


233

আপনার প্রকাশিত শিরোনামটি এভাবে ঘোষণা করুন

<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
আপনি কীভাবে অ্যান্ড্রয়েড পরিচালনা করবেন: মেটা-ডেটা সহ নাম? অ্যান্ড্রয়েড: নাম = "com.orm.SugarApp"> <মেটা ডেটা অ্যান্ড্রয়েড: নাম = "DATABASE" অ্যান্ড্রয়েড: মান = "sv_logs.db" /> <মেটা ডেটা অ্যান্ড্রয়েড: নাম = "সংস্করণ" অ্যান্ড্রয়েড: মান = " 3 "/> <মেটা-ডেটা অ্যান্ড্রয়েড: নাম =" QUERY_LOG "অ্যান্ড্রয়েড: মান =" সত্য "/> <মেটা-ডেটা অ্যান্ড্রয়েড: নাম =" DOMAIN_PACKAGE_NAME "অ্যান্ড্রয়েড: মান =" com.example.app "/>
অ্যালান

@ অ্যালান কেবলমাত্র tools:node="replace": <meta-data tools:node="replace" android:name="QUERY_LOG" android:value="true" />ইত্যাদি সহ পুরো মেটা-ডেটা ট্যাগটি প্রতিস্থাপন করুন
ব্ল্যাকলাইট

25
আমি বিভ্রান্ত তিনি কি তার প্রশ্নে ঠিক তাই করছেন না?
জেসন রবিনসন

আমি tools:replaceআমার অ্যাপ্লিকেশন ট্যাগে যুক্ত করেছি যা এটি প্রতিস্থাপন করা উচিত এবং উত্সটি প্রতিস্থাপন করা উচিত নয়। সুতরাং আমার অ্যাপ্লিকেশনটি আমার লাইব্রেরিতে যা সংজ্ঞায়িত হয়েছে তা প্রতিস্থাপন করে। আপনি "কি প্রতিস্থাপন করা যায়" এর পরিবর্তে "কী প্রতিস্থাপন করা উচিত" বলুন। আমি আশা করি যে প্রশ্নগুলি পরিষ্কার করা।
ওয়ারেনফেইথ

1
যদি প্রতিস্থাপনের গুণাবলী ম্যানিফেস্ট ট্যাগে থাকে তবে tools:replace="android:versionCode, android:versionName"অবশ্যই ট্যাগের মধ্যে থাকা আবশ্যক <manifest >
ইভান চৌউ

42

আমি একই সমস্যা স্থির। আমার জন্য সমাধান:

  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"/>

1
এর জন্য ধন্যবাদ, এটি <manifest>আন্ডার এর পরিবর্তে সরাসরি যুক্ত করা <application>কেবলমাত্র আমার সমস্যাটি স্থির করেছিল।
এ। সোকল

1
আমি আমার পক্ষে কাজ করি নি, আমার সরঞ্জামগুলি রাখা উচিত: প্রতিস্থাপন = "অ্যান্ড্রয়েড: অনুমতি ব্যাকআপ, অ্যান্ড্রয়েড: লেবেল" বা কেবলমাত্র সরঞ্জামগুলি: প্রতিস্থাপন = "অনুমতিব্যাকআপ, লেবেল"।
jmarkstar

1
আপনি কি নিশ্চিত যে এটি কাজ করছে? কারণ আমার জন্য, দেখে মনে হচ্ছে আপনি কোনও ভুল জায়গায় অনুমতিব্যাকআপ লিখছেন, এবং মার্জ হওয়ার পরে, লাইব্রেরি তার ম্যানিফেস্টে যা উল্লেখ করেছে, তা বিরাজ করছে। এটিকে শীর্ষে নিয়ে যাওয়ার পরে আপনার কোনও বিরোধ নেই, কারণ আপনি কেবল এটি ভুল করছেন ( বিকাশকারী andঅ্যান্ড্রয়েড / গাইড / টপিক্স / ম্যানিফেস্ট /)) মঞ্জুরি দিন অ্যাপ্লিকেশন উপাদানটির অনুমতি দিন।
রিইনহার্ড

2
[... উপরে থেকে অবিরত] এই কাজ করে না। আপনি ভুল জায়গায় অনুমতিব্যাকআপ লিখছেন, এবং এটি যে মার্জ হওয়ার পরে, লাইব্রেরি তার ম্যানিফেস্টে নির্দিষ্ট করে, তা বিরাজ করে। এটিকে শীর্ষে নিয়ে যাওয়ার পরে আপনার কোনও বিরোধ নেই, কারণ আপনি কেবল এটি ভুল করছেন ( বিকাশকারী andঅ্যান্ড্রয়েড / গাইড / টপিক্স / ম্যানিফেস্ট /)) মঞ্জুরি দিন অ্যাপ্লিকেশন উপাদানটির অনুমতি দিন। আমি এটি একটি
এপিএকে ডিকম্পল

38

আপনার গ্রেড ফাইলটিতে আপনার নির্ভরতা পুনরায় অর্ডার করার চেষ্টা করুন। আমাকে আপত্তিজনক লাইব্রেরিটি তালিকার নীচ থেকে শীর্ষে নিয়ে যেতে হয়েছিল এবং তারপরে এটি কার্যকর হয়েছিল।


দয়া করে আমাকে একটি জিনিস বলুন: প্রতিস্থাপন করা উচিত আমি কি আমার প্রকল্পের ম্যানিফেস্টের ভিতরে এই অ্যাপ্লিকেশন ট্যাগটি বা আমার লাইব্রেরির অ্যাপ্লিকেশন ট্যাগের ভিতরে যুক্ত করব দয়া করে আমাকে বলুন এটি আমার পক্ষে সত্যিই সহায়ক হবে ??
সুধাংশু গৌড়

@ সুধনশুগৌড় আপনার এটিকে আপনার প্রকল্পের অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলটিতে যুক্ত করতে হবে।
কাইল লিউ

74
এটা কাজ করেছে. তবে এই জাতীয় সমাধানগুলি মানবতার কাছ থেকে বিশ্বাস নিতে পারে।
বিনয় পাতিল

8
এই জাতীয় # অ্যান্ড্রয়েড গেটচগুলি অ্যান্ড্রয়েডের জন্য বিকাশ ঘটায় বেশ বিরক্তিকর
টেলর হলিডে

1
আপনার যদি প্লে এবং নন প্লেয়ের মতো একাধিক পণ্যের স্বাদ থাকে এবং নির্ভরতা হয় "প্লে-রিলিজ কমপাইল ______", কেবলমাত্র বিবৃতিটিকে শীর্ষে স্থানান্তর করা কাজ নাও করতে পারে, আপনাকে বিবৃতিটি "সংকলন ______" এ পরিবর্তন করতে হবে এবং তারপরে এটিকে সরিয়ে নিতে হবে শীর্ষ। এটা কাজ করা উচিত।
সোহম

33

আমি কেবল tools:replace=...ওপি দ্বারা বর্ণিত একই আচরণটি অনুভব করেছি ।

দেখা গেল যে tools:replaceম্যানিফেস্টটি সংযুক্তির দ্বারা উপেক্ষা করার মূল কারণটি এখানে বর্ণিত একটি বাগ । এটির মূলত অর্থ হ'ল যদি আপনার প্রকল্পে কোনও লাইব্রেরি থাকে যা একটি <application ...>নোডের সাথে একটি ম্যানিফেস্টযুক্ত একটি tools:ignore=...বৈশিষ্ট্যযুক্ত থাকে তবে এটি ঘটতে পারে যে tools:replace=...আপনার মূল মডিউলটির ম্যানিফেস্টে থাকা বৈশিষ্ট্যটি উপেক্ষা করা হবে।

এখানে চতুর পয়েন্ট যে এটা করতে ঘটতে, কিন্তু নেই। আমার ক্ষেত্রে আমার দুটি লাইব্রেরি ছিল, tools:ignore=...বৈশিষ্ট্যের সাথে একটি লাইব্রেরি ছিল , গ্রন্থাগার বি এর সাথে সম্পর্কিত ম্যানিফেস্টগুলিতে প্রতিস্থাপন করতে হবে এবং tools:replace=...মূল মডিউলটির ম্যানিফেস্টে বৈশিষ্ট্যটি সহ। বি এর ম্যানিফেস্টটি যদি এ ম্যানিফেস্টের আগে ম্যানিফেস্টকে একীভূত করা হত প্রত্যাশার মতো সবকিছুই কাজ করে। বিপরীত মার্জ ক্রমে ত্রুটি উপস্থিত হয়েছিল।

এই সংশ্লেষগুলি যে ক্রমে ঘটে সেটিকে কিছুটা এলোমেলো মনে হচ্ছে। আমার ক্ষেত্রে এর নির্ভরতা বিভাগে ক্রমটি পরিবর্তন করার build.gradleকোনও প্রভাব ছিল না তবে গন্ধটির নাম পরিবর্তন করে তা করেছে।

সুতরাং, একমাত্র নির্ভরযোগ্য কাজটি মনে হচ্ছে সমস্যাটি সৃষ্টি করে এমন লাইব্রেরিটি আনপ্যাক করে, tools:ignore=...ট্যাগটি সরিয়ে ফেলুন (যা কোনও সমস্যা হওয়া উচিত নয় কারণ এটি কেবলমাত্র লিঙ্কের ইঙ্গিত হিসাবে) এবং লাইব্রেরিটি আবার প্যাক করুন।

এবং বাগটি স্থির করার জন্য, কারণ হিসাবে ভোট দিন।


আমার ক্ষেত্রে আমাকে সরঞ্জামগুলি সরিয়ে ফেলতে হয়েছিল: আমার প্রকল্প থেকে উপেক্ষা করুন, কোনও লাইব্রেরির থেকে নয়
mohax

3
এটিও আমার ইস্যু ছিল। সরঞ্জামগুলি সরানো হয়েছে: <manifest>নোড থেকে নোডের দিকে অগ্রাহ্য করুন <application>এবং এটি কাজ করেছিল।
জ্যাকব তাবাক

বাজেল ভি ২.০.০ এর সাথে সবেমাত্র একই সমস্যার মুখোমুখি হয়ে এখানে একটি বাগ দায়ের করেছেন গিথুব / বাজেলবিল্ড / বাজেল/issues/ 10543
নিক

18

আমার জন্য ফাইনাল ওয়ার্কিং সলিউশন (নমুনা কোডের টেজগুলি হাইলাইট করেছেন):

  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"**
        >

13

আমার জন্য অনুপস্থিত অংশটি ছিল:

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">

আপনি কীভাবে আপনার কোডটি <ম্যানিফেস্ট ...> এ ঠিক তেমনভাবে ভাগ করতে পারেন?
পার্টিজান

8

আপনি আপনার ম্যানিফেস্ট অ্যাপ্লিকেশন ট্যাগের মধ্যে এটি প্রতিস্থাপন করতে পারেন:

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

এবং আপনার জন্য কাজ করবে।


এটি কোনও কারণে কাজ করে না .... আমি tools:replace="android:label"আবেদনে যুক্ত করার চেষ্টা করি কিন্তু এটি কার্যকর হয় না
iKK

4

ফিক্সড এটি হুবহু ত্রুটি ছিল, কেবল এই সরঞ্জামগুলি যুক্ত করুন: প্রতিস্থাপন = "অ্যান্ড্রয়েড: আইকন, অ্যান্ড্রয়েড: থিম"

আপনার ম্যানিফেস্টে আপনার অ্যাপ্লিকেশন ট্যাগে, এটি ঠিক কাজ করে,


এটা স্বাভাবিক জিনিস। বিষয়গুলি বিষয়গুলি এমন কি সাধারণ আচরণ নয় যখন এমনকি সরঞ্জামগুলি: প্রতিস্থাপন যুক্ত করা হয়।
ডেভিড

4

আপনি আপনার ম্যানিফেস্ট applicationট্যাগে এটি প্রতিস্থাপন করতে পারেন :

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

এবং আপনার জন্য কাজ করবে।

ব্যাখ্যা

আপনার gradleম্যানিফেস্টের অ্যাপ্লিকেশন ট্যাগে এই লেবেলগুলি রয়েছে এমন আপনার ফাইলে যেমন নির্ভরতা / গ্রন্থাগার ব্যবহার করা এই সমস্যা তৈরি করতে পারে এবং সেগুলি আপনার জায়গায় প্রতিস্থাপন করা Manifestসমাধান solution


1

নিম্নলিখিত হ্যাক কাজ করে:

  1. xmlns:tools="http://schemas.android.com/tools"ম্যানিফেস্ট ট্যাগে লাইন যুক্ত করুন
  2. tools:replace="android:icon,android:theme,android:allowBackup,label" অ্যাপ্লিকেশন ট্যাগ যোগ করুন

1

আমার সমস্যাটি বেস মডিউল, অ্যাপ মডিউল এবং বৈশিষ্ট্য মডিউল সহ একাধিক মডিউল প্রকল্প। প্রতিটি মডিউলের নিজস্ব মাইন্ডোয়েস্ট রয়েছে এবং আমি ডিবাগ এবং মূলটির জন্য বিল্ড বৈকল্পিক প্রয়োগ করেছি। সুতরাং আমাদের অবশ্যই নিশ্চিত করতে হবে যে "অ্যান্ড্রয়েড: নাম" সবেমাত্র ম্যানিফেস্টে ডিবাগ এবং কেবলমাত্র প্রধান হিসাবে ঘোষণা করা হয়েছে এবং শিশু মডিউলটিতে ম্যানিফেস্টের কোনওটিতে সেট করবেন না। প্রাক্তন: মূলত প্রকাশিত:

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

ডিবাগে প্রকাশিত:

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

এই জাতীয় ম্যানিফেস্ট ফাইলগুলিতে "অ্যান্ড্রয়েড: নাম" সেট করবেন না:

<application android:name=".App">

এই জাতীয় বৈশিষ্ট্য মডিউলে কেবল সংজ্ঞা দিন এবং এটি সূক্ষ্মভাবে মার্জ হবে d

<application> 

0

আমি যে প্রকল্পটি আমদানি করছি তাতে আমি একই ধরণের ত্রুটি পেয়েছি:

একই কী সহ একাধিক এন্ট্রি: অ্যান্ড্রয়েড: আইকন = প্রতিস্থাপন এবং সরঞ্জামগুলি: আইকন = প্রতিস্থাপন

অ্যাপ্লিকেশন ট্যাগের মধ্যে নীচের লাইনটি পরিবর্তন করার পরে স্থির করা হয়েছে:

tools:replace="icon, label, theme"

প্রতি

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

0

আমিও এই সমস্যার মধ্য দিয়ে গিয়েছিলাম এবং এটি পরিবর্তন করেছি:

<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">

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.