NetLizard
#1
Hammaga salom!
Mavzu ochishimdan maqsad android ilovalar tuzishga barchamizda qiziqish bor.Hamma bu qanday tuzilishiga qiziqqan albatta.Men sizlarga shu borada batafsil malumot va namunalar berib otaman.
Xudo xohlasa bu mavzuga har haftada 2 ta maqola yoziladi.Tushunmagan narsalaringiz bolsa bemalol sorang.
Demak biz boshladik.Bu ilovalar tuzish uchun nimalar zarur?
Sizga kerak boladigan narsa bu PC yoki Android smartfonning ozi.
1) PCda Android Studio, Intellij IDEA yoki Eclipseda tuzish mumkin.
2) Androidda eng yaxshisi AIDE.Bundan yaxshisiniyam yomoniniyam topolmaysiz ;)
1.1) AIDE 2.6.7 Premium yuklaymiz va ornatamiz(Premiumni spaces yoki 4pda saytidan yuklab oling)
1.2) AIDEga kiramiz, unda ekranda 4 xil bolim chiqadi, bizga keragi bu "For Experts" bolimi, shunga kiramiz.
1.3) MyApp(buni xolagancha yozish mumkin)
com.mycompany.myapp(bu ham xohishga qarab, holasangiz saytingizni domeniga qoying.Masalan, uz.uzfor.app)
********
Hozir esa saytning oddiy clientini tuzamiz.
1.4) OK bosganimizdan keyin avtomatik main.xmlga otamiz.U yerdagi barcha kodlarni ochiring(xml fayllari oson) va orniga buni yozing:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <WebView
  3. android:id="@ id/webView"
  4. xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"/>

*- nima bu degan savol paydo boldimi?
Bu main.xml fayli biz unga webviewni uladik.
android:layout_width- bu ekran kengligi
android:layout_height- bu ekran boyi.
Endi AIDEda yon menyuga kiramiz va u yerdan src/com/mycompany/myapp papkadagi MainActivity.java faylga bosamiz.Barcha kodlarni tozalaymiz.Va buni yozamiz.
  1. package com.mycompany.myapp;
  2. //com.mycompany.myapp bu paket nomi
  3.  
  4. import android.app.*;
  5. import android.os.*;
  6. import android.webkit.*;
  7. //import orqali kerakli library va komponentlarni ulaymiz.
  8. public class MainActivity extends Activity {
  9. //MainActivityni Activity sifatida korsatdik.
  10. private WebView mWebView;
  11. //WebViewni mWebView sifatida yaratdik.
  12. public void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. //R.java faylga layout.mainni uladik
  16. mWebView = (WebView) findViewById(R.id.webView);
  17. // JavaScriptni webviewga uladik va uni yoqdik true orqali
  18. mWebView.getSettings().setJavaScriptEnabled(true);
  19. // yuklanish uchun sahifani korsatdik.
  20. mWebView.setWebViewClient(new MyWebViewClient());
  21. // havola
  22. mWebView.loadUrl("http://uzfor.uz");
  23. }
  24. private class MyWebViewClient extends WebViewClient
  25. {
  26. @Override
  27. public boolean shouldOverrideUrlLoading(WebView view, String url)
  28. {
  29. view.loadUrl(url);
  30. //sahifani yukladik.
  31. return true;
  32. }
  33. }
  34. @Override
  35. public void onBackPressed() {
  36. if(mWebView.canGoBack()) {
  37. mWebView.goBack();
  38. //Nazad knopka bosilganda avvalgi sahifaga qaytish yoqildi, agar sahifa eng birinchisiga qaytsa yana bosganimizda dasturdan chiqadigan qildik.
  39. } else {
  40. super.onBackPressed();
  41. }
  42. }
  43. }

AndroidManifest.xmlga internet permissiyasini ulaymiz.
Yana AIDEda menyuni bosib u yerdan AndroidManifest.xml topamiz va tozalab, keyin unga quyidagicha yozamiz.
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.mycompany.myapp"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="11" />
  10. <uses-permission
  11. android:name="android.permission.INTERNET" />
  12. <application
  13. android:icon="@drawable/ic_launcher"
  14. android:label="@string/app_name">
  15. <activity
  16. android:label="@string/app_name"
  17. android:name=".MainActivity" >
  18. <intent-filter >
  19. <action android:name="android.intent.action.MAIN" />
  20.  
  21. <category android:name="android.intent.category.LAUNCHER" />
  22. </intent-filter>
  23. </activity>
  24. </application>
  25.  
  26. </manifest>

*- bu yerda ozingiz ham sezdingiz, permissiya bu yerda faqat inetga ulandi:
<uses-permission
android:name="android.permission.INTERNET" />
*- endi MainActivity.javani AndroidManifest.xmlga ulaymiz:
<activity
android:label="@string/app_name"
android:name=".MainActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
*- koryapmizki bu juda oson.bu yer .MainActivity- bu avval tuzgan MainActivity.java faylidir.
*- @string/app_name- bu res/values/strings.xml fayliga yozilgan boladi.Yozilishi oson:
<string name="app_name">Hello</string>
Tushundingiz deb oylayman.Yani <qator nomi="app_name">Hello</qatorni yopdik>
*- @drawable/ic_launcher- bu res/drawable papkadagi surat fayllari.Bu yerda ic_launcher bu ic_launcher.pngdir, yani dasturni ikonkasi.
*- action haqida gapirsak, bular ushbu dasturni ekranda korinishini taminlash uchun:
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
android:minSdkVersion="8"
- bu eng past android versiyasini korsatish, bu yerda u Android 1.6 korsatilgan.
Demak tushundingizmi @drawable- res papkadagi fayllar, @string- strings.xml faylidagi sozlar.
**********
Ertaga yana yozaman.Yangi funksiyalarni har kun qoshib organib boramiz.
Biriktirilgan fayllar [3]:
 test.apk (251.68 KB) (145 ↴)
 test.zip (579.24 KB) (122 ↴)
 screen_20190603_0513.jpg (30.52 KB) (173 ↴)
NetLizard
#2
Hammaga salom!
Demak davom etamiz.#1 postdagi kamchiliklarni togirlab yozaman.
Quyida bizga kerakli savollar:
1) Android nima ozi?
2) .apk va uning tarkibi qanday?
3) AndroidManifest.xml?
4) Librarylar nega va qanday ulayman?
5) Google xml batafsil?
Android- bu mobil, smartwatch, tablet, android auto va tvlar uchun operatsion sistema.Androidga Palo Alto, Californiada 2003 yilda Andy Rubin, Rich Miner, Nick Sears va Chris White tomonidan asos solingan.2005 yil iyul oyida Google bu kompaniyani 50 mln $ ga sotib oldi, 2003 yilda Android Inc. bahosi atiga 10,000$ pul ortidan rivojlangandi.
Android Versiyalari:
1) Android 1.0,2008(nomsiz prosta android, kopchilik android a dan boshlangani uchun unga nom qoyilmagan deydi)
2) Android 1.5,2009(Cupcake)
3) Android 1.6,2009(Donut)
4) Android 2.0-2.1,2009(Eclair)
5) Android 2.2,2010(Froyo)
6) Android 2.3,2011(Gingerbread)
7) Android 3.0,2011(HoneyComb)
8) Android 4.0,2011(ICS)
9) Android 4.1-4.3,2012(Jelly Bean)
10) Android 4.4,2013(Kitkat)
11) Android 5.0-5.1,2014(Lollipop)
12) Android 6.0,2015(Marshmallow)
13) Android 7.0-7.1,2016(Nougat)
14) Android 8.0-8.1,2017(Oreo)
15) Android 9,(Android P)
Android bu Linux 2.6 kernel moslashtirilib yaratilgan osdir, xuddi gnome, ubuntu, tizen va hokazo.
***********
Android .apk tuzilmasi va android arxitekturasi.
Android arxitekturasi: SYSTEM APPS=>E-MAIL,CAMERA,DIALER,CALENDAR
|=JAVA API FRAMEWORK[color=violet[
|=NATIVE C/C++=>WEBKIT=>OPENGL ES[/color]
|=ANDROID RUNTIME=>DALVIK VM=>ART=>CORE LIBRARIES

|=HARDWARE ABSTRACTION LAYER(HAL,ruscha jeleza)
|=BLUETOOTH,WIFI,SENSOR,AUDIO


|=LINUX KETNEL
|=DRIVERS=>BLUETOOTH,AUDIO,KEYPAD,WIFI,DISPLAY,USB,SHARED MEMORY
[color=red]
|=POWER MANAGEMENT

***********
Android paketlari haqida batafsil.
Android ozining .apk formatini qollaydi.
Apk tarkibida: .dex, .dex2, .arsc, AndroidManifest.xml, META-INF, res, assets, third_party, lib kabi papka va fayllar boladi.
.Dex- bu dalvik executable format, yani yuqorida yozganim DALVIK VM android uchun maxsus mashina u mazkur .dex faylni oqiydi.
.arsc- bu fayl ichida dasturimizdagi matnlar, va boshqa sozlar saqlanadi.Masalan, biror dastur menyusida "Sozlamalar" sozi ushbu .arsc ichida boladi.
AndroidManifest.xml- bu android ilovasining pasporti desak boladi, chunki kodlar bolgani bilan, ushbu kodga ruhsat har doim AndroidManifest.xml tomonidan beriladi.Xuddi siz forumda navzu ochasiz, ammo admin aktivlamasa befoyda bolgani kabi.Bu yerda siz .java kodsiz, admin bu AndroidManifest.
res- bu papka unda .xml, grafik va ovozli(raw papka) fayllar saqlanadi.Masalan, #1 dagi dasturda strings, values, menu kabi .xml fayllar bor, yoinki drawable papkadagi .png fayllar.
assets- bu yerda biror proyektdagi qoshimcha fayllar saqlanadi.
lib- bu yerda .so formatdagi library fayllar saqlanadi, ular c/c++ da yozilgan.
META-INF- bu papkada sertifikat va MANIFEST.MF bor, bu orqali paket ichidagi barcha fayllar ketma-ket qatorlab yozikadi(avto) va SHA-1 orqali encryp qilinadi.Masalan:
  1. Manifest-Version: 1.0
  2. Created-By: 1.0 (Xamarin)
  3.  
  4. Name: res/menu/menu.xml
  5. SHA1-Digest: sPSGVTFAIwcDAmI8djl0pvTnbKI=

*************
Librarylar(*.jar, *.aar)
Bular dasturlardagi funksiya, dizayn va ui uchun oldindan tayyorlangan modullar.
Masalan, biror dastur bor uni ishlashi uchun "import" orqali kerakli libni import qilish kerak.Masalan: [code=html[package com.uzfor;
import android.webview.webkit.*;
//webkit dan song * qoydim yani kerakli activityni bir birdan qoshmasdan hammasini birdan qoshsim(massivga oxshash)
import android.os.*;
import android.support.support.v4.*;

public class MainActivity extends Activity(){
//tushunarli boldimi? Bu yerda MainActivity class fayli aktivity sifatida yaratildi.
}[/code]
*************
Google Xml- bu oddiy xmldan farqlanmaydi, lekin oziga yarasha teglari bor.U ham xmlga oxshab <?xml version="1.0" encoding="utf-8"?> kabi boshlanadi, ammo oziga yarasha teglari bor.Bu haqda keyinroq toxtalib otamiz.
*- Kechqurun yangi funksiyalar qoshilgan #1 ilovani korib chiqamiz, aytganimday har haftada 2 ta maqola qoshiladi, bu degani bitta ilovani 0 dan takomillashtirib boramiz va undagi resurslarni organamiz.
*- uzr men ozim tushuncham boyicha yozyapman, bazi birovlarga bular umuman tushunarsiz bolishi mumkin.Etibor bermanv, men ham boshida bularni juda qiyin, qandaydir galati tasavvur qilgandim.Keyin organib chiqsam oddiy javascriptdan uncha farq qilmaydi.
NetLizard
#3
Hammaga salom!
Demak endi dasturlarimizda "SplashScreen" qoshishni organamiz.
*- Eslatib otaman, dasturlarimiz Google java va xml DTga asoslangan.
Tak birinchidan biz yangi proyekt tuzamiz.
Va keyin res/layout/ papkaga kiramiz, u yerda main.xml fayl bor, unga tegmaymiz.Yoniga qoshimcha splash.xml fayl yaratamiz, ichiga buni yozamiz:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:orientation="vertical"
  7. android:background="#000000">
  8.  
  9. <ImageView
  10. android:id="@+id/logo"
  11. android:layout_width="match_parent"
  12. android:layout_height="250dp"
  13. android:layout_centerInParent="true"
  14. android:src="@drawable/logo"
  15. android:visibility="visible"/>
  16.  
  17. <View
  18. android:layout_height="57dp"
  19. android:background="?android:attr/dividerVertical"
  20. android:layout_width="match_parent"
  21. android:visibility="invisible"/>
  22.  
  23. <TextView
  24. android:layout_height="wrap_content"
  25. android:text="SplashScreen Demo"
  26. android:textAppearance="?android:attr/textAppearanceLarge"
  27. android:layout_width="wrap_content"
  28. android:layout_gravity="center"
  29. android:textColor="#FFFFFF"
  30. android:visibility="visible"/>
  31.  
  32. <TextView
  33. android:layout_height="wrap_content"
  34. android:text="http://masteros.tk"
  35. android:textAppearance="?android:attr/textAppearanceSmall"
  36. android:layout_width="wrap_content"
  37. android:layout_gravity="center"
  38. android:textColor="#6090EF"
  39. android:visibility="visible"/>
  40.  
  41. </LinearLayout>

*- yuqorida <ImageView ichida android:src="@drawable/logo kabi satr bor, demak res/drawable papka ichiga logo.png surat joylashimiz kerak.
----------------
Endi esa src/com/company/splash/ papkaga kirib u yerda SplashActivity.java fayl tuzamiz, keyin ichiga buni yozamiz:
  1. package com.mos;
  2.  
  3. //lib va modullarni import qilamiz.
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.app.Activity;
  7. import android.content.Intent;
  8. import android.view.Menu;
  9. public class SplashActivity extends Activity {
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.splash);
  14. // Thread yaratamiz
  15. Thread background = new Thread() {
  16. public void run() {
  17. try{
  18. // 4 sekundlik thread
  19. sleep(4*1000);
  20. // 4 sekundlik splashdan song MainActivity.java intentga otkazamiz
  21. Intent i= new Intent(getBaseContext(),MainActivity.class);
  22. startActivity(i);
  23. //Splashni yoqotish
  24. finish();
  25. }
  26. catch(Exception e)
  27. {}}};
  28. // thread ochildi
  29. background.start();
  30. }
  31. @Override
  32. protected void onDestroy() {
  33. super.onDestroy();
  34. }}

Endi AndroidManifest.xmlga splashActivityni qoshib qoyamiz.
*- MainActivitydan oldin qoshamiz.
  1. <application
  2. android:icon="@drawable/ic_launcher"
  3. android:label="@string/app_name" >
  4. <activity
  5. android:label="@string/app_name"
  6. android:name=".SplashActivity" >
  7. <intent-filter >
  8. <action android:name="android.intent.action.MAIN" />
  9.  
  10. <category android:name="android.intent.category.LAUNCHER" />
  11. </intent-filter>
  12. </activity>

AIDE Menyusidan "RUN" bolimini bosamiz va kutamiz.
Ekranda: "Compiling, Dexing-Classes,Dexing-Merging,Building APK,Signing APK" yozuvlari chiqadi.
Compiling- bu kompilyatsiya qilmoqda
Dexing-Classes- MainActivity.java va SplashActivity.javani .dex(dalvik executable)ga otkazmoqda
Dexing-Merging-Merge qilmoqda
Building APK- apk tuzilmoqda
Signing APK- apk sertifikatlanmoqda(odatda testkey boladi)
Pastda esa namuna va isxodniy kodlar.
Biriktirilgan fayllar [2]:
 splash.zip (92.52 KB) (122 ↴)
 splash.apk (280.87 KB) (136 ↴)
Hanov_Dayko
#4
Bu mavzuni davom etmaymizmi
NetLizard
#5
dayko, # dayko (18.06.2019 / 20:44)
Bu mavzuni davom etmaymizmi
Хозир иложи ёк
33
Tayota
#6
Davomini intizorlik bilan kutmoqdamiz:-).....
RNDTV
#7
Ⓜⓐⓢⓣⓔⓡⓞⓢ, Lekin uzb masterlariga urgatsangiz katta savobga qolasiz
BlackCat
#8
Ⓜⓐⓢⓣⓔⓡⓞⓢ, sava, menga juda yordamiz kerak. Men android studio IDE ni yukladim. ornatdim. endi SDK kerak ekan uni ham yukladim lekin qanday ornatishni bilmayapman. SDK bolmasa dastur tuzip bolmasakan. keyn offline ishlash uchun ham plugin yukladim. uni ornatishda yordam bersez yaxshi bolardi
NetLizard
#9
BlackCat, # BlackCat (18.08.2019 / 09:19)
Ⓜⓐⓢⓣⓔⓡⓞⓢ, sava, menga juda yordamiz kerak. Men android studio IDE ni yukladim. ornatdim. endi SDK kerak ekan uni ham yukladim lekin qanday ornatishni bilmayapman. SDK bolmasa dastur tuzip bolmasakan.
Java SDK ornata olmadingizmi?
BlackCat
#10
Ⓜⓐⓢⓣⓔⓡⓞⓢ, # Ⓜⓐⓢⓣⓔⓡⓞⓢ (18.08.2019 / 23:56)
BlackCat, Java SDK ornata olmadingizmi?
yoq android studio uchun SDK TOOLS. bu bolmasa ishlab bolmas ekan dasturda. ornata olmayapman
NetLizard
#11
И так друзья. Давом етамизми курсларни ёки ёк?
Хохловчилар, личкада ёзинглар, бомаса оффтоп болади.
33
Tayota
#12
Menda 1dasturdagi
//R.java faylga layout.mainni uladik
16.
mWebView = (WebView) findViewById(R.id.webView);
kodidagi id sözini dastur error deb körsatyapti negadur?

Iltimos kodlarni yashirin tarzda yozing (adashmasam
kod (+/-)
edi) javada mavzuga kirsa sahifa hajmidan tel qotib qolyapti:-()))
NetLizard
#13
Hammaga salom
Bugun Android dasturlar tuzish organuvchilarga .pdf qollanma va isxodniy kodlar taqdim etaman.
Tili: Russian
Hajmi: 12 mb
Isxodnik hajmi: 4 mb
Jami: 16 mb
Biriktirilgan fayllar [1]:
 androiddew24hours.zip (16134.15 KB) (138 ↴)
NetLizard
#14
Dangalchi, # Dangalchi (20.08.2019 / 23:01)
Menda 1dasturdagi
//R.java faylga layout.mainni uladik
16.
mWebView = (WebView) findViewById(R.id.webView);
kodidagi id sözini dastur error deb körsatyapti negadur?

Iltimos kodlarni yashirin t
Ri.javaga hech nima yozilmaydi, korgan bolsayiz.
R.java:
Auto created file Do not modified yozilgan. Demak R.java auto tuziladi, dastur tomonidan. Tushunmagan bolsayiz .zip qilib tashlaganman. Yuklab test qiling.
NetLizard
#15
Demak mavzuni davom ettiradigan boldim. Kimga yoqmasa post yozib otirmang befoyda, postingizni baribir ochiraman.
NetLizard
#16
Demak, kim dastur tuzishni organish xohlasa ushbu AIDE- eng songgi premium versiya.
Yuklab oling va ornating.
Biriktirilgan fayllar [1]:
 aide.apk (26858.71 KB) (159 ↴)
BILINGUAL
#17
Ⓜⓐⓢⓣⓔⓡⓞⓢ, # Ⓜⓐⓢⓣⓔⓡⓞⓢ (01.09.2019 / 17:16)
Demak, kim dastur tuzishni organish xohlasa ushbu AIDE- eng songgi premium versiya.
Yuklab oling va ornating.
Menda bor lekin darsni orihigacha bormaganman chunki reklamasini qoyaveradi keyin kirib ham bo'lmaydi reklamasi dastidan
NetLizard
#18
TIMATI_13, # TIMATI_13 (01.09.2019 / 17:44)
Ⓜⓐⓢⓣⓔⓡⓞⓢ, Menda bor lekin darsni orihigacha bormaganman chunki reklamasini qoyaveradi keyin kirib ham bo'lmaydi reklamasi dastidan
Menda reklama yoq. Tak meni mavzu moderi qivoring.
NetLizard
#19
Hammaga salom! Android uchun ilovalar tuzish orgataman. Narxlar 650 qiwidan boshlanadi. Albatta xohishingizga bogliq, kimdir aytishi mumkin, nax. 650 qiwiga deb, lekin siz bunga boshqa tomondan etibor bering. Masalan, men shu orqali 27 ming r ishladim Uzbda paytimda. Xohlang organing xohlang yoq, xohish ozingizdan, hech kim majburlayotgani yoq.
Mailzero
#20
MasterOS, Siz qanchada o`rgandiz apk tuzishni?
ayni paytda men apk ishlab chiqishni bilmayman
qani bugundan hisoblab qo`yaylikchi necha kun(oy,yil)da apk tuza olar ekanman.

Kunduzi: 26°C

26 Apr 2024 yil
Joylashuv aniqlanmadi