অ্যান্ড্রয়েড .আইডিএ / মিসক্স.এমএমএল এর ভাষা লেভেল জেডিকে পরিবর্তন করে চলেছে


178

ভাষা সচেতন কী জেডিকে_1_8 থেকে জেডিকে_1_7 এ পরিবর্তিত হয়ে যায় কারণগুলির কারণে আমি সচেতন নই।

কি হতে পারত?

প্রকল্পে কাজ করা অন্যান্য বিকাশকারীদের আইডিইয়ের সাথে কি এর কিছু যুক্ত রয়েছে? তাদের কি অন্য অ্যান্ড্রয়েড স্টুডিও সেটিং আছে?

উত্স নিয়ন্ত্রণের অধীনে থাকা ফাইলগুলি পরিবর্তিত হওয়ার পরে এখানে কী কী পপ আপ হবে তা এখানে:

$ git diff
diff --git a/.idea/misc.xml b/.idea/misc.xml
index fbb6828..5d19981 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
     <ConfirmationsSetting value="0" id="Add" />
     <ConfirmationsSetting value="0" id="Remove" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">

এটি আমার গিটিগনোর এটির ক্ষেত্রে গুরুত্বপূর্ণ।

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures

আমি কীভাবে এগিয়ে যেতে পারি যাতে এটি কেবল এক পথে বা অন্য পথে থাকে?


1
আমি করেছিলাম. উত্তর যুক্ত হয়েছে।
ক্রাফটিদেবিল

4
আমি কেবল উল্লেখ করতে চাই যে ইন্টেলিজ- সাপোর্ট.জেটব্রিনস / এইচসি/en-us/articles/ … কী হওয়া উচিত তার সরকারী উত্তর .gitignoreএবং এই কর্মপরিকল্পনা এর বিপরীতে চলে। আপনি সমস্ত বিকাশকারীদের যেমন প্রকল্পের বৈশিষ্ট্যগুলি ভাগ করে নেওয়ার কিছু ক্ষমতা হারাবেন যেমন পরিদর্শন / লিন্ট সেটিংস যা আমরা কোড পর্যালোচনায় আসার আগে কিছু মানক খারাপ-অভ্যাসগুলি প্রতিরোধ করতে ব্যবহার করি। এটি সমাধান করার জন্য /.idea/misc.xmlআপনি কেবল .gitignoreফাইলটিতে যুক্ত করতে পারেন ।
ম্যাট কুইগলি

4
আমি নিজেই এই সমস্যাটি লক্ষ্য করেছি এবং এটি কোনও ভিন্ন দলের সদস্য কাজ করার পরেও হয়নি। আমি আমার নিজের কাজটি করেছি, একটি প্রতিশ্রুতিবদ্ধ করেছি, আরও কিছু কাজ করেছি এবং লক্ষ্য করেছি যে এটি আমার উপর আবার পরিবর্তন হয়েছে। এটাই আমাকে বেশি চিন্তিত করে। যদি এটির আলাদা দলের সদস্য হয় তবে আমি জানি কেন এটির পরিবর্তন হচ্ছে তবে ব্যক্তিগত স্থানীয় বিকাশের সময় এলোমেলোভাবে পরিবর্তন হওয়া সম্পর্কিত এবং বিভ্রান্তিকর। এর মধ্যে কোন অন্তর্দৃষ্টি?
জন শেলী

3
আমার একই সমস্যা রয়েছে, ভাষার স্তরটি 1.7 থেকে 1.8 এর মধ্যে পরিবর্তিত হয়।
হান তিনি

উত্তর:


42

এটি কিছুক্ষণের জন্য আমাকে বাদাম চালাচ্ছিল। আমি আমার স্পষ্টভাবে জাভা সংস্করণ সেট করে এটি ঠিক করতে সক্ষম হয়েছি build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

মনে রাখবেন যে আপনি যদি ব্যবহার করছেন VERSION_1_7, যখন আপনি অ্যান্ড্রয়েড স্টুডিওটি চালু করেন বা ব্যবহার করে এমন কোনও প্রকল্পে স্যুইচ করেন VERSION_1_8, এটি .idea/misc.xmlব্যবহারে পরিবর্তন হবে JDK_1_8। গ্রেড সিঙ্ক করলে তা আবার ব্যবহারে ফিরে যাবে JDK_1_7। আপনি যদি ব্যবহার করছেন VERSION_1_8, আপনার কাছে এই সমস্যা হবে না।

এটি নিখুঁত নয় তবে আমি এটি আপাতত যথেষ্ট ভাল বলে পেয়েছি।


2
বর্তমানে, গ্রেড বিকল্পটি ব্যবহার করে পরিবর্তিত সমস্যাটিকে আটকাতে পারে না এমন স্ট্যাকওভারফ্লো.com/a/40083824/1815624 এর পরামর্শ অনুযায়ী এম্বেড জেডিকে ব্যবহার করবেন না বা ব্যবহার করতে চান না । এই কোডটি
CrandellWS

আমি কি প্রজেক্টে বা মডিউল ফাইলটিতে রাখি?
rraallvv

@rraallvv মডিউলটি
নোয়েল

এই ধরণের আমার জন্য এটি "ঠিক করে"। আমার গ্রেড ফাইলটিতে এই বিকল্পগুলি রয়েছে। যদি আমি স্টুডিও খুলি (এটি গ্রেড সিঙ্ক করে এবং), এটি Misc.xML সেট করে 1_8। আমি যদি তখন নির্মাণ করি তবে এটি 1_7 এ ফিরে আসবে। আমি যদি তখন গ্রেড সিঙ্ক করি তবে এটি 1_8 এ ফিরে আসবে এবং বিল্ডিংটি আর এটি আর 1_7 এ সেট করবে না। গ্রেড সিঙ্ক করা কখনই আমার জন্য 1_7 এ সেট করে না, গ্রেড সিঙ্কের পরে এটি সর্বদা 1_8 থাকে। যে কোনও সময় আমি স্টুডিও খুলি, এটি 1_8 এ সেট হয়ে যায়।
ডেভিড

আপনি যদি চান ব্যবহার JDK 1.8: Android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}}
বিট্রিস লিন

24

অ্যান্ড্রয়েড স্টুডিও ২.২-এ আপডেট করার পরে গুগল থেকে এখানে এসেছিল। এটি অন্যের পক্ষে সহায়ক হতে পারে।

অ্যান্ড্রয়েড স্টুডিও ২.২ থেকে, জেডিকে এটি আপনার সিস্টেমে ডাউনলোড এবং ইনস্টল করার পরিবর্তে এটির সাথে একত্রিত করা হয়েছে। আমি এবং ২.২ এ আপডেট হওয়ার পরে আমার প্রকল্প জেডিকে স্যুইচিং শুরু হয়েছিল, সম্ভবত এখন দুটি সংস্করণ উপলভ্য - সিস্টেম এবং এম্বেড থাকা কারণে।

আপনি যদি SDK অবস্থান ট্যাবে ফাইল> প্রকল্পের কাঠামো (ম্যাক ওএস) এ যান তবে জেডিকে অবস্থান রয়েছে। এম্বেড করা জেডিকে ব্যবহারের জন্য এখন একটি নতুন সেটিংস রয়েছে। একবার আমি এটিতে স্যুইচ করেছি, এটি আমার সমস্যার সমাধান করেছে।

এখানে চিত্র বর্ণনা লিখুন


7
আমি এটি করেছি (যদিও উইন 10 এ) তবে আমি পুনরায় চালু করার সাথে সাথেই আমি লক্ষ্য করলাম সমস্যাটি অব্যাহত রয়েছে :(
সিজারপিম

2
এটি সমস্যা সমাধানে কাজ করে। @ সিজারপিম যেমন উল্লেখ করেছেন, আমি দেখতে পাচ্ছি যে বিল্ডটি সিঙ্কের বাইরে চলে গেলে এটি পুনরায় উত্থিত হয়। গ্রেড সিঙ্ক চালানো তারপরে পরিবর্তনটি সাফ করে। সামগ্রিকভাবে একটি সুন্দর পরিষ্কার সমাধান, এটি আগের চেয়ে অনেক ভাল - ধন্যবাদ!
জিন বো বো

5
আপনি @gnB মানে? আমার সাথে এটি 1.7 থেকে 1.8 এর মধ্যে পিছনে পিছনে যেতে থাকে ... আমি একটি স্থিতিশীল সমাধান খুঁজে পাইনি। আপনি ছিলেন?
সিজারপিম

3
@ জিএনবি হ্যাঁ, আমার সাথেও একই, তবে এটি এখনও আমাকে বিরক্ত করে যে আমি যতবার আসি প্রতিটি সময়ই এটি ঘটে ... এটি হওয়া উচিত নয়
সিজারপিম

15
এখনও অ্যান্ড্রয়েড স্টুডিও 3.0.০ এ ঘটছে, এবং এই পরামর্শটি এটি ঠিক করে নি। আমি ইতিমধ্যে "এম্বেড জেডিকে" নির্বাচন করেছি এবং এখনও এটি 1_7 থেকে 1_8 এ পরিবর্তিত হয় এবং কোনও আপাত কারণ ছাড়াই ফিরে আসে।
গ্রেগ এনিস

9

মনে হচ্ছে ফাইলটি সংস্করণ নিয়ন্ত্রণে সংরক্ষণ করা উচিত । আমি এটিকে গিটে রাখার প্রস্তাব দেব, তবে সমস্ত স্থানীয় পরিবর্তনগুলি উপেক্ষা করুন:

git update-index --assume-unchanged .idea/misc.xml

শাখাগুলি স্যুইচ করার সময় এই ফাইলগুলিতে দ্বন্দ্ব থাকতে পারে। তারপরে আপনি ফাইলগুলি পুনরায় সেট করতে নিম্নলিখিত ইমপ্লিট স্ক্রিপ্টটি ব্যবহার করতে পারেন :

#!/bin/bash                                                                     
while read f                                                                    
do                                                                              
  [ -f $f ] && git checkout $f                                                    
done <<!                                                                        
app/app.iml                                                           
wear/wear.iml                                                                   
!

আপনি যদি প্রায়শই এটি করেন তবে এই ফাইলগুলিকে উপেক্ষা করার জন্য অনুরূপ স্ক্রিপ্ট তৈরি করুন।


শাখাগুলি স্যুইচ করার সময় এটি সমস্যাগুলি এড়ায় না, যদি আইডিই ফাইল পরিবর্তন করে, আপনি কোনও আলাদা শাখা চেকআউট করার আগে পরিবর্তনগুলি কোনওভাবে মুছে ফেলতে হবে।
এরগোসিস

@ এরগোসিস, মন্তব্যের জন্য ধন্যবাদ। আমি যেমন ক্ষেত্রে স্ক্রিপ্ট যুক্ত।
পাওয়ে নাদোলস্কি

1
ফাইলটিকে উপেক্ষা করা একটি বিরোধী সমাধান, এমনকি কোনও উপকারী কাজও নয়। এটি কারণটির প্রতিকার করে না, এটি লক্ষণগুলি গোপন করে এবং এটি করে সহজ সমস্যাগুলি তৈরি করে এবং অস্পষ্ট করে তোলে যাতে তারা খুঁজে পেতে এবং সমাধান করা শক্ত হয়ে যায়।
ব্যারি স্টেস

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

1

আমি যখন এইডিয়ো ফোল্ডারটি উত্স নিয়ন্ত্রণে অপসারণ এবং প্রতিশ্রুত করা বন্ধ করি তখন আমি এই সমস্যার সমাধান করেছি।

সমস্যাটি হ'ল এই ফাইলগুলির মধ্যে কিছু মেশিন নির্দিষ্ট কনফিগারেশন রয়েছে তাই এগুলি ভাগ করে নেওয়া কোনও সমস্যা হতে পারে।

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

1) এই .gitignore যুক্ত করুন ( https://stackoverflow.com/a/32942758/869936 থেকে ):

#built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Windows thumbnail db
Thumbs.db

# OSX files
.DS_Store

# Eclipse project files
.classpath
.project

# Android Studio
*.iws
*.iml
.idea
.gradle
build/
*/build/

2) .gitignore এর প্রতিটি লাইনের জন্য git rm lineকমান্ড লাইন থেকে চালান ।

উদাহরণ:

$ git rm *.iws
$ git rm *.iml
$ git rm .idea
$ git rm .gradle
$ git rm build/
$ git rm */build/

পরিবর্তনগুলি যুক্ত করুন এবং প্রতিশ্রুতিবদ্ধ করুন

আপনি যখন অ্যান্ড্রয়েড স্টুডিও প্রকল্পটি খুলবেন তখন এই ফাইলগুলি তৈরি করা হবে এবং সেগুলি গিটে যুক্ত হবে না।


20
মতে intellij-support.jetbrains.com/hc/en-us/articles/... তোমাদের অধিকাংশই কমিট অনুমিত করছি .ideaফোল্ডারের কারণ তারা নয় মেশিন-নির্দিষ্ট, ছাড়া workspace.xmlএবং tasks.xml। বলা হচ্ছে, সংস্করণ নিয়ন্ত্রণের ক্ষেত্রে এটি খুব ভাল চিন্তা-ভাবনা নয়, কারণ এই জাতীয় সমস্যার কারণে। আমি অনুমান করি যে তারা শেষ পর্যন্ত এই জগাখিটি বাছাই করবে।
ম্যাট কুইগলি

আমি বুঝতে পারি এখানে তফাত রয়েছে। একই সাথে, আমি এই .gitignore ব্যবহার করা থেকে আমার দেব দলের কোনও সমস্যা সম্পর্কে অবগত নই। আমি যদি আরও জানতাম তবে আমি আরও পরামর্শ দিতে পারতাম, তবে এই মুহূর্তে এটি আমাদের জন্য কাজ করছে। যদি কোনও সমস্যা নিজেই উপস্থাপন করে তবে আমি আমার উত্তরটি পরিবর্তন করব।
ক্রাফটিদেভিল

31
হ্যাঁ, এই ফাইলটি উপেক্ষা করার জন্য কীভাবে গিটকে জোর করা যায় তা আমরা সকলেই জানি। তবে আসল প্রশ্নটি কেন এটি জেডিকে_1_8 থেকে জেডিকে_1_7 (এবং কখনও কখনও আবার ফিরে আসে) এ পরিবর্তিত হয়?
স্কট বিগস

অ্যান্ড্রয়েড স্টুডিও ২.২ দিয়ে আমার সাথে ঘটতে শুরু করে। আমি মনে করি তারা জেডিকে ২.২ এএস দিয়ে শুরু করে বান্ডিল করেছে, সুতরাং এটি সম্ভব যে এটি সিস্টেমের মধ্যে একটি এবং এএসের মধ্যে একটির মধ্যে বিভ্রান্ত হয়।
RED_

3
এটি প্রশ্নের কোনও উত্তর দেয় না। যা জিজ্ঞাসা করার কারণে এটি অদ্ভুত। এইভাবে সমস্যাটিকে কীভাবে উপেক্ষা করা যায়, এটি আপনার পক্ষে ঠিক হতে পারে বলে আমি অনুমান করি, কেন এটি পরিবর্তিত হয় এবং কীভাবে এটি করা বন্ধ করে দেওয়া যায় তা আমি জানতে চাই।
ডেভিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.