saeedsektor

اندروید
مشکل پیدا کردن build tools revision 26.0.2

25 ارسال در این موضوع قرار دارد

سلام دوستان . خسته نباشید .

من به تازگی تصمیم به یادگیری اندروید گرفتم ولی خب متاسفانه همین اول را به مشکلی خوردم که درست بشو نیست

به زبان انگلیسی هم سرچ کردم ولی جایی جواب درستی نبود . مشکل من اینه که همون اولی که اندروید استودیو رو باز میکنم این ارور میاد

Error:Failed to find Build Tools revision 26.0.2
پیر شدم سر این .

حالا روش هایی که امتحان کردم هم زیاد بوده ولی جواب نبوده مثلا تو stackoverflow گفته بود که برو تو project structure بعد تو properties و اونجا ورژن build tools رو عوض کن . در صورتی که اصلا در project structure من اصلا properties نیست .

یک جای دیگه گفته بود که این خط رو به build.gradle اضافه کن درست میشه buildToolsVersion "24.0.0" اضافه کردم و هیچ عملی نکرد باز هم همون ارور

وقتی دیدم راهی نداره گفتم باید این فایل رو دانلود کنم چندین جا گشتم و نبود ولی یک جا پیدا کردم دانلود کردم و extract کردم تو پوشه build tools ولی جوابی نبود و همون ارور میومد .

الان راه چیه ؟ اگی فایلی هست که شما میدونین بگین تا دانلود کنم

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

از اینجا دانلود کنید

 

2 کاربر پسند شده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مرسی واقعا . دیگه اون ارور و نمیده ولی چندتا دیگه جایگزین شدن

یک تصویر ضمیمه کردم . میشه راهنمایی کنید

1.png

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام . من از موقعی که اندروید ۳ نصب کردم تا ‍‍‍‍‍‍project جدید میسازم همین ارور ها رو میگیرم و با Build-tools مشکلی نداشتم و دارمش . تمامی راه حل هایی که تو سایت های خارجی و youtube گفته بودن مثلا اضافه کردن google() بهrepositories  یا برداشتن تیک offline گرادل یا اضافه کردن آدرس Maven  به repositories - حذف کردن فولدر .gradle و ..... هیچکدوم جواب نداده با VPN  هم آنلاین شدم بلکه خودش دانلود کنه ولی فایده نداشته .....

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 ساعت قبل، saeedsektor گفته است :

مرسی واقعا . دیگه اون ارور و نمیده ولی چندتا دیگه جایگزین شدن

یک تصویر ضمیمه کردم . میشه راهنمایی کنید

1.png

این خطا که برای شما نمایش  داده . برای منم همین بود

 

اما با یک وی پی ان تونستم دانلود کنم

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

میشه لطف کنید بگید با کدوم VPN  ؟ چون من هرکدوم تست میکنم فایده نداره

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 6 ساعت قبل، Farzad Sarseifi گفته است :

این خطا که برای شما نمایش  داده . برای منم همین بود

 

اما با یک وی پی ان تونستم دانلود کنم

من با سایـ فونـ هم امتحان کردم یه سری از چیزا رو دانلود کرد الان فقط به این گیر میده com.android.support:appcompat-v7:26.+ .

هر کار هم میکنم بازم دانلود نمیکنه حتی با سایـ فونـ .

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

فرق زیادی نداره فقط  vpn نه غیر مجاز

سایفون فقط پورت 80 رو تونل میکنه و به لحاظ امنیت و سرعت هم جالب نیست اما vpn کل سیستم رو تونل میکنه و شما از عملکردش اطمینان دارید

80 درصد مشکلات با vpn زدن خودش حل میشه

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ارسال شده در (ویرایش شده)

با سلام

من هم مشکل 26.0.2 داشتم با دانلود این گزینه از اینجا حل شد البته

اول پوشه android studio در user درایو c رو پاک کردم برای ریست تنظیمات اندروید استودیو و بعدش با قند شکن free گیت خیلی راحت gradel لود شد

نسخه android studio v3.0.1

ممنون از دوستان

ویرایش شده در توسط behrooz64
1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکه فعلا مشکلتون حل بشه از قسمت project settings  می تونید dependency  مربوطه به ۲۶ رو حذف کنید و ورژن‌های پایین مثلا ۲۴ بزارید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/09/01, 11:49:19، saeedsektor گفته است :

مرسی واقعا . دیگه اون ارور و نمیده ولی چندتا دیگه جایگزین شدن

یک تصویر ضمیمه کردم . میشه راهنمایی کنید

1.png

سلام خدمت شما بزرگواران 

منم دقیقا همین مشکلو دارم 

متاسفانه هیچ قندشکنی هم ندارم که خودش دانلود کنه 

راه حلی غیر از قندشکن نیست ؟ نمیشه فایلشو از جایی دانلود کرد یا ...؟ 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 3 ساعت قبل، masoood گفته است :

سلام خدمت شما بزرگواران 

منم دقیقا همین مشکلو دارم 

متاسفانه هیچ قندشکنی هم ندارم که خودش دانلود کنه 

راه حلی غیر از قندشکن نیست ؟ نمیشه فایلشو از جایی دانلود کرد یا ...؟ 

باید دانلود کنید . مگه اینکه پوشه Gradle رو بزارن و جایگیزین gradle خودتون کنید

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوست عزیز

برید داخل فایل gradle.properties و اینجا پروکسی هم برای http و هم برای https ست کنید به این صورت

systemProp.http.proxyHost=localhost
systemProp.http.proxyPort=51520

systemProp.https.proxyHost=localhost
systemProp.https.proxyPort=51520

برای دانلود کتابخونه ها باید به https وصل بشید نه http پس پراکسی باید برای Https ست بشه تا تاثیر داشته باشه

هاست و پورت وی پی ان خودتونو بزارین

2 کاربر پسند شده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 19 ساعت قبل، Farzad Sarseifi گفته است :

باید دانلود کنید . مگه اینکه پوشه Gradle رو بزارن و جایگیزین gradle خودتون کنید

با کلی مشکل س-ایفون گیر اوردم 

وصل کردم چیزی حدود 300 مگ دانلود کرد ولی بازم همین ارور رو نشون داد :/

من قبلا گیم میکر کار میکردم اون خیلی راحت تره خداییش حداقل میشد فهمید مشکل از کجاست 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 10 ساعت قبل، a.khosroabadi گفته است :

سلام دوست عزیز

برید داخل فایل gradle.properties و اینجا پروکسی هم برای http و هم برای https ست کنید به این صورت


systemProp.http.proxyHost=localhost
systemProp.http.proxyPort=51520

systemProp.https.proxyHost=localhost
systemProp.https.proxyPort=51520

برای دانلود کتابخونه ها باید به https وصل بشید نه http پس پراکسی باید برای Https ست بشه تا تاثیر داشته باشه

هاست و پورت وی پی ان خودتونو بزارین

بخش gradle scripts برم ؟ 

Gradle.properties نگاه کردم همچین گزینه هایی توش نیس که تغییرشون بدم 

اگه مشکلی نیست یکم بیشتر توضیح بدید ♡

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 2 ساعت قبل، masoood گفته است :

بخش gradle scripts برم ؟ 

Gradle.properties نگاه کردم همچین گزینه هایی توش نیس که تغییرشون بدم 

اگه مشکلی نیست یکم بیشتر توضیح بدید ♡

بله باید به فایل gradle.properties اضافش کنید

2 کاربر پسند شده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 15 ساعت قبل، Farzad Sarseifi گفته است :

بله باید به فایل gradle.properties اضافش کنید

انجام دادم نشد :-(

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 10 دقیقه قبل، masoood گفته است :

انجام دادم نشد :-(

به بنده پیغام بدید یک v   p    n  معرفی کنم خدمتتون مشکلتون حل شود

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/09/01, 11:49:19، saeedsektor گفته است :

مرسی واقعا . دیگه اون ارور و نمیده ولی چندتا دیگه جایگزین شدن

یک تصویر ضمیمه کردم . میشه راهنمایی کنید

1.png

بالاخره این ارور رو با جایگزین کردن کد زیر حل کردم

<

implementation 'com.android.support:appcompat-v7:22.2.1+'

>

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Error:A problem occurred configuring project ':app'.
> Failed to find target with hash string 'android-26' in: C:\Users\windows\AppData\Local\Android\sdk\sdk

فایل رو دانلود کردم گذاشتم توپوشه مربوطه ... ولی باز ایم ارور رو میده؟؟   

لطفا راهنمایی کنین. با تشکر

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام برای من ارور build-tool رفع شد ولی این ارور اومد حالا باید چیکار کنم

Error:The prefix "app" for attribute "app:layout_constraintLeft_toLeftOf" associated with an element type "TextView" is not bound.

Untitled246545.png

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Gradle رو شما باید دوباره sync کنید با زدن گزینه Try again در تصویر بالا

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این کار رو کردم نشد

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این خطای شما که توی کد میبینم مربوط به ConstraintLayout میباشد و باید درستش کنید

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/09/01, 01:24:56، Paranormal گفته است :

سلام . من از موقعی که اندروید ۳ نصب کردم تا ‍‍‍‍‍‍project جدید میسازم همین ارور ها رو میگیرم و با Build-tools مشکلی نداشتم و دارمش . تمامی راه حل هایی که تو سایت های خارجی و youtube گفته بودن مثلا اضافه کردن google() بهrepositories  یا برداشتن تیک offline گرادل یا اضافه کردن آدرس Maven  به repositories - حذف کردن فولدر .gradle و ..... هیچکدوم جواب نداده با VPN  هم آنلاین شدم بلکه خودش دانلود کنه ولی فایده نداشته .....

 

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط Omid Zakeri
      یک کتابخانه بسیار زیبا که جابجایی بین تب ها در فرگمنت ها را بصورت حبابی نمایش می دهد
       
       

       
       

       
      دانلود :
      compile 'com.github.florent37:bubbletab:1.0.2'  
      BubbleTab را به صورت زیر به layout.xml خود اضافه کنید
      شما میتوانید دو پارامتر زیر را اضافه کنید
      circleColor circleRatio <com.github.florent37.bubbletab.BubbleTab android:id="@+id/bubbleTab" android:layout_width="match_parent" android:layout_height="wrap_content" android:clipToPadding="false" android:background="@android:color/white" android:elevation="10dp" app:bubbleTab_circleColor="@color/colorAccent" app:bubbleTab_circleRatio="1.25" > <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="16dp" android:src="@drawable/bubbletab_ic_hourglass_selector" /> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="16dp" android:src="@drawable/bubbletab_ic_event_selector" /> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="16dp" android:src="@drawable/bubbletab_ic_query_selector" /> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="16dp" android:src="@drawable/bubbletab_ic_search_selector" /> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:padding="16dp" android:src="@drawable/bubbletab_ic_home_selector" /> </com.github.florent37.bubbletab.BubbleTab> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"/>  
       
      سپس برای set کردن viewPager از روش زیر استفاده کنید
      bubbleTab.setupWithViewPager(viewPager);  
       
       
      پشتیبانی: BubbleTab
       
      BubbleTab-master.zip
    • توسط jonoob
      سلام
      وقت همگی بخیر
      من یک دیتا بیس دارم حدود 10 هزار ردیف و بیست ستون هست
      میخواهم از طریق چک باکس مشخص کنم در کدام ستون جستجو کند
      لطفا در صورت امکان کدنویسی مربوط اتصال به دیتابیس و سایر مواردی که مورد نیاز هست بفرمایید\
      من یک تازه کارم
      متشکرم
    • توسط hackn82
      سلام خدمت اساتید گرامی . 

      من یه برنامه نوشتن که برای یادگیری لغاته . وقتی کاربر لغتی رو به بخش علاقه مندی اضافه می کنه لغت نمایش داده نمیشه و باید برنامه رو مجدد اجرا کرد تا لغت انتخاب شده به بخش علاقه مندی اضافه/ حذف بشه . همچنین بعد از هر بار اجرا لیست لغات تکرار میشه ( مثلا بار دوم از هر کدوم 2 سری بار سوم از هرکدوم 3 سری و ... ) ایجاد میشه . ممنون میشم راهنماییم کنید . 
       
      package farmani.com.essentialwordsforielts.mainPage; import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Build; import android.os.Environment; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.design.widget.TabLayout; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import farmani.com.essentialwordsforielts.R; import farmani.com.essentialwordsforielts.search.ActivitySearch; public class MainActivity extends AppCompatActivity { public static Context context; public static ArrayList<Structure> list = new ArrayList<>(); public static ArrayList<Structure> favorite = new ArrayList<>(); DrawerLayout drawerLayout; NavigationView navigationView; ImageView hamburger; SQLiteDatabase database; String destPath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.navigation_activity_main); if (Build.VERSION.SDK_INT >= 23) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE , Manifest.permission.WRITE_EXTERNAL_STORAGE} , 1); } else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE , Manifest.permission.WRITE_EXTERNAL_STORAGE} , 1); } else { setupDB(); selectList(); selectFavorite(); Toast.makeText(MainActivity.this, "You grandet earlier", Toast.LENGTH_LONG).show(); } } if (!favorite.isEmpty()){ favorite.clear(); selectFavorite(); } else if (!list.isEmpty()){ list.clear(); selectList(); } context = getApplicationContext(); setTabOption(); drawerLayout = findViewById(R.id.navigation_drawer); navigationView = findViewById(R.id.navigation_view); hamburger = findViewById(R.id.hamburger); hamburger.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawerLayout.openDrawer(Gravity.START); } }); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if (id == R.id.exit) { AlertDialog.Builder alertDialog = new AlertDialog.Builder( MainActivity.this); alertDialog.setTitle(R.string.exit); alertDialog.setMessage(R.string.exit_ask); alertDialog.setCancelable(false); alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertDialog.show(); } if (id == R.id.search) { Intent intent = new Intent(MainActivity.this, ActivitySearch.class); MainActivity.this.startActivity(intent); } return true; } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: { if (grantResults.length >= 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this, "Access granted", Toast.LENGTH_LONG).show(); } } } } @Override public void onBackPressed() { if (drawerLayout.isDrawerOpen(Gravity.START)) { drawerLayout.closeDrawer(Gravity.START); } else { AlertDialog.Builder alertDialog = new AlertDialog.Builder( MainActivity.this); alertDialog.setTitle(R.string.exit); alertDialog.setMessage(R.string.exit_ask); alertDialog.setCancelable(false); alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertDialog.show(); } } private void setTabOption() { ViewPager viewPager = findViewById(R.id.viewpager); viewPager.setAdapter(new AdapterFragment(getSupportFragmentManager(), context)); TabLayout tabStrip = findViewById(R.id.tabs); tabStrip.setupWithViewPager(viewPager); } private void setupDB() { try { destPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ielts/"; File file = new File(destPath); if (!file.exists()) { file.mkdirs(); file.createNewFile(); CopyDB(getBaseContext().getAssets().open("md_book.db"), new FileOutputStream(destPath + "/md_book.db")); } } catch (IOException e1) { e1.printStackTrace(); } } @Override protected void onResume() { super.onResume(); if (!favorite.isEmpty()){ favorite.clear(); selectFavorite(); } else if (!list.isEmpty()){ list.clear(); selectList(); } } private void CopyDB(InputStream inputStream, OutputStream outputStream) throws IOException { byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } inputStream.close(); outputStream.close(); } private void selectFavorite() { database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.db", null); Cursor cursor = database.rawQuery("SELECT * FROM main WHERE fav = 1", null); while (cursor.moveToNext()) { String word = cursor.getString(cursor.getColumnIndex("word")); String definition = cursor.getString(cursor.getColumnIndex("definition")); String trans = cursor.getString(cursor.getColumnIndex("trans")); String img = cursor.getString(cursor.getColumnIndex("img")); int id = cursor.getInt(cursor.getColumnIndex("id")); Structure struct = new Structure(word, definition, trans, img, id); struct.setWord(word); struct.setDefinition(definition); struct.setTrans(trans); struct.setImg(img); struct.setId(id); favorite.add(struct); } } private void selectList() { database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.db", null); Cursor cursor = database.rawQuery("SELECT * FROM main", null); while (cursor.moveToNext()) { String word = cursor.getString(cursor.getColumnIndex("word")); String definition = cursor.getString(cursor.getColumnIndex("definition")); String trans = cursor.getString(cursor.getColumnIndex("trans")); String img = cursor.getString(cursor.getColumnIndex("img")); int id = cursor.getInt(cursor.getColumnIndex("id")); Structure struct = new Structure(word, definition, trans, img, id); struct.setWord(word); struct.setDefinition(definition); struct.setTrans(trans); struct.setImg(img); struct.setId(id); list.add(struct); } } }  
    • توسط jonoob
      سلام وقت بخیر 
      من یک آپ میخواهم طراحی کنم که کاربر بتونه ساولش را بپرسه و کاربران جواب بدن و بتونن آن را لایک کنن .
      پنج قسمت داره
      مثلا = ریاضی - علوم - فارسی - قران-شیمی
      روی ریاضی کلیک کنه وارد اون بخش بشه تمام سوالات مطرح شده را ببینه بتونه روش کلیک کنه و جوابها را ببینه و بتونه لایک 
      و
      خودش بتونه سوال طرح کنه
       
       
      لطفا منو راهنمایی کنید
      ممنونم
    • توسط jonoob
      سلام به همه دوستان عزیز
      من می خواهم در یک صفحه اول برنامه این نمایش داده بشه 
      مثلا
      سلام صبح بخیر امروز سه شنبه 24 بهمن 1396
      اینهای که رنگی کردم بر اساس ساعت  و تاریخ به روز گوشی تغیر کند
      لطفا راهنمایی کنید
      مرسی از همگی دوستان
       

  • دوره آموزشی اندروید آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios مهارت های فروش
    آموزش برنامه نویسی اندروید
  • فایل