Norėdami sukurti modulį Android studija pasirinkti

Failas > Naujas > Naujas modulis

Tada yra 2 variantai. Jei planuojate sukurti "gryną" Java biblioteką, nurodykite tipą Java biblioteka , todėl tokios bibliotekos kodas bus sukompiliuotas į JAR failą. Tai patogu, nes galite naudoti ne tik „Android“ programose. Jei ketinate naudoti „Android“ skirtus dalykus ir jums reikia kursų iš „android.*“ paketų, tada sukurkite Android biblioteka , kuris yra sudarytas į AAR failą. Tokiu atveju jums reikės pastarojo varianto.

SVARBU: Programos minSDKVersion (modulių build.gradle failai) turi atitikti arba būti didesnis nei nurodytas bibliotekos modulyje. Nurodyta buildToolsVersion turi būti nustatyta Android SDK. Kiekvienas bibliotekos modulis sukuria savo išteklių klasę (*.R.class). Kai prie projekto pridedamos „Android“ bibliotekos ir jis sukuriamas, jų ištekliai sujungiami, todėl gali kilti konfliktų. Todėl dokumentuose apibrėžtos šios sutartys:

  • Jei programos ištekliaus ID atitinka bibliotekoje esantį ištekliaus ID, tada naudojamas programos išteklius
  • Jei ištekliaus ID sutampa skirtingose ​​bibliotekose, tada naudojamas bibliotekos išteklius, kuris priklausomybių sąraše yra pirmas (esantis aukščiau priklausomybių bloke)
  • Norint išvengti aukščiau aprašytų konfliktų, rekomenduojama naudoti priešdėlį arba kitą nuoseklią išteklių pavadinimų schemą, kuri būtų unikali kiekvienam moduliui (arba unikali visai programai).

„Android“ bibliotekos prijungimas

„Android“ bibliotekos įtraukiamos kaip priklausomybės (jei biblioteka buvo sukurta kaip atskiras „AndroidStudio“ projektas). Čia taip pat yra 2 parinktys:

1. Pridėkite sukompiliuotą AAR (arba JAR) failą:

Failas > Naujas modulis – Importuoti .JAR/.AAR paketą > Kitas – įveskite kelią į ARR (arba JAR) failą > Baigti

2. Arba importuokite biblioteką iš šaltinio:

Failas > Naujas > Importuoti modulį – įveskite kelią į katalogą, kuriame yra bibliotekos šaltiniai > Baigti

SVARBU:įsitikinkite, kad „Android“ bibliotekos pavadinimas buvo pridėtas nustatymai.gradle

Įtraukti „:app“, „:core“, „:personal“, „:client“

ir atsirado failo priklausomybių bloke statyti.gradle programos

Priklausomybės ( kompiliuoti projektą(":core") kompiliuoti projektą(":asmeninis") kompiliuoti projektą(":klientas") )

Android bibliotekose gali būti išteklių, kitų JAR bibliotekų, nuosavų AndroidManifest.xml.

Sudaryta Android bibliotekos struktūra

Sudaryta Android biblioteka yra įprastas ZIP archyvas su plėtiniu .arr, kuriame yra šie reikalingi failai ir katalogai:

  • /AndroidManifest.xml
  • /classes.jar
  • /res/
  • /R.txt

ir neprivaloma:

  • /turtas/
  • /libs/ vardas.stiklainis
  • /jni/ abi_vardas/vardas.Tai kur abi_vardas vienas iš palaikomų Android ABI)
  • /proguard.txt
  • /pūkas.stiklainis


„Android Studio“: modulis nebus rodomas skiltyje „Redaguoti konfigūraciją“ (13)

Kartais „Android“ manifeste yra klaidų, nes per paleidimo / derinimo konfigūraciją yra kryžminis vaizdas, todėl pabandykite peržiūrėti, ar vienu atveju „Android“ manifeste nėra klaidų.

Į „Android Studio“ importavau projektą su keliais subprojektais.

Noriu pradėti paprojektį.

Sėkmingai sukūriau jį subprojektus build.gradle kaip modulį.

Norėdami jį paleisti, nuėjau į Vykdyti > Redaguoti konfigūracijas > „Android“ programa.

Problema. Kai bandau pasirinkti modulį, nė vienas iš jų nerodomas išskleidžiamajame meniu.

Kodėl tai?

REDAGUOTI: jis rodomas kaip „Groovy“ modulis, bet ne „Android“ programoje. Kaip aš galiu jį gauti „Android“ programoje?

goto Android >> Gradle Scripts >> Build Gradle (Modulis: programa)

įsitikinkite, kad pirmoji to failo eilutė yra tokia.

Taikyti papildinį: „com.android.library“

Man tai buvo išspręsta tiesiog iš naujo paleidus Android Studio... Kaip ir senais gerais Eclipse laikais

Mano atveju, naujokas, riaumojau savo projektą, nežinia kaip, bet jis nebeveiks ir pasiskundžiau manifestu, R, viskuo. Savo nustatymuose radau kai kuriuos panašius dalykus. Gradle neapima ":app", tik aš tai pridėjau, aš vėl buvau pakeliui.

Galiausiai išsiaiškinau, kodėl modulis nerodomas, kai pridedu AndroidTests konfigūraciją prie com.android.library modulio.

Jei build.gradle savo bibliotekos modulį programos build.gradle aplanke taip:

Sudaryti projektą (":jūsų biblioteka")

Kadangi pagal numatytuosius nustatymus bibliotekos modulis yra sudarytas naudojant išleidimo režimą, jame negalite paleisti „Android“ testų, todėl jis nebus rodomas modulių sąraše. Aš jį ištaisiau tokia modifikacija:

Pridėkite šią konfigūraciją prie bibliotekos modulio build.gradle:

PublishNonDefault true

Atlikę pakeitimus build.gradle, galite derinti savo bibliotekos kompiliaciją redaguodami programos modulio build.gradle, pavyzdžiui:

Kompiliuoti projektą (":jūsų biblioteka") + derinimas Kompiliavimo projektas (kelias: ":jūsų biblioteka", konfigūracija: "debug") + leidimasSudaryti projektą (kelias: ":jūsų biblioteka", konfigūracija: "leidimas")

Tada sinchronizuokite jį ir rasite jį sąraše.

Atrodo, kad skirtingi sprendimai tinka žmonėms, kurie skiriasi, nes ką tik uždariau projektą ir vėl jį importavus išsprendė problemą.

Turėjau panašią problemą, kai pasirinkau savo projekto pirminį katalogą, leidau Uždaryti projektą -> Ištrinti projektą iš "Android Studio" -> Importuoti projektą dešinėje pasirinkdami failą statyti.gradle .

Importuodami įsitikinkite, kad pasirinkote tinkamą build.gradle failą.

Įsitikinkite, kad jūsų statyti.gradle

Taikyti papildinį: „com.android.application“

Pakeitę sinchronizuokite iš naujo.

Taip dažniausiai nutinka kopijuojant bibliotekos projektą ir jį kuriant. Sprendimas būtų pridėti

Taikyti papildinį: „com.android.application“

faile build.gradle, o ne

Taikyti papildinį: „com.android.library“

Tada atlikite gradiento sinchronizavimą

orderEntry type="library" exported="" name="appcompat-v7-19.1.0" level="projektas" />

Aš jį sutvarkiau pridėdamas kraštų modulio nustatymai. Jie dingo. > atidaryti modulio nustatymus > Sienos > Pridėti veidus(+ ženklas viršuje)> Android. Pridėję veidus turėsite modulius.

ATNAUJINIMAS:

Norėdami gauti naujausią gradle versiją Aspektai buvo pašalinti, dabar galite tiesiogiai pridėti modulius. dešiniuoju pelės mygtuku spustelėkite projektą > atidaryti modulio nustatymus > Pridėti modulį("+" ženklo viršuje)> Telefono ir planšetinio kompiuterio programėlė(dabar galite sukurti naują modulį ir jį tinkinti).

pridėkite savo modulį prie programų. iml failas kaip: orderEntry type="module" module-name="yourmoudlename" exported=""

Kai kalbame apie papildinius ir modulines programas, pirmiausia turime omenyje įprastą vartotojo programinę įrangą. Tačiau modulinis dizainas gali būti toks pat naudingas kuriant rootkit ir užpakalines duris. Įprastomis priemonėmis atnaujinti tokią programinę įrangą yra per blyšku ir ne visada įmanoma, bet jūs galite ramiai įkelti modulį su naujomis funkcijomis per tinklą - viskas. O jei įdėsite pagrindines funkcijas į modulius ir iškart po įkėlimo juos ištrinsite, galite rimtai sugadinti reverserio tarnavimo laiką.

Vietoj įžangos

Klasikinė Java turi klasę, vadinamą java.lang.ClassLoader . Jo užduotis – programos vykdymo metu į virtualią mašiną įkelti nurodytos klasės baito kodą (failą su plėtiniu .class). Tada galite sukurti šios klasės objektą ir iškviesti jo metodus naudodami refleksiją. Tai būdas dinamiškai įkelti kodą, kuris gali būti naudojamas rašant programas su išplečiamomis funkcijomis arba, paprasčiau tariant, įskiepių palaikymu.

„Android“ neturi „Java“ virtualiosios mašinos ir „ClassLoader“ klasės, tačiau jos atitikmuo „DexClassLoader“ daro lygiai tą patį, tik atsižvelgiant į „Dalvik“ baitinį kodą (ir atitinkamai „.dex“ failus, o ne „.class“ failus). Ir, skirtingai nuo darbalaukio „Java“, kur norimą jar failą lengviau įdėti į CLASSPATH ir nesimaišyti su dinaminiu įkėlimu, „Android“ šis metodas tikrai suteikia daug privalumų, kurių pagrindinis yra tai, kad programos funkcionalumas gali būti išplėstas ir atnaujinama vartotojui to nepastebėjus ir jo nieko neklausiant. Bet kuriuo metu jūsų programa gali atsisiųsti failą su klase iš serverio, atsisiųsti ir ištrinti failą.

Be to, klases galima saugoti tiesiogiai APK pakete ir įkelti programos paleidimo metu. Nauda čia ta, kad įkeltų klasių kodas bus atskirtas nuo pačios programos kodo ir APK bus „netinkamu adresu“; Tokie įrankiai, kaip apktool, kuriuos mėgsta naudoti reversai, jų tiesiog nematys. Kita vertus, tai labiau patikima, nes įprastas reverseris greitai supras, kas yra kas.

Kad ir kaip būtų, dinaminis klasių įkėlimas yra labai naudingas dalykas rašant ne visai „baltas“ programas, todėl bet kuris saugumo specialistas turėtų žinoti, kaip šis mechanizmas veikia ir kaip jis naudojamas trojanuose.

Paprasčiausias pavyzdys

// Kelias į jar archyvą su mūsų klase String modFile = "/sdcard/myapp/module.jar"; // Kelias į privatų programos katalogą String appDir = getApplicationInfo().dataDir; // Įkelti failą iš disko DexClassLoader classLoader = new DexClassLoader(modFile, appDir, null, getClass().getClassLoader()); // Įkelkite klasę, sukurkite objektą ir pabandykite iškviesti run() metodą naudodami refleksijos try ( Class c = classLoader.loadClass("com.example.modules.simple.Module"); Metodas m = c.getMethod( "paleisti", null); m.invoke(c.newInstance(), null); ) gaudymas (e išimtis) (e.printStackTrace(); )

Apskritai čia viskas paprasta: kodas įkelia jar archyvą /sdcard/myapp/module.jar su mūsų klase, iš jo įkelia klasę com.example.modules.simple.Module, sukuria objektą ir iškviečia run() metodas. Atkreipkite dėmesį į tris dalykus:

  • „DexClassLoader“ gali įkelti tiek „paprastus“ .dex failus, tiek jar archyvus, pastarieji pageidautina dėl suspaudimo ir galimybės naudoti skaitmeninį parašą;
  • antrasis DexClassLoader konstruktoriaus argumentas yra katalogas, kuriame saugomas optimizuotas baito kodas (odex), dėl paprastumo nurodome pačios programos privatų katalogą;
  • kaip loadClass metodo argumentą, visada turite nurodyti klasės adresą kartu su paketo pavadinimu.

Norėdami patikrinti šio kodo veikimą, sukurkime paprastą modulį:

Paketas com.example.modules.simple.Module; importuoti android.util.Log; public class Module ( public void run() ( Log.d("Modulis", "Aš gyvas!!!"); ) )

Neskubėkite kurdami naują projektą „Android Studio“, galite įvesti šį kodą užrašų knygelėje ir sudėti jį į jar archyvą tiesiai iš komandinės eilutės:

Javac -classpath /path/to/sdk/platforms/android-23/android.jar Module.java /path/to/sdk/build-tools/23.0.3/dx --dex --output=module.jar Modulis. klasė

Įsitikinkite, kad platformos/android-23 ir build-tools/23.0.3 katalogai yra, jūsų atveju jų pavadinimai gali skirtis.

Jei viskas klostysis sklandžiai, turėtumėte gauti modulį.jar failą. Belieka pridėti įkroviklio kodą prie programos, įdėti modulį.jar į atminties kortelę, sukurti ir paleisti programą.

Žemyn su apmąstymais

Atspindys yra geras dalykas, bet šiuo atveju jis tik trukdo. Nesunku iškviesti vieną metodą be argumentų, tačiau jei norime, kad mūsų programoje būtų sukurtas modulinis API su daugybe metodų, kuriems reikia kelių parametrų, turime sugalvoti ką nors patogesnio. Pavyzdžiui, naudokite iš anksto nustatytą sąsają, kurią įgyvendins kiekvienas modulis.

Taikydami šį metodą aukščiau pateiktam pavyzdžiui, gauname šiuos tris failus:

  1. ModuleInterface.java failas su API aprašymu: paketas com.example.modules; viešoji sąsaja ModuleInterface ( public void run (); )
  2. Failas Module.java su mūsų modulio įgyvendinimu: paketas com.example.modules.simple.Module; importuoti android.util.Log; public class Modulis įgyvendina ModuleInterface ( public void run() ( Log.d("Modulis", "Aš gyvas!!!"); ) )
  3. Nauja modulio įkėlimo programa (įdėkite į savo programą): String modFile = "/sdcard/myapp/module.jar"; String appDir = getApplicationInfo().dataDir; DexClassLoader classLoader = naujas DexClassLoader(modFile, appDir, null, getClass().getClassLoader()); // Įkelti klasę ir sukurti objektą su sąsaja ModuleInterface ModuleInterface modulis; pabandyk (klasėclass = classLoader.loadClass("com.example.modules.simple.Module"); modulis = (ModuleInterface) class.newInstance(); ) gaudyti (e išimtis) ( e.printStackTrace(); ) module.run()

Tai viskas. Dabar su moduliu galime dirbti kaip su įprastu objektu. Be to, pati sistema atmeta modulius (klases), kurie yra nesuderinami su sąsaja įkėlimo etape, todėl mums nereikia savęs klausti, ar modulyje yra mums reikalingas metodas.

Kai yra daug modulių

Mes išsiaiškinome vieną modulį, bet ką daryti, jei jų yra daug? Kaip registruoti šiuos modulius ir nepasiklysti tarp jų? Tiesą sakant, viskas paprasta - tam galite naudoti hashmapą. Dar kartą pakeiskime įkrovos tvarkyklę:

Ir toliau prieinama tik nariams

1 variantas. Prisijunkite prie „svetainės“ bendruomenės ir perskaitykite visą svetainėje esančią medžiagą

Narystė bendruomenėje nurodytu laikotarpiu suteiks prieigą prie VISOS „Hacker“ medžiagos, padidins asmeninę kaupiamąją nuolaidą ir leis kaupti profesionalų „Xakep Score“ įvertinimą!

Moduliai suteikia programos šaltinio kodo, išteklių failų ir programos lygio nustatymų, pvz., modulio lygio kūrimo failo ir „Android“ aprašo failo, sudėtinį rodinį. Kiekvienas modulis gali būti kuriamas, išbandytas ir derinamas atskirai.

„Android Studio“ naudoja modulius, kad būtų lengva pridėti naujų įrenginių prie projekto. Atlikdami kelis paprastus „Android Studio“ veiksmus, galite sukurti modulį, kuriame būtų kodas, būdingas įrenginio tipui, pvz., „Wear OS“ arba „Android TV“. „Android Studio“ automatiškai sukuria modulių katalogus, pvz., šaltinių ir išteklių katalogus ir numatytasis failas build.gradle, tinkamas įrenginio tipui. Be to, „Android Studio“ sukuria įrenginio modulius su rekomenduojamomis kūrimo konfigūracijomis, pvz., naudoja „Android TV“ moduliams skirtą „Leanback“ biblioteką.

Šiame puslapyje aprašoma, kaip pridėti naują modulį konkrečiam įrenginiui.

„Android Studio“ taip pat leidžia lengvai pridėti biblioteką arba „Google Cloud“ modulį prie projekto. Norėdami gauti daugiau informacijos apie bibliotekos modulio kūrimą, žr. Bibliotekos modulio kūrimas .

Sukurkite naują modulį

Norėdami pridėti naują modulį prie projekto naujam įrenginiui, atlikite šiuos veiksmus:

  1. Spustelėkite failą > Nauja > Naujas modulis.
  2. Viduje Sukurti naują modulį Pasirodžiusiame lange „Android Studio“ siūlo šiuos įrenginio modulius:
    • Telefono ir planšetinio kompiuterio modulis
    • „Wear“ OS modulis
    • Android TV modulis
    • stiklo modulis
    Pasirinkite norimo įrenginio modulį ir spustelėkite Kitas.
  3. Viduje Sukonfigūruokite naują modulį formą, įveskite šią informaciją:
    • programos pavadinimas: šis pavadinimas naudojamas kaip naujojo modulio programų paleidimo priemonės piktogramos pavadinimas.
    • modulio pavadinimas: Šis tekstas naudojamas kaip aplanko, kuriame matomas šaltinio kodas ir išteklių failai, pavadinimas.
    • paketo pavadinimas: Tai yra jūsų modulio kodo Java vardų erdvė. Jis pridedamas kaip paketo atributas modulio „Android“ aprašo faile .
    • Minimalus SDK: šis nustatymas nurodo žemiausią Android platformos versiją, kurią palaiko programos modulis. Ši reikšmė nustato atributą minSdkVersion faile build.gradle, kurį vėliau galėsite redaguoti.

    Tada spustelėkite Kitas.

  4. Priklausomai nuo to, kurį įrenginio modulį pasirinkote, kitame puslapyje rodomi tinkami kodo šablonai, kuriuos galite pasirinkti naudoti kaip pagrindinę veiklą. Spustelėkite veiklos šabloną, su kuriuo norite pradėti, tada spustelėkite Kitas. Jei veiklos jums nereikia, spustelėkite Pridėti jokios veiklos, spustelėkite Baigti, ir tada baigsite.
  5. Jei pasirinkote veiklos šabloną, įveskite savo veiklos nustatymus Tinkinkite veiklą puslapį. Daugumoje šablonų prašoma an veiklos pavadinimas, Išdėstymo pavadinimas, Pavadinimas, ir šaltinio kalba, bet kiekviename šablone yra konkrečios veiklos nustatymai. Spustelėkite Baigti. Kai kuriate programos modulį su veiklos šablonu, galite iš karto paleisti ir išbandyti modulį savo įrenginyje.

Android Studio sukuria visus reikalingus failus naujam moduliui ir sinchronizuoja projektą su naujojo modulio gradle failais. Pridėjus modulį naujam įrenginiui, į modulio kūrimo failą įtraukiamos visos reikalingos tikslinio įrenginio priklausomybės.

Kai Gradle projekto sinchronizavimas bus baigtas, naujas modulis pasirodys projektą langas kairėje pusėje. Jei nematote naujo modulio aplanko, įsitikinkite, kad lange rodomas „Android“ rodinys .

Importuokite modulį

Norėdami importuoti esamą modulį į savo projektą, atlikite šiuos veiksmus:

  1. Spustelėkite Failas > Naujas > Importavimo modulis.
  2. Viduje šaltinio katalogas laukelyje įveskite arba pasirinkite modulio (-ių), kurį (-iuos) norite importuoti, katalogą:
    • Jei importuojate vieną modulį, nurodykite jo šakninį katalogą.
    • Jei iš projekto importuojate kelis modulius, nurodykite projekto aplanką. Kiekvienam aplanke esančio modulio langelis rodomas šaltinio vieta ir modulio pavadinimas. Įsitikinkite, kad Importuoti pažymėtas kiekvieno modulio, kurį norite importuoti, langelis.
    Jei jūsų modulis (-iai) turi kitų priklausomybių, jie bus įtraukti į importavimo sąrašą Papildomi reikalingi moduliai.
  3. Įveskite norimą (-us) modulio pavadinimą (-us). modulio pavadinimas laukai).
  4. Spustelėkite Baigti.

Tolesni žingsniai

Pridėję naują modulį galite keisti modulio kodą ir išteklius, konfigūruoti modulio kūrimo nustatymus ir sukurti modulį. Taip pat galite paleisti ir derinti modulį kaip ir bet kurią kitą programą.

  • Norėdami sužinoti apie modulio kūrimo parametrus, žr. Modulio lygio kūrimo failą.
  • Norėdami sukurti ir paleisti konkretų modulį, žr. skyrių Kito modulio pasirinkimas ir kūrimas .

Taip pat norėsite pridėti kodą ir išteklius, kad tinkamai palaikytumėte naują įrenginį. Norėdami gauti daugiau informacijos apie tai, kaip kurti programų modulius skirtingiems įrenginių tipams, žr. atitinkamą dokumentaciją:

  • „WearOS“ moduliams:
  • „Android TV“ moduliams:
  • Stiklo moduliams: GDK greitoji pradžia

Kurdami naują modulį galite sukurti nepriklausomą nuo įrenginio kodą, kuris jau yra dubliuotas kitame programos modulyje. Užuot saugoję pasikartojantį kodą, apsvarstykite galimybę perkelti bendrinamą kodą į bibliotekos modulį ir pridėti biblioteką kaip priklausomybę prie programos modulių. Norėdami gauti daugiau informacijos apie bibliotekos modulio kūrimą ir įtraukimą kaip priklausomybę, žr

Pastaruoju metu „Google I/O“, 2018 m, tarp daugelio naujovių, taip pat paskelbė apie naujo paraiškos formato pridėjimą.

Šis formatas vadinamas Android App Bundle ir yra patobulintas būdas kurti programą. Su juo galite lengvai optimizuoti programos dydį, neatlikdami jokių kodo pakeitimų. „Android App Bundle“ apima visą sukompiliuotą kodą ir išteklius, tada išfiltruojama, kas nereikalinga konkrečiam įrenginiui.

Svarbu!Šiuo metu „Android App Bundle“ veikia tik „Android Studio“ peržiūros versijoje. Naujausia versija Android Studio 3.2 Canary prieinama .

Android App Bundle formatas

Android App Bundle yra failas (su plėtiniu .aab), kuris įkeltas į „Google“. Kiekviename pakete yra sukompiliuotas kodas ir ištekliai, skirti visiems programos moduliams ir palaikomoms įrenginio konfigūracijoms.

Paprasčiau tariant, paketai yra pasirašyti ZIP failai, kurie suskirsto programos kodą ir išteklius į modulius.

Iš šių modulių „Google Play“ generuoja įvairius APK, kurie pateikiami naudotojams, pvz., pagrindinius APK, dinaminių funkcijų APK, konfigūracijos APK ir (įrenginiams, kurie nepalaiko padalintų APK) kelių APK. Mėlynos spalvos katalogai rodo kodą ir išteklius, kuriuos „Google Play“ naudoja kurdama kiekvieno modulio konfigūracijos APK.

Pastaba: kiekvienai unikaliai programai reikia sukurti paketą arba programos ID. Tai yra, jei kurdami skirtingus APK programoje naudojate kelis produktų variantus, o kiekviena iš šių šakų naudoja unikalų programos ID, turėsite sukurti atskirą kiekvienos šakos rinkinį.

Kiekvieno modulio kodas ir ištekliai sutvarkyti panašiai kaip standartiniai APK, o tai prasminga, nes kiekvienas iš šių modulių gali būti sugeneruotas kaip atskiras APK. Toliau galite pamatyti išsamesnį kai kurių „Android App Bundle“ failų ir katalogų aprašą:

  • bazė/, funkcija1/, funkcija2/. Kiekvienas iš šių katalogų reiškia programos modulį. Pagrindinės programos modulis visada yra paketo baziniame kataloge. Katalogai su papildomomis funkcijomis, kurių kiekvienai priskirtas specialus pavadinimas, yra atskirai.
  • failus Protokolo buferis (.pb). Šiuose failuose yra metaduomenų, kurie padeda apibūdinti paketo turinį programų parduotuvėse. Pavyzdžiui, BundleConfig.pb, esantis pagrindiniame paketo kataloge, pateikia informaciją apie patį paketą, pvz., kokią versiją statyti įrankius naudojamas surinkimui. Kiti failai kaip kreiptis.pb ir gimtoji.pb, aprašykite, kaip tam tikras kodas ir ištekliai turėtų būti naudojami skirtingoms įrenginio konfigūracijoms. „Google Play“ naudoja šią informaciją, kad sukurtų APK, optimizuotą naudotojo įrenginiui.
  • manifestas/. Skirtingai nei APK, paketai saugo kiekvieno modulio AndroidManifest.xml failą atskirame kataloge.
  • dex/. Skirtingai nuo APK, paketai saugo kiekvieno modulio DEX failus atskirame kataloge.
  • šaknis/. Šiame kataloge saugomi failai, kurie vėliau perkeliami į katalogą šaknis bet koks APK, kuriame yra modulis, kuriame yra šis katalogas. Pavyzdžiui, katalogas bazė/šaknis/ pakete gali būti Java išteklių, kuriuos įkelia programa naudojanti Class.getResources(). Šie failai vėliau perkeliami į programos šakninį APK katalogą ir kiekvieną kelis APK, kuriuos generuoja „Google Play“. Taip pat išsaugomi šio katalogo keliai, ty pakatalogiai taip pat perkeliami kartu su šaknine.
    Pastaba: jei šio katalogo turinys prieštarauja kitiems APK šakninio failo failams ir katalogams, „Play Console“ atmes paketo atsisiuntimą. Pavyzdžiui, negalėsite įtraukti šakninio/lib/ katalogo, nes jis prieštaraus jau APK esančiam lib katalogui.
  • res/, lib/, aktyvai/.Šie katalogai yra identiški tiems, kurie naudojami standartiniame APK. Atsisiųsdama programą „Google Play“ tikrina šiuos katalogus ir paketus tik dėl failų, kurie atitinka tikslinio įrenginio konfigūraciją.

„App Bundle“ kūrimas naudojant „Android Studio“.

Paketo kūrimas naudojant „Android Studio“ yra labai panašus į APK kūrimą. Norėdami surinkti, tiesiog pasirinkite iš meniu Sukūrimas – kūrimo paketas (-ai) / APK (-ai) > kūrimo rinkinys (-iai) ir IDE sukurs pasirinktos kūrimo parinkties paketą ir įdės jį į katalogą //build/outputs/bundle/.

Jei programos derinimo versijai sukurtas paketas, „Android Studio“ automatiškai pasirašys paketą naudodama derinimo pasirašymo raktą. Norint įkelti rinkinį į „Google Play“, jis turi būti pasirašytas.

Kai „Android Studio“ baigs kurti pasirašytą paketą, jį galima atidaryti ir analizuoti. Bundle analizė leidžia patikrinti turinį ir veikia panašiai APK analizatorius.

Norėdami sukurti „App Bundle“, IDE naudoja tą patį atvirojo kodo įrankį, vadinamą ryšulio įrankis, kurią „Google Play“ naudoja, kad vėliau konvertuotų paketą į pasirašytus APK.

Prieš įkeliant rinkinį į „Google Play Console“, jį reikia pasirašyti. Norėdami sukurti pasirašytą programos rinkinį, atlikite šiuos veiksmus:


„Android Studio“ baigus kurti pasirašytą paketą, jį galima rasti ir analizuoti pasirinkus atitinkamą parinktį iššokančiame pranešime. Jei pasirinkote eksportuoti pasirašymo raktą, galite greitai pereiti prie jo spustelėję rodyklę žemyn apatiniame dešiniajame tostos kampe, kad jį išskleistumėte, ir tada pasirinkę Rodyti eksportuotą rakto failą.

„App Bundle“ įkėlimas į „Google Play Console“.

Sukūrus paketą, jį galima įkelti į „Google Play“, kad būtų galima patikrinti, išbandyti arba paskelbti programą. Prieš pradedant darbą, turi būti įvykdytos šios sąlygos:

  1. Registruokitės į programą „Google Play“ programų pasirašymas.
  2. Jei programoje yra dinaminių funkcijų modulių, ją galima atsisiųsti ir išbandyti naudojant „Google Play Console“ vidinį bandymo takelį. Tačiau norėdami paskelbti programą, turite sutikti su dinaminių funkcijų programa, kuri šiuo metu yra beta versijos.
  3. „Google Play“ palaiko ne didesnių programų atsisiuntimą 100 MB.

APK analizavimas naudojant „File Explorer“.

Kai paketas įkeliamas, „Google Play“ automatiškai generuoja išskaidytus APK ir kelių APK visoms įrenginio konfigūracijoms, kurias palaiko programa. „Play Console“ galite naudoti „App Bundle Explorer“, kad peržiūrėtumėte visus „Google Play“ sugeneruotus APK. analizuoti duomenis, pvz., palaikomus įrenginius ir APK dydžio taupymą; sugeneruotų APK įkėlimas testavimui.

Programos atnaujinimas

Įkėlus programą į Play Console, norint atnaujinti programą, pakanka padidinti versijos kodą, taip pat sukurti ir įkelti naują paketą. Tada „Google Play“ sugeneruos atnaujintus APK su naujos versijos kodu ir prireikus pateiks juos.

Išvada

„Android App Bundle“ naudojimas turi daug privalumų optimizuojant APK programas. Naudodami šį metodą atnaujinome vieną iš savo programų – „Wi-Fi Password Manager“, pakeisdami numatytąjį APK „App Bundle“. Taigi APK failų dydis sumažėjo visu megabaitu, o tai labai geras rezultatas.

Be to, „Google“ šiuo metu testuoja „App Bundle“ papildymą – „Dynamic“ funkcijų modulius, su kuriais galite padalinti bazinį APK į dalis, kurios prireikus bus atsisiunčiamos, kol kas ši technologija yra beta versijoje.

Galbūt vienintelis paketų trūkumas šiuo metu yra būtinybė naudoti „Android Studio“ peržiūros versiją, tačiau ši problema yra laikina.