android - আর সমাধান করা যাবে না-অ্যান্ড্রয়েড ত্রুটি




eclipse compiler-errors (20)

আমার প্রকল্পের শুরুতে r.java.at অন্তর্ভুক্ত আছে, R.layout.main ভাল কাজ করে। কিন্তু, কিছু কোড যোগ করার পরে এটি কাজ করে না, এবং ত্রুটি R.layout.main সমাধান করা যাবে না। সমস্যা কি ?

আপনার আমদানি তাকান। সম্ভাবনা যে লাইন:

import android.R;

আমি সেখানে থাকব. যদি এমন হয়, তবে এটি সরান, যাতে আপনার প্রকল্পটি ডিফল্ট Android রিসোর্সের ক্লাসের সাথে R সমাধান করবে না, তবে আপনার / res / ফোল্ডার থেকে স্বয়ংক্রিয়ভাবে জেনারেট করা হবে।

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

উইজার্ড এই কোড তৈরি করেছেন:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

কিন্তু Eclipse আমাকে ত্রুটি দেয়

আর সমাধান করা যাবে না

লাইন

setContentView(R.layout.main);

কেন?

PS: আমার একটি এক্সএমএল ফাইল আছে যা main.xml নামে res/layout/ অধীনে।


R একটি স্বয়ংক্রিয়ভাবে উত্পন্ন বর্গ যা আপনার সংস্থানগুলি সনাক্ত করতে ব্যবহৃত স্টোনগুলি ধারণ করে। যদি আপনার কাছে R.java ফাইল না থাকে (এটি 1.5 SDK সহ ইক্লিপসে জেন / eu.mauriziopz.gps / R.java হবে) আমি আপনার প্রকল্পটি বন্ধ করার এবং পুনরায় খুলার সুপারিশ করবো বা প্রজেক্ট> সব তৈরি করব (এবং জোসেফ দ্বারা সুপারিশ করার সময় "স্বয়ংক্রিয়ভাবে তৈরি করুন" নির্বাচন করুন)। যদি এটি কোনও নতুন প্রকল্প তৈরি করার চেয়ে কাজ না করে তবে সমস্যাটিকে আবার এখানে পোস্টের চেয়ে পুনঃসূচনা করা হয় এবং আমরা আরও বিস্তারিতভাবে যাব।


আপনি SDK সরঞ্জাম আপডেট / ইনস্টল করতে হতে পারে। আবার অ্যান্ড্রয়েড এসডিকে ম্যানেজার পুনরায় চালু করুন এবং একটি নতুন আইটেম ইনস্টল করুন: Android SDK Build-tools.one এক মুছে ফেলার মাধ্যমে, কোনটি আপনার জন্য কাজ করে তা ঠিক করুন।


আপনি অ্যান্ড্রয়েড বিল্ড টুল ফর্ম sdk ম্যানেজার ইনস্টল করা নিশ্চিত করুন

প্রকল্প ডান ক্লিক বৈশিষ্ট্য-> জাভা BuildPath লাইব্রেরি নির্বাচন করুন এবং এই step অনুসরণ করুন android-support.jar যোগ করুন।

প্রজেক্ট-> প্রোপার্টি-> জাভা বিল্ড পাথ নির্বাচন করুন এবং রপ্তানি ট্যাব থেকে যান। অ্যান্ড্রয়েড-সাপোর্ট .jar লাইব্রেরি সেট আপ এবং তালিকার শীর্ষে এটি আপ। এবং পরিষ্কার এবং পুনর্নির্মাণ .. এটি বেশিরভাগ ক্ষেত্রে কাজ করে


আমার অ্যান্ড্রয়েড 8 এর উদাহরণ ছিল এবং অ্যান্ড্রয়েড 7 এসডিকে ব্যবহার করার চেষ্টা করছিলাম। যখন আমি প্রকল্পটি বন্ধ করেছিলাম এবং অ্যাপ্লিকেশন ফোল্ডারটি পুনরায় খুললাম এবং অ্যান্ড্রয়েড 8 এসডিকে ব্যবহার করতে বেছে নিলাম, তখন এটি R ফাইলটি খুঁজে পেতে সক্ষম হয়েছিল। আশাকরি এটা সাহায্য করবে.


আমার ক্ষেত্রে, আমার AndroidManifest.xml এ একটি ত্রুটি ছিল। অন্যরা বলেছে যে আপনার এক্সএমএল ফাইল ত্রুটি থেকে মুক্ত হতে হবে, কিন্তু আমি কেবল res / ফোল্ডারে দেখছিলাম। খুঁজে বের করুন এবং যতটা সম্ভব ভুল ত্রুটি এবং সমস্যা নিজেই সমাধান করতে পারে।


আমি লক্ষ লক্ষ বার এই সমস্যাটি অনুভব করেছি এবং বুঝতে পেরেছি যে এটির কারণ কী ছিল: আমি নামের মধ্যে বড় হাতের অক্ষর সহ একটি XML ফাইল তৈরি করেছি। আপনার সমস্ত এক্সএমএল ফাইলের নাম /res অবশ্যই [a-z0-9\\._]


এই ত্রুটিটি আপনার প্যাকেজের রুট নেমস্পেসের জন্য পৃথক একটি নেমস্পেসে একটি কার্যকলাপ যুক্ত করেও হতে পারে।

উদাহরণস্বরূপ, যদি com.example.myapp আপনার প্যাকেজের মূল নামস্থান হয় তবে আপনি com.example.myapp.activities নামস্থানতে একটি ক্রিয়াকলাপ যুক্ত করতে পারেন।

এই "আর সমাধান করা যাবে না" ত্রুটি উত্পাদন করবে।

আমদানিটি ঠিক করার জন্য আপনার কার্যকলাপে ডিফল্ট নামস্থানতে R টি হওয়া উচিত:

import com.example.myapp.R;

এক্সএমএল ফাইল নাম পরীক্ষা করে দেখুন। তারা ছোট হাতের মধ্যে সব নিশ্চিত হন।

এছাড়াও যে কোনও ইমেজ সংস্থার নামগুলিও লোয়ার কেসে রয়েছে তা নিশ্চিত করুন। আমার জেপিজি ফাইলের নামে আমার মূলধন চিঠি ছিল, এবং এটি আমার প্রোজেক্ট জুড়ে R সমস্যাযুক্ত ভুল ত্রুটি সৃষ্টি করেছিল।


এটা AndroidManifest.xml চেক করার মূল্য। বৈশিষ্ট্য package সঠিক মান আছে।

এটাই:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

আপনি যে পরিবর্তন পরে, R.java পুনরায় উত্পন্ন করা হবে।


কি বলেন ঠিক ছিল

R একটি স্বয়ংক্রিয়ভাবে উত্পন্ন বর্গ যা আপনার> সংস্থানগুলি সনাক্ত করতে ব্যবহৃত স্টোনগুলি ধারণ করে। যদি আপনার কাছে R.java ফাইল না থাকে (এটি জেনুইন / eu.mauriziopz.gps / R.java> 1.5 SDK সহ অ্যাক্সিপ্প্সে হবে) আমি আপনার প্রকল্পটি বন্ধ এবং পুনরায় খুলতে সুপারিশ করবো বা প্রকল্পে যাব> প্রকল্প> সব তৈরি করব (এবং জোসেফ দ্বারা সুপারিশ করার সময় "স্বয়ংক্রিয়ভাবে তৈরি করুন" নির্বাচন করুন)। যদি এটি একটি নতুন প্রকল্প তৈরি করার চেয়ে কাজ না করে তবে সমস্যাটি আবার পোস্ট করুন> এখানে আবার পোস্ট করুন এবং আমরা আরো বিস্তারিতভাবে যাব।

কিন্তু আমি আবিষ্কার করেছি যে প্রথম সমস্যাটি হ'ল আরেকটি সমস্যা ছিল। এসডিকে ডিরেক্টরিতে সরঞ্জামগুলির অনুমতিগুলি কার্যকর করার অনুমতি নেই, তাই এটি R.java জন্য বিদ্যমান ছিল না, তাই এটি R.java ফাইলটি তৈরি করে R.java

তাই অনুমতি পরিবর্তন এবং "স্বয়ংক্রিয়ভাবে তৈরি করুন" নির্বাচন সমস্যা সমাধান।


তবে আরেকটি কারণে R.java নাও হতে পারে যদি আপনার কাছে res / drawable-hdpi , res / drawable-mdpi , অথবা res / drawable-ldpi মত ডিরেক্টরি রয়েছে

1.6+ এই ডিরেক্টরিগুলির সাথে ঠিক আছে বলে মনে হচ্ছে, কিন্তু 1.5 তাদের চায় না। যখন আমি সেই ডিরেক্টরিগুলি মুছে R.java , তখন R.java আমার জন্য আবারও R.java শুরু করে।


পাশাপাশি এই সমস্যাটি নির্ণয় করার পরে, আমি Android নথিটিতে এই নোটটি খুঁজে পেয়েছি:

http://source.android.com/source/using-eclipse.html

* দ্রষ্টব্য: কখনও কখনও Eclipse আপনার ফাইলগুলির শীর্ষে একটি "আমদানি android.R" বিবৃতি যোগ করতে পছন্দ করে যা সম্পদগুলি ব্যবহার করে, বিশেষত যখন আপনি Eclipse কে সাজানোর বা অন্যভাবে আমদানি পরিচালনা করতে বলে। এই আপনার বিরতি বিরতি হতে হবে। এই ভুল আমদানি বিবৃতিগুলির জন্য দেখুন এবং তাদের মুছে দিন। *

অ্যান্ড্রয়েড নমুনা টিউটোরিয়ালগুলি চলাকালে, আমি "ইমপোর্ট সংগঠিত" করতে Ctrl + Shift + O কমান্ডটি ব্যবহার করব এবং কোনও অনুপস্থিত আমদানি বিবৃতি তৈরি করব। কখনও কখনও এটি ভুল আমদানি বিবৃতি তৈরি করবে যা R.java ক্লাসটি লুকাবে যা আপনার তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে তৈরি হয়।


পূর্ববর্তী উত্তরের দুর্দান্ত পরামর্শগুলি সহ, আপনার Android লক্ষ্য সেট করা আছে তা নিশ্চিত করুন:

  1. আপনার প্রকল্পের উপর ডান ক্লিক করুন
  2. বৈশিষ্ট্য নির্বাচন করুন
  3. বাম মেনু মধ্যে অ্যান্ড্রয়েড চয়ন করুন
  4. উপযুক্ত প্রকল্প বিল্ড টার্গেটের পাশে একটি বাক্স টিক দিন।
  5. আবেদন এবং ঠিক আছে ক্লিক করুন

সম্পাদনা: একটি বছর পরে আমি অন্য কারণ খুঁজে পাওয়া যায় নি। আমার .png চিত্রের মতো একই নামের সাথে আমার ড্র্যাগযোগ্য ফোল্ডারের একটি .jpg চিত্র ছিল। আমার কোডে এই ছবিটির উল্লেখ করা অবশ্যই প্রোগ্রামটিকে বিভ্রান্ত করেছে এবং এটি "R সমাধান করা যাবে না" ত্রুটিটি দিয়েছে।


প্রতিবার যখন আমার কোনও সমস্যা হয় না, আর এটিও অদৃশ্য হয়ে যায়, তখন এক্সএমএল লেআউট ফাইলটিতে কিছু সমস্যা দেখা দেয় যা অ্যাপ্লিকেশনটি তৈরি করা থেকে বিরত থাকে।


প্রথমে চেক করুন কোন XML লেআউটে কোনও ত্রুটি আছে কিনা তা প্রথমে সমাধান করুন।

অন্যথায় প্রকল্প থেকে জিনিট নির্ভরতা অপসারণ এবং প্রকল্পের পুনর্নির্মাণ।


শুধু অ্যান্ড্রয়েড শীর্ষ মেনু তালিকা যান। বিল্ড মেনুতে ক্লিক করুন, বিল্ডের অধীনে পুনঃনির্মাণ প্রকল্পে ক্লিক করুন।


সব ফাইল বন্ধ, পরিষ্কার প্রকল্প, Eclipse পুনরায় আরম্ভ করুন।


R.java একটি ফাইল যা আপনার অ্যাপ্লিকেশন নির্মাণের সময় Android Eclipse প্লাগইনগুলি তৈরি করে। R.java "জেনারেল" ডিরেক্টরি অধীনে তৈরি করা হয়। এই ফাইলটি "res" ডিরেক্টরির মধ্যে তথ্য থেকে উত্পন্ন হয়। আপনি যদি Eclipse মেনুতে "প্রকল্প" -> "পরিচ্ছন্ন ..." নির্বাচন করেন তবে এটি সরানো হবে এবং তারপরে R.java ফাইলটি পুনরায় তৈরি করবে।

সমস্যাটি "R সমাধান করা যাবে না" যখন আপনি আপনার প্যাকেজ নামটি AndroidManifest.xml ফাইলে পরিবর্তন করেন তখন ঘটে। এটি আপনার জেনারেল প্যাকেজ নামটি "জেনারেল" ডিরেক্টরির অধীনে একটি সাবডিরেক্টরি তৈরি করার জন্য ব্যবহার করে যেখানে এটি R.java ফাইল সংরক্ষণ করে।

Eclipse এটিকে পরিষ্কার নির্বাহ করতে সমস্যা হতে পারে, কারণ এটি যখন অ্যান্ড্রয়েড প্যাকেজ নামটি পরিবর্তন করে তখন R.java ফাইল কোথায় সে সম্পর্কে বিভ্রান্ত হয়। আপনি আপনার নতুন প্যাকেজ নামটির সাথে মেলে এমন জেনারেলের অধীনে সাবডিরেক্টরিটি পুনঃনামকরণ করতে পারেন, অথবা আপনি আপনার প্যাকেজ নামটি পুরানো নামের সাথে পরিবর্তন করতে পারেন। পরিষ্কার করুন এবং তারপর আপনার পছন্দের নতুন নামটিতে প্যাকেজ নামটি পরিবর্তন করুন। প্যাকেজ নাম পরিবর্তন করার সময় আপনি বিল্ড করার চেষ্টা থেকে Eclipse কে থামাতে এটি সর্বোত্তম কাজ করে। "প্রকল্প" মেনু এর অধীনে "স্বয়ংক্রিয়ভাবে তৈরি করুন" বিকল্পটি চেক করুন এবং যখন "পরিচ্ছন্ন ..." ডায়ালগটি "অবিলম্বে একটি বিল্ড শুরু করুন" বক্সটি আনচেক করে কিনা তা জিজ্ঞেস করে, তাই এটি পরিবর্তন করার সময় এটি তৈরি করার চেষ্টা করে না প্যাকেজ নাম। আপনি নামটি পরিবর্তন করার পরে আবার "স্বয়ংক্রিয়ভাবে তৈরি করুন" চালু করতে পারেন।

মনে রাখবেন যে আপনার AndroidManifest.xml ফাইল প্যাকেজ নামটি আপনার জাভা প্যাকেজ নামটির সাথে মেলে না তবে, Eclipse স্বয়ংক্রিয়ভাবে একটি "আমদানি <আপনার Android প্যাকেজ নাম>> আমদানি করবে"। আপনার সমস্ত .java ফাইলগুলিতে লাইনের যে কোনও রেফারেন্স থাকে। যদি আপনি আপনার AndroidManifest.xml প্যাকেজ নামটি পরিবর্তন করেন তবে কখনও কখনও Eclipse এই সমস্ত আমদানি আমদানি আপডেট করে না। যদি এমন হয়, আপনার জাভা ফাইলগুলিতে আপনার নতুন AndroidManifest.xml প্যাকেজ AndroidManifest.xml আমদানি বিবৃতি পরিবর্তন করতে Eclipse Refactoring ( ALT + Shift + R ) ব্যবহার করুন। "স্বয়ংক্রিয়ভাবে বিল্ড করুন" নিষ্ক্রিয় করার সময় এটি করা ভাল।






android-sdk-tools