{"id":37565,"date":"2019-10-31T22:18:20","date_gmt":"2019-10-31T19:18:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sborka-android-proekta-v-docker-kontejnere\/"},"modified":"2019-10-31T22:18:20","modified_gmt":"2019-10-31T19:18:20","slug":"sborka-android-proekta-v-docker-kontejnere","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sborka-android-proekta-v-docker-kontejnere","title":{"rendered":"Nd\u00ebrtimi i projektit Android n\u00eb nj\u00eb kontejner Docker","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Duke zhvilluar nj\u00eb projekt p\u00ebr platform\u00ebn Android, madje edhe m\u00eb i vogli, her\u00ebt a von\u00eb p\u00ebrballesh me mjedisin p\u00ebr zhvillim. P\u00ebrve\u00e7 Android SDK, \u00ebsht\u00eb e nevojshme t\u00eb kesh versionin m\u00eb t\u00eb fundit t\u00eb Kotlin, Gradle, platform-tools, dhe build-tools. Dhe n\u00ebse n\u00eb makin\u00ebn e zhvilluesit k\u00ebto var\u00ebsi zgjidhen n\u00eb mas\u00eb t\u00eb madhe me ndihm\u00ebn e Android Studio IDE, n\u00eb serverin CI\/CD \u00e7do p\u00ebrdit\u00ebsim mund t\u00eb shnd\u00ebrrohet n\u00eb nj\u00eb shqet\u00ebsim. Dhe n\u00ebse n\u00eb zhvillimin web, zgjidhja e problematik\u00ebs s\u00eb mjedisit \u00ebsht\u00eb b\u00ebr\u00eb standard me Docker, pse t\u00eb mos provohet t\u00eb zgjidhet nj\u00eb problem i ngjash\u00ebm edhe n\u00eb zhvillimin e Android-it...<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nP\u00ebr ata q\u00eb nuk e din\u00eb se \u00e7far\u00eb \u00ebsht\u00eb Docker \u2014 n\u00ebse e shpjegojm\u00eb thjesht, ajo \u00ebsht\u00eb nj\u00eb mjet p\u00ebr krijimin e ashtuquajturave \"kontejner\u00eb\" ku p\u00ebrmban nj\u00eb b\u00ebrtham\u00eb minimale t\u00eb OS dhe nj\u00eb grup t\u00eb nevojsh\u00ebm softuer\u00ebsh, t\u00eb cilat ne mund t'i implementojm\u00eb kudo, duke ruajtur n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb mjedisin. \u00c7far\u00eb do t\u00eb ket\u00eb n\u00eb kontejnerin ton\u00eb p\u00ebrcaktohet n\u00eb Dockerfile, i cili m\u00eb pas p\u00ebrpunohet n\u00eb nj\u00eb imazh q\u00eb mund t\u00eb ekzekutohet kudo dhe q\u00eb ka pronat e idempotenc\u00ebs.<\/p>\n<p>Procesi i instalimit dhe bazat e Docker-it jan\u00eb p\u00ebrshkruar mir\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">faqen zyrtare<\/a><\/noindex>. Prandaj, duke u hedhur pak p\u00ebrpara, ky \u00ebsht\u00eb Dockerfile q\u00eb kemi krijuar<\/p>\n<pre><code class=\"plaintext\"># \u0422.\u043a. \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 Android-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Gradle, \n# \u0438 \u043f\u043e \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e\u043c\u0443 \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0435\u0441\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Docker-\u043e\u0431\u0440\u0430\u0437 \n# \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u0441 \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Gradle\nFROM gradle:5.4.1-jdk8\n\n# \u0417\u0430\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u043e\u0439 \u0434\u043b\u044f Android SDK \u0438 \n# \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\nENV SDK_URL=\"https:\/\/dl.google.com\/android\/repository\/sdk-tools-linux-3859397.zip\" \n    ANDROID_HOME=\"\/usr\/local\/android-sdk\" \n    ANDROID_VERSION=28 \n    ANDROID_BUILD_TOOLS_VERSION=28.0.3\n\n# \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443, \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430 SDK \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432,\n# \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c\nRUN mkdir \"$ANDROID_HOME\" .android \n    &amp;&amp; cd \"$ANDROID_HOME\" \n    &amp;&amp; curl -o sdk.zip $SDK_URL \n    &amp;&amp; unzip sdk.zip \n    &amp;&amp; rm sdk.zip \n# \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u0445 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443 \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \n# \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u043c\u0438. \u041d\u0430 \u043e\u0444. \u0441\u0430\u0439\u0442\u0435 Android \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0447\u0442\u043e \u043c\u044b \n# \u043c\u043e\u0436\u0435\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0441 \u043c\u0430\u0448\u0438\u043d \u0433\u0434\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u044d\u0442\u0438 \n# \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0438 \u0438 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \n# \u0438\u0445 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f\n    &amp;&amp; mkdir \"$ANDROID_HOME\/licenses\" || true \n    &amp;&amp; echo \"24333f8a63b6825ea9c5514f83c2829b004d1\" &gt; \"$ANDROID_HOME\/licenses\/android-sdk-license\" \n    &amp;&amp; echo \"84831b9409646a918e30573bab4c9c91346d8\" &gt; \"$ANDROID_HOME\/licenses\/android-sdk-preview-license\"    \n\n# \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 SDK \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 build-tools, platform-tools\nRUN $ANDROID_HOME\/tools\/bin\/sdkmanager --update\nRUN $ANDROID_HOME\/tools\/bin\/sdkmanager \"build-tools;${ANDROID_BUILD_TOOLS_VERSION}\" \n    \"platforms;android-${ANDROID_VERSION}\" \n    \"platform-tools\"\n<\/code><\/pre>\n<p>\nE ruajm\u00eb at\u00eb n\u00eb dosjen e projektit ton\u00eb Android dhe nis\u00ebm nd\u00ebrtimin e kontejnerit me komand\u00ebn<\/p>\n<pre><code class=\"bash\">docker build -t android-build:5.4-28-27 .<\/code><\/pre>\n<p>\nParametri <i>-t<\/i> p\u00ebrcakton tag ose emrin e kontejnerit ton\u00eb, i cili zakonisht p\u00ebrb\u00ebhet nga emri dhe versioni i tij. N\u00eb rastin ton\u00eb, ne e quajm\u00eb android-build dhe n\u00eb version caktojm\u00eb grumbullin e versioneve t\u00eb gradle, android-sdk dhe platform-tools. M\u00eb von\u00eb do t\u00eb jet\u00eb m\u00eb e leht\u00eb t\u00eb gjejm\u00eb imazhin q\u00eb na nevojitet sipas emrit duke p\u00ebrdorur nj\u00eb \"version\" t\u00eb till\u00eb.<\/p>\n<p>Pasi nd\u00ebrtimi t\u00eb ket\u00eb p\u00ebrfunduar, ne mund ta p\u00ebrdorim imazhin ton\u00eb lokalisht, mund ta ngarkojm\u00eb me komand\u00ebn <i>docker push<\/i> n\u00eb nj\u00eb depo publike ose private imazhe p\u00ebr ta shkarkuar at\u00eb n\u00eb makina t\u00eb tjera.<\/p>\n<p>Si nj\u00eb shembull, le t\u00eb nd\u00ebrtojm\u00eb projektin lokalisht. P\u00ebr k\u00ebt\u00eb n\u00eb dosjen me projektin ekzekutojm\u00eb komand\u00ebn<\/p>\n<pre><code class=\"bash\">docker run --rm -v \"$PWD\":\/home\/gradle\/ -w \/home\/gradle android-build:5.4.1-28-27 gradle assembleDebug<\/code><\/pre>\n<p>\nLe ta analizojm\u00eb se \u00e7far\u00eb do t\u00eb thot\u00eb ajo: <\/p>\n<p><i>docker run<\/i> \u2014 vet\u00eb komanda p\u00ebr ekzekutimin e imazhit<br \/>\n<i>-rm<\/i> \u2014 do t\u00eb thot\u00eb se pas ndalimit t\u00eb kontejnerit ai fshin gjith\u00e7ka q\u00eb \u00ebsht\u00eb krijuar gjat\u00eb jet\u00ebs s\u00eb tij<br \/>\n<i>-v \"\u20ac{PWD}\" :\/home\/gradle\/<\/i> \u2014 monton dosjen aktuale me projektin ton\u00eb Android n\u00eb dosjen e brendshme t\u00eb kontejnerit \/home\/gradle\/<br \/>\n<i>-w \/home\/gradle<\/i> \u2014 p\u00ebrcakton direktorin\u00eb e pun\u00ebs s\u00eb kontejnerit<br \/>\n<i>android-build:5.4.1-28-27<\/i> \u2014 emri i kontejnerit ton\u00eb q\u00eb kemi nd\u00ebrtuar<br \/>\n<i>gradle assembleDebug<\/i> \u2014 komanda e nd\u00ebrtimit q\u00eb mbledh projektin ton\u00eb<\/p>\n<p>N\u00ebse gjith\u00e7ka shkon mir\u00eb, pas disa sekondash\/minutash, do t\u00eb shihni n\u00eb ekranin tuaj di\u00e7ka si <b>ND\u00cbRTIM I SUKSESHEM n\u00eb 8m 3s<\/b>! N\u00eb dosjen app\/build\/output\/apk do t\u00eb jet\u00eb aplikacioni i nd\u00ebrtuar.<\/p>\n<p>N\u00eb m\u00ebnyr\u00eb t\u00eb ngjashme, mund t\u00eb kryhen detyra t\u00eb tjera gradle \u2014 t\u00eb kontrolloni projektin, t\u00eb ndizni teste etj. Avantazhi kryesor \u2014 n\u00ebse nevojitet nd\u00ebrtimi i projektit n\u00eb nj\u00eb makin\u00eb tjet\u00ebr, nuk na nevojitet t\u00eb shqet\u00ebsohemi p\u00ebr instalimin e gjith\u00eb ambientit dhe mjafton t\u00eb shkarkojm\u00eb imazhin e nevojsh\u00ebm dhe ta ndiznim atje.<\/p>\n<p>Kontejneri nuk ruan asnj\u00eb ndryshim, dhe \u00e7do nd\u00ebrtim fillon nga zero, gj\u00eb q\u00eb garanton identitetin e nd\u00ebrtimit pavar\u00ebsisht vendit ku ndizet, por nga ana tjet\u00ebr, \u00e7do her\u00eb duhet t\u00eb shkarkojm\u00eb t\u00eb gjitha var\u00ebsit\u00eb dhe t\u00eb kompilohet e gjith\u00eb kodi nga e para, \u00e7ka ndonj\u00ebher\u00eb mund t\u00eb marr\u00eb nj\u00eb koh\u00eb t\u00eb konsiderueshme. Prandaj, p\u00ebrve\u00e7 nd\u00ebrtimit t\u00eb zakonsh\u00ebm \"t\u00eb ftoht\u00eb\", kemi nj\u00eb variant t\u00eb nd\u00ebrtimit me ruajtjen e ashtuquajturit \"cache\", ku ruajm\u00eb dosjen ~\/.gradle thjesht duke e kopjuar n\u00eb dosjen e pun\u00ebs s\u00eb projektit, dhe n\u00eb fillim t\u00eb nd\u00ebrtimit t\u00eb ardhsh\u00ebm e kthejm\u00eb p\u00ebrs\u00ebri. T\u00eb gjitha procedurat e kopjimit i kemi nxjerr\u00eb n\u00eb skenar\u00eb t\u00eb ve\u00e7ant\u00eb dhe vet\u00eb komanda e ndezjes \u00ebsht\u00eb dukur k\u00ebshtu<\/p>\n<pre><code class=\"bash\">docker run --rm -v \"$PWD\":\/home\/gradle\/ -w \/home\/gradle android-build:5.4.1-28-27 \/bin\/bash -c \".\/pre.sh; gradle assembleDebug; .\/post.sh\"<\/code><\/pre>\n<p>\nSi rezultat, koha mesatare e nd\u00ebrtimit t\u00eb projektit \u00ebsht\u00eb zvog\u00ebluar disa her\u00eb (n\u00eb var\u00ebsi t\u00eb numrit t\u00eb var\u00ebsive n\u00eb projekt, por projekti mesatar tani nd\u00ebrtohet p\u00ebr 1 minut\u00eb n\u00eb vend t\u00eb 5 minutave).<\/p>\n<p>T\u00eb gjitha k\u00ebto vet\u00ebkuptohen vet\u00ebm n\u00ebse keni nj\u00eb server CI\/CD t\u00eb brendsh\u00ebm, p\u00ebr t\u00eb cilin kujdeseni vet\u00eb. Por tani ka shum\u00eb sh\u00ebrbime cloud n\u00eb t\u00eb cilat t\u00eb gjitha k\u00ebto probleme jan\u00eb zgjidhur dhe nuk duhet t\u00eb shqet\u00ebsoheni p\u00ebr to, dhe cil\u00ebsit\u00eb e nevojshme t\u00eb nd\u00ebrtimit mund t'i specifikoni gjithashtu n\u00eb cil\u00ebsimet e projektit.<\/p>\n<p class=\"for_users_only_msg\">Vet\u00ebm p\u00ebrdoruesit e regjistruar mund t\u00eb marrin pjes\u00eb n\u00eb anket\u00eb. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Hyni<\/a><\/noindex>, ju lutem.<\/p>\n<h2 class=\"default-block__polling-title\">A e mbani sistemin CI\/CD brenda apo p\u00ebrdorni nj\u00eb sh\u00ebrbim t\u00eb jasht\u00ebm?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    P\u00ebrdorim serverin e brendsh\u00ebm<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    P\u00ebrdorim sh\u00ebrbimin e jasht\u00ebm<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Nuk p\u00ebrdorim CI\/CD<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Tjet\u00ebr<\/p>\n<\/li>\n<\/ul>\n<p>    Votuan 42 p\u00ebrdorues. U p\u00ebrmbajt\u00ebn 16 p\u00ebrdorues.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465193\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Android, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041a\u0440\u043e\u043c\u0435 Android SDK, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f Kotlin, Gradle, platform-tools, build-tools. \u0418 \u0435\u0441\u043b\u0438 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043c\u0435\u0440\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Android Studio IDE, \u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 CI\/CD \u043a\u0430\u0436\u0434\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37565","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Android, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sborka-android-proekta-v-docker-kontejnere\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0431\u043e\u0440\u043a\u0430 Android-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Android, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sborka-android-proekta-v-docker-kontejnere\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Nd\u00ebrtimi i projektit Android n\u00eb konteiner Docker | ProHoster","description":"Duke zhvilluar nj\u00eb projekt p\u00ebr platform\u00ebn Android, madje edhe m\u00eb i vogli, nj\u00eb her\u00eb a m\u00eb shum\u00eb duhet t\u00eb p\u00ebrballeni me ambientin p\u00ebr zhvillim.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sborka-android-proekta-v-docker-kontejnere","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0431\u043e\u0440\u043a\u0430 Android-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 | ProHoster","og:description":"\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Android, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sborka-android-proekta-v-docker-kontejnere","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:20+00:00","article:modified_time":"2019-10-31T19:18:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37565","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:24:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:24:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=37565"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37565\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}