Office week Slevový týden - Květen
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
30 % bodů zdarma na online výuku díky naší Slevové akci!

Lekce 9 - Android programování - Dokončení implementace kalkulačky

V minulé lekci, Android programování - Implementace Java kódu kalkulačky, jsme implementovali Java kód jednoduché kalkulačky.

V dnešním tutoriálu si ukážeme ladění a pak vygenerujeme soubor .apk.

Testování a ladění aplikace

Android Studio nám nabízí několik nástrojů, které nám pomohou při ladění aplikace nebo s hledáním chyb v kódu, které by mohly způsobovat pády aplikace. Pojďme se s nimi hodně stručně seznámit! Nejprve si popsané pomocníky vyjmenujeme:

  • 1) Android Profiler
  • 2) Debugging a boj s errory
  • 3) Nástroj Logcat

1. Android Profiler

Nástroj Android Profiler je dostupný od verze AS 3.0. Tento nástroj poskytuje data v reálném čase, která nám pomohou zjistit, jak naše aplikace využívá prostředky jako procesor, paměť, připojení k internetu a baterii. Android Profiler v AS otevřeme v menu pod položkou View -> Tool Windows -> Profiler. Otevře se nám okno (viz. následující obrázek). Abychom viděli nějaká data, musíme spustit aplikaci na nějakém zařízení. Po spuštění projeku Hello World!, na námi vytvořeném virtuálním zařízení, v Profileru uvidíme něco podobného tomu co je na následujícím obrázku:

Pokud, po spuštění aplikace, nevidíte žádná data, klikněte na tlačítko + v levém horním rohu v okně Profileru, vpravo od nápisu SESSIONS. V rozbalené nabídce zvolte aktuální projekt.

Využití baterie lze sledovat pouze u aplikací běžících na zařízení s Androidem 8.0 (API 26) a vyšší.

Debugging a boj s errory

Debugging

Ladění je jednou ze základních součástí každodenního života vývojáře. Vždy se snažíme psát bezchybný kód a bezchybné aplikace. Ladění nám umožňuje procházet jednotlivé řádky kódu, sledovat obsah proměnných aplikace atd. Nejlepší bude ukázat si to na příkladu. V projektu kalkulačky si v debugeru zobrazíme obsah některých proměnných. Určíme místa v kódu, ve kterých budeme chtít "dát pauzu". Tyto body se jmenují breakpointy a vytvoříme je kliknutím vlevo vedle řádku, který nás zajímá - viz obrázek:

Po kliknutí na popsané místo levým tlačítkem myši se na něm zobrazí červené kolečko. Dalším kliknutím na kolečko tento breakpoint zrušíme. Seznam všech breakpointů zobrazíme kliknutím na záložku Favorites na levé straně okna AS a v otevřeném okně rozbalením nabídky Breakponts. U každého vidíme název souboru číslo řádku, na kterém se daný breakpoint nachází. Dvojklikem na jakýkoliv breakpoint v tomto seznamu nás AS přesune do místa v kódu, kde tento breakpoint je.

Jak je vidět na předchozím obrázku, máme v kódu celkem tři breakpointy.

Nyní spustíme aplikaci v zařízení (skutečné nebo virtuální) tlačítkem se zeleným broučkem - viz obrázek:

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Ve chvíli, kdy je prováděn příkaz, který je označen breakpointem, je aplikace pozastavena a otevře se okno debugeru, ve kterém najdeme některé naše proměnné, včetně hodnot, které v tu chvíli obsahují - viz. následující obrázek. Na tomto obrázku je šipkou označena i zelená ikonka, která, po kliknutí na ní, zajistí pokračování chodu aplikace. Tedy pokud se neobjeví další breakpoint, na kterém se aplikace znovu pozastaví.

Zobrazení errorů při pádu aplikace

Nejsme dokonalí a i přes veškerou snahu se najde chvíle nepozornosti a v kódu uděláme chybu, která se projeví až za běhu aplikace. Pád aplikace a reakci AS na ní si opět ukážeme na příkladu. A to tak, že v projektu kalkulačky záměrně vytvoříme podmínky pro pád aplikace. V kódu souboru MainActivity.java zakomentujeme na řádku číslo 37 tento kód:

obraz = findViewById(R.id.obrazovka);

Jde o proměnnou, uchovávající referenci na TextView v XML, který zobrazuje zadávané hodnoty a výsledky výpočtů.

Chyba nastane již při startu aplikace, protože hned pod zakomentovaným řádkem se TextViewu obraz pokusíme nastavit text. Proměnná obraz je však null a aplikace spadne s chybou NullPointerException.

Otevřeme si v menu okno Logcat takto: View -> Tool Windows -> Logcat a spustíme aplikaci. V tomto případě nemusíme aplikaci spouštět v debug módu, stačí aplikaci pouze spustit tlačítkem se zelenou šipkou

Brzy po spuštění dojde k pádu aplikace a v okně Logcatu se objeví hromada červeného text s důvodem pádu. V tomto textu nalezneme modrý podtržený text (vypadá jako odkaz), na který když klikneme, přesune nás AS do kódu na ten řádek, ve kterém k chybě došlo. Pokud je v Logcatu takto označených míst více, máme tak i odkazy na části kódu, jejichž vykonávání pádu bezprostředně předcházelo.

Nástroj Logcat

Tento nástroj jsme již nakousli v předchozím odstavci o boji s errory a také jsme se o něm zmínili v lekci o životním cyklu Activity, kdy jsme si v Logcatu nechali vypisovat volání metod životního cyklu hlavní aktivity aplikace Hello World! V okně Logcat se zobrazují různé systémové zprávy a zprávy, které do kódu přidáme sami. Zprávy jsou zobrazovány v reálném čase jedna za druhou a je možné v nich listovat zpětně a prohlížet starší zprávy. Můžeme vytvořit různé filtry pro zobrazování vybraných zpráv nebo zobrazovat pouze vlastní zprávy generované kódem aplikace. A samozřejmě, jak již víme, zobrazuje i errory způsobující případný pád aplikace za běhu. Pro zobrazování zpráv v Logcatu je nutná instalace konkrétní aplikace do zařízení (připojeného k počítači kabelem nebo vytvořeného virtuálního zařízení). Zopakuji, že Logcat otevřeme v menu View -> Tool Windows -> Logcat nebo kliknutím na záložku v dolní části AS. Pomocí třídy Log můžeme v kódu vytvářet následující zprávy, které budou zobrazeny v Logcatu, zde seřazené od nejvyšší k nejnižší prioritě:

  • Log.e(String tag, String message) (error)
  • Log.w(String tag, String message) (warning)
  • Log.i(String tag, String message) (information)
  • Log.d(String tag, String message) (debug)
  • Log.v(String tag, String message) (verbose)

Příklad vytvoření zprávy v kódu:

Log.d("muj_tag", "Some message from the application code");

Při vytváření zprávy je dobrým zvykem jako tag nepoužívat přímo textový řetězec, ale předem deklarovanou konstantu typu String takto:

final String MUJ_TAG = "muj_tag";
Log.d(MUJ_TAG, "Some message from the application code");

Opět si popsané vyzkoušíme v projektu kalkulačky. Jednu zprávu vložíme do metody onCreate():

Log.d(MUJ_TAG, "onCreate()")

a druhou do metody vypocti():

Log.d(MUJ_TAG, "Výsledek výpočtu: " + obraz.getText());

V metodě vypocti() máme uvedenou zprávu dvakrát, protože se nám tam v podmínce kód větví a my chceme zprávu obdržet v obou případech, které mohou nastat.

Díky těmto zprávám můžeme v okně Logcatu sledovat volání metody onCreate() a sledovat výsledek každého výpočtu.

Otevřeme Logcat a do pole pro filtování zpráv vložíme obsah konstanty MUJ_TAG pro zobrazení pouze našich zpráv, označených tímto tagem. Vlevo od filtru nastavte typ zobrazovaných zpráv na Debug nebo na Verbose (volba Verbose zobrazuje úplně všechny typy zpráv). Poté aplikaci spusťte a sledujte vypsané zprávy v okně Logcatu.

Filtrování zpráv je velice užitečné. Systémových zpráv je totiž Logcatem vypisováno poměrně hodně a nedovedu si představit hledání těch vlastních zpráv.

Aplikace je hotová, ukázali jsme si, jakým způsobem ji ladit a zbavovat chyb, pojďme si tedy vygenerovat instalační soubor .apk, díky kterému můžeme zajistit její distribuci ;-)

Vygenerování instalačního souboru aplikace (.apk)

Dejme tomu, že potřebujete vytvořenou aplikaci publikovat (nemám teď na mysli přímo Google Play), někomu odeslat k otestování nebo se s ní jen budete chtít pochlubit. K tomu budete potřebovat vytvořit instalační soubor. V několika následujících krocích si projdeme postup, jak na to.

  1. V menu klikněte na Build a v rozbalené nabídce zvolte Generate Signed Bundle/APK:
  1. V okně Generate Signed Bundle or APK zaškrtněte druhou možnost (Apk) a potvrďte tlačítkem Next:
  1. V dalším okně budete vyzváni k zadání cesty a hesla k úložišti klíčů a k zadání názvu konkrétního klíče této aplikace a jeho hesla. To proto, že každý instalační balíček musí být podepsaný. My zatím žádné úložiště klíčů ani žádný klíč vytvořený nemáme, proto klikneme na tlačítko Create New:
  1. V okně Choose keystore file, v horní části, zvolíme cestu k místu, kde budeme mít úložiště klíčů, v dolní části okna toto úložiště pojmenujeme a potvrdíme tlačítkem OK. Takto, na zvoleném místě, v počítači, vytvoříme soubor .jks, kam můžeme ukládat naše budoucí klíče:
  1. Otevře se nám okno New Key Store. V horní části vidíme cestu k právě vytvořenému úložišti klíčů. Pod cestou k úložišti zvolíme nějaké jeho heslo a pro potvrzení zopakujeme do vedlejšího pole. V další části okna už budeme vytvářet nový klíč k naší aplikaci s kalkulačkou. Na obrázku je vidět příklad, jak všechna pole vyplnit. Opět potvrdíme tlačítkem OK:
  1. Opět se nacházíme v okně Generate Signed Bundle or APK z bodu 3, ale s již vyplněnými údaji o použitém klíči. Při příštím generování souboru .apk tedy použijeme vytvořený klíč z vytvořeného úložiště klíčů a body 4 a 5 budou vynechány, protože stisknutím tlačítka Choose existing... najdeme umístění úložiště klíčů, zadáme jeho heslo, dále zadáme jméno konkrétního klíče (Key alias), jeho heslo a potvrdíme tlačítkem Next:
  1. V dalším okně označíme položku release a dole zaškrtneme obě políčka (volbu V1 i V2) a potvrdíme tlačítkem Finish, čímž spustíme build projektu:
  1. Po dokončení buildu se v pravé dolní části okna AS objeví oznámení o dokončení akce a o umístění vygenerovaného souboru .apk. Kliknutím na modré locate bude soubor zobrazen ve složce:
  1. Pokud by jste si během buildu odskočili a toto oznámení propásli, klikněte na zelenou bublinku v pravé dolní části okna AS, která informuje o nových událostech. Měla by být zelená. Pokud je červená, znamená to, že se něco nepovedlo. Kliknutím na bublinku zobrazíme okno, ve kterém nalezneme to, co potřebujeme:

Tímto máme hotovou první aplikaci i s vygenerovaným instalačním .apk souborem ;-)

Kompletní Java kód včetně jednotlivých XML souborů máte v příloze.

V příští lekci, Android programování - Welcome screen animace kalkulačky, si ukážeme, jak vytvořit jednoduchou úvodní animaci.


 

Stáhnout

Staženo 1426x (9.59 MB)
Aplikace je včetně zdrojových kódů

 

 

Článek pro vás napsal Jiří Frank
Avatar
Jak se ti líbí článek?
5 hlasů
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS
Předchozí článek
Android programování - Implementace Java kódu kalkulačky
Všechny články v sekci
Základy vývoje Android aplikací v Javě
Miniatura
Následující článek
Android programování - Welcome screen animace kalkulačky
Aktivity (8)

 

 

Komentáře

Avatar
tribal.cz
Redaktor
Avatar
tribal.cz:27.3.2015 20:49

Zdravím aplikaci jsem skusil vytvořit ale pohořel sem snad na každém druhém řádku, poté jsem kódy jen překopíroval s naprosto stejným výsledkem. Ptám se tedy na toto.

Aplikace je tvořena jedinou třídou a to calcActivity a dále je nutné vytvořit prázdnou třídu ActionBarActivity přičemž veškerý obash tedy java kód se nachází ve třídě calcActivity? Pokud se mýlím jak to tedy má být tvořené možná by se hodilo trochu jednotlivé díly rozvést aby jsi nováčky v programování pro android trochu navedl a později již psát podobným stylem jelikož již člověk bude vědět co a jak

 
Odpovědět
27.3.2015 20:49
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na tribal.cz
dirtyjobs:28.3.2015 9:39

Je tam jen jedna aktivita calcActivity ve složce java\něco.něco­.něco, která vytvoří automaticky, pak do správných složek(res\la­yout,res\drawa­ble) umístit xml soubory,nastavit manifest(7.díl) a pak to po mě chtělo přepsat dvě vlastnosti na "7dp"

 
Odpovědět
28.3.2015 9:39
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na tribal.cz
dirtyjobs:28.3.2015 9:53

Ty soubory na sebe navazují, takže když je v jednom špatná adresa(většinou 1.chyba), tak tam máš hned 50 dalších chyb.

 
Odpovědět
28.3.2015 9:53
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na tribal.cz
Jiří Frank:2.4.2015 21:57

Ahoj, omlouvám se, že odepisuji tak pozdě :D.. Jsem teď docela časově vytížen... Jak už psal dirtyjobs, je tam jen jedna aktivita, kterou přidáváš hned při zakládání projektu a pokud na tvrdo kopíruješ kódy které jsou v archívu, může se stát že jsi někde něco nepozměnil a proto ty chyby, taky je možné že nemáš dostahované správné SDK a tak bych mohl pokračovat ještě na xx řádků.... Můžeš mi klidně napsat zprávu sem popř. si říct o skype či face a já se na to rád podívám.

Mimochodem o ActionBarActivity jsem vůbec nic nepsal.. Pokud vím :D

Nevím jak víc rozvést tuto aplikaci, klidně mi poraď nějaké konkrétnější myšlenky....

Zkrátka založíš projekt, vyplivne ti to Blank activity (měla by to být primárně přednastavená volba),

rozumně tam nasekáš tlačítka a textView pomocí layoutů,

do jménotvojiacti­vity.java začneš sekat metody :D
pokud máš nastavené ve stromové struktuře rozložení "Android", tak to je java->tvoje.id.com.neco->jménotvojiac­tivity.java
v Project rozložení to zase je app->src->main->java->jménotvojiac­tivity.java
a packages rozložení myslím app->tvoje.id.com.neco->nazevapp->jménotvojiac­tivity.java
(u packages si nejsem úplně jistý, z hlavy nevím a přístup k AS teď nemám, základní GUI a info ohledně struktury projektu je popsáno v nějakém úvodním dílu...)

Pro jistotu sem přiložím, jak vypadá AS vygenerovaná třída pro tvou aktivitu.

package spsoa.informa­tika.com.test;

import android.app.Ac­tivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.Me­nuItem;

public class CActivity extends Activity {

    //Něco sem

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_c);
        //Něco sem
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_c, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    //metody jsem
}

Do ničeho jiného zasahovat nemusíš.. Sám jsem více méně touto aplikací s Androidem před pár měsíci začal a jednodušší projektík mě nenapadl :D...
Pokud má někdo zájem o spoil, tak čtěte dál:
na plánu je šibenice, poznámkový blok/textový editor, a mikro aplikace pro práci s bitmapou a volání (možnosti využití systémových aktivit), už to mám zpracované, avšak ještě pár dní/týdnů budu dost časově vytížen...
Vím, že tato kalkulačka je o ničem, ale pro ošahání základních komponent, systému navrhování UI (práce s XML) a základní bastlení v Javě to je snad vhodné. Další aplikace začnou být už zajímavější, Intenty, SharedPreference, SQLite, Fragmenty atd..

Jak jsem už psal, klidně mě kontaktuj (nebo napiš co to přesně vyhazuje za chybky) a podívám se na to, za případné překlepy se omlouvám :D jsem tak 24 hodin beze spánku :D.

 
Odpovědět
2.4.2015 21:57
Avatar
DREAMDEV
Člen
Avatar
DREAMDEV:19.4.2015 12:02

mohol by niekto vysvetliť čo je to Signed APK??

 
Odpovědět
19.4.2015 12:02
Avatar
Anty
Člen
Avatar
Odpovídá na DREAMDEV
Anty:19.4.2015 12:38

Signed APK je podepsaný soubor ve formátu APK, který android studio vytvoří ve zvolené složce, tento soubor lze nakopírovat do telefonu a nainstalovat (pomocí instalátoru balíčku), nebo publikovat. Signed znamená, že je podepsaný (nepodepsaný bys nemohl (bez úprav) nainstalovat do telefonu).

 
Odpovědět
19.4.2015 12:38
Avatar
DREAMDEV
Člen
Avatar
Odpovídá na Anty
DREAMDEV:19.4.2015 15:09

takze ten subor je nieco ako instalacny balicek? alebo je to len ten podpis?

 
Odpovědět
19.4.2015 15:09
Avatar
Anty
Člen
Avatar
Odpovídá na DREAMDEV
Anty:19.4.2015 15:46

Podepsaný instalační balíček. (všechny aplikace, které se dají stáhnout z google play jsou obdobným způsobem podepsané a z google play se stahuje právě takový podepsaný APK soubor, akorát se hned nainstaluje a zase smaže :))

 
Odpovědět
19.4.2015 15:46
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Anty
Taskkill:7.7.2015 18:01

No on se nesmaže, jen pokud uživatel nemá rootnutý zařízení tak se nedostane do složky kam se všechny tyhle stažený apk soubory storujou.

 
Odpovědět
7.7.2015 18:01
Avatar
Anty
Člen
Avatar
Odpovídá na Taskkill
Anty:17.7.2015 16:18

Nejspíš máš pravdu, stažené APK soubory se uloží do cache, kde jsou uchovány, dokud je dost místa v zařízení, nebo dokud si aplikace nevyžádá jejich odstranění, nebo do restartu zařízení, pak jsou odstraněny. Myslel jsem, že google play si po instalaci aplikace vyžádá i odstranění APK, na mém zařízení jsou všechny tyto APK soubory ihned odstraněny, je to ale asi způsobeno nedostatkem místa v cache.

 
Odpovědět
17.7.2015 16:18
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Anty
Taskkill:17.7.2015 16:50

No ani to není úplně korektní - máš rootnuté zařízení? Já ano a vím, že v systémovém adresáři (nemám ho teď u sebe tak nevím cestu) jsou uloženy všechny instalačky k nainstalovaným appkám. Nejde tedy o cache a klidně si můžeš přes root explorer ten apk soubor zkopírovat kam chceš a po odinstalaci/kdy apk zmizí si jí můžeš nainstalovat sám.

 
Odpovědět
17.7.2015 16:50
Avatar
Anty
Člen
Avatar
Odpovídá na Taskkill
Anty:30.7.2015 21:06

Taky mám root, ale jestli myslíš apk soubory uložené většinou v "/data/app/", tak se nejedná o uložiště pro stažené apk pomocí google play, ale apk nainstalovaných aplikací, android při instalaci akorát mimo jiné nakopíruje apk do tohoto úložiště a zde apk soubor zůstane, dokud se aplikace neodinstaluje, ale google play nejprve stáhne apk do cache a následně jej instalátor balíčků v průběhu instalace nakopíruje do zmíněného úložiště.
V minulosti jsem už několikrát instaloval aplikace tím, že jsem akorát zkopíroval apk do zmíněného úložiště a následně restartoval telefon, vím že to není správný způsob, ale když mám v telefonu jen 150mb na data (z toho systém si vezme asi 110mb), tak je celkem těžké nainstalovat nějakou apk (teď už nějakou dobu používám link2sd a tak jsem nemusel obcházet minimum paměti pro instalaci)

 
Odpovědět
30.7.2015 21:06
Avatar
Martin Skalík
Redaktor
Avatar
Martin Skalík:26.8.2015 22:36

Jaktože mi nejde testovani na mobilu? Neni to tym že mam Sony xperia E1?

 
Odpovědět
26.8.2015 22:36
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na Martin Skalík
Jiří Frank:30.8.2015 9:34

Ahoj, v telefonu problém určitě nebude. Povolil jsi v „Možnosti vývojáře“ Ladění USB?

 
Odpovědět
30.8.2015 9:34
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Martin Skalík
Redaktor
Avatar
Martin Skalík:30.8.2015 20:52

Co že!!! :-O povolil sem to už před tim ale teď to jde!!! :-O tak se moc a moc omlouvám za zdržováni ale když sem tě už zdržel tak jak udělat aby se vypsala hodnota (int)?

 
Odpovědět
30.8.2015 20:52
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na Martin Skalík
Jiří Frank:31.8.2015 19:52

Ahoj, :) u některých telefonů je třeba pár sekund/minut nechat telefon zapojený, aby se doinstalovaly ovladače, zrovna před pár dny se mi to stalo. :)..

K tomu vypsání.. O co přesně se jedná? Pokud chceš pouze "informovat" či "kouknout" na tu hodnotu, použij toast.
http://developer.android.com/…/toasts.html

Pokud ji chceš vypsat "trvaleji", použij TextView (spoustu příkladů je popsáno v tomto seriálu).
Pokud jsou s tím problémy, napiš mi na jeden z kontaktů, které mám na svém profilu tady na itnetwork.cz.
(Nemám poslední dobou moc času, pokud napíšeš na skype/FB tak mě zastihneš častěji než zde)

 
Odpovědět
31.8.2015 19:52
Avatar
Jaroslav Zakouřil:22.10.2015 18:58

Ahoj všem a děkuji za přivítání !
Mám Huawei Ascend G620s teprve asi 4 měsíce, ale vzhledem k tomu, že jsem již dříve psal programy v různých jazycích i webové stránky, tak mi to nedalo a začal jsem se zajímat psaní aplikací pro Android. Takže jsem se stal členem vaší komunity a zkouším to s Android Studiem. Na počítači mám ještě stále XPčka. Mám však problém. Nefunguje mi správně připojení telefonu k počítači. Sice můžu do telefonu i z něj do počítače stanovat soubory, ale nefrunguje USB ladění. Stáhl a nainstaloval jsem USB driver pro svůj mobil z této stránky http://androidxda.com/…-usb-drivers, ale chci-li program vyzkoušet na mobilu, musím tam apk soubor nahrát, instalovat a pak spustit. Možnosti pro vývojáře mám otevřené, umožněno ladění USB, když kliknu na Run, otevře se okno Choose Device, ale tabulka Device je prázdná. Takže buď mám špatný driver nebo to nefunguje ve Windows XP. Poraďte mi, prosím, jak to mám rozchodit. Díky

 
Odpovědět
22.10.2015 18:58
Avatar
Ondrej Elláš:29.11.2016 21:35

V Android Studio som úplný začiatočník. Preto bojujem s každým krokom. Pri kalkulačke som sa dostal až po generovanie APK. Na rozdiel od popisu v článku moje Studio umožňuje aj Build APK. Ten prebehol v poriadku. Keď som zadal Generate Signed APK (build type - release) dostal som nasledovné hlásenie:

Failure: Build failed with an exception.

*What went wrong:
Execution failed for task ´:app:validate­SigningRelease.
Keystore file c:\VeciProAndro­id\PrvniKlicek­.jks not found for signing config 'external Override'

  • Try:

    Run with --stacktrace option to get the stacktrace.

    Run with --info or --debug optin to get more log output.
    Build Failed

Vie mi niekto poradiť kde robím chyby ?

 
Odpovědět
29.11.2016 21:35
Avatar
Ondrej Elláš:30.11.2016 9:57

Po problémoch popísaných v predchádzajúcom príspevku, som vyskúšal najjednoduchšiu aplikáciu Hallo world.
Build APK bol bez problémov úspešný, ale Gererate Signed APK zlyhal presne ako je popísané v predchádzajúcom príspevku.
Robím asi niekde systémovú chybu. Poradími niekdo v čom robím chybu ?

 
Odpovědět
30.11.2016 9:57
Avatar
Tomáš Hůla:31.12.2017 14:17

Když to chci spustit tak mi to píše "Default activity not found".

Editováno 31.12.2017 14:19
 
Odpovědět
31.12.2017 14:17
Avatar
Tomáš Hůla:31.12.2017 16:33

Jaký používáš API?

Zjistil jsem že "ActionBarActivity" je už zastaralý.

 
Odpovědět
31.12.2017 16:33
Avatar
Jaroslav Konečný:21.9.2018 15:14

Na mobilu se mi ta kalkulačka zobrazí, ale to je tak vše. Nejdou mačkat tlačítka a nic to nepíše. Mám pocit, že tu kus kódu chybí.
Kde je kód co má být v onclick?
Podle mě ty metody ZapisCislo, ZapisCarku, VymazJeden atd nejsou z ničeho volané.
Můžete prosím poradit?

 
Odpovědět
21.9.2018 15:14
Avatar
Odpovídá na Jaroslav Konečný
Matúš Olejník:21.9.2018 16:10

Keď je parametrom tej funkcie View tak môžeš v grafickom editore po kliknutí na Button nastaviť onClick (vyberieš zo zoznamu) alebo priamo v xml pridáš elementu Button

android:onClick="nazovFunkcie"

Ak nie je parametrom funkcie View môžeš v kóde napr. v onCreate metóde nastaviť click listener

button.setOnClickListener(event -> nazovFunkcie())
Editováno 21.9.2018 16:11
Odpovědět
21.9.2018 16:10
/* I am not sure why this works but it fixes the problem */
Avatar
Libor Šimo (libcosenior):24.9.2018 13:20

Ahoj, v článku sa píše: Nyní propojíme USB kabelem s PC a zapneme „Možnosti vývojáře“ a povolíme Ladění USB. Doporučuji nechat nainstalovat kompletní balíček SW pro dané zařízení. Potom potvrdíme dialogové okno, které v mobilu vyskočí.
Mne to ukáže len to v prílohe.
Poradíte?

Odpovědět
24.9.2018 13:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):24.9.2018 14:04

Vyskúšal som Hello World a na už sa mi to s mobilom spárovalo.

Editováno 24.9.2018 14:04
Odpovědět
24.9.2018 14:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
duanin2
Člen
Avatar
duanin2:20.2.2019 15:36

já zkopíruju celek ten kód téhle kalkulačky a ono to nefunguje

 
Odpovědět
20.2.2019 15:36
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na duanin2
David Čápka:15.5.2019 15:06

Ahoj, projekt byl aktualizován na novější verzi.

Odpovědět
15.5.2019 15:06
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.