рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдЙрд╕рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рдЙрдкрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдРрд╕рд╛ рдЯреВрд▓ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд╡рд╣ рдЪрд╛рд╣реЗрдЧрд╛, рдпрд╛ рдмрд╕ рдХреБрдЫ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЧреНрд░рд╣рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ Google рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд▓рдЧ-рдЗрди, рдПрдбреАрдЯреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗред рдирддреАрдЬрддрди, рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╡рд┐рд▓реА-рдирд┐рд▓реА, рдЗрд╕реЗ рдорд╛рд╕реНрдЯрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Google рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ IDE рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрдкрд╛рджрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдиреЗрдЯрдмреАрдиреНрд╕ рдЖрдИрдбреАрдИ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреИрдиреНрдбреНрд░реЙрдЗрдб рдЬреИрд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрднреА-рдХрднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдиреЗрдЯрдмреАрдиреНрд╕ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрдХ рд╕реЗ рд╕реАрдзреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдкрдХреЛ рдЧреНрд░рд╣рдг рдореЗрдВ рдЬрд┐рддрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛;
- рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛;
- рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛ (рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП)ред
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдХрд┐ рдлрд╝реЛрд▓реНрдбрд░
<Android-SDK>/tools
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
PATH
ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ:
android create project -n < > -t android-< API> -p < > -k < > -a < >
рдмрд╕, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдкреАрдЖрдИ рд╕реНрддрд░ рдмрд╣реБрдд рд╣реА рдПрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдкреАрдЖрдИ рд╕реНрддрд░ 10 рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ 15 рдФрд░ рдЙрдЪреНрдЪрддрд░ рд╕реНрддрд░ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ 15 рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
AndroidManifest.xml
, рдЗрд╕ 15 рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдПрдкреАрдЖрдИ рд╕реНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ 10 рд╣реЛрдВрдЧреЗред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Android 4.0.3 (рдпрд╣ рд╕реНрддрд░ 15 рд╣реИ) рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд▓рд░рдРрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
android create project -n KillerApp -t android-15 -p KillerApp -k com.damageinc.killerapp -a MainActivity
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЬреЛ рднреА рдлрд╛рдЗрд▓ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдорд┐рд▓реА: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдмрд┐рд▓реНрдб рдлрд╛рдЗрд▓ред рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрдм рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред рдЕрдм рдпрд╣ IDE рдореЗрдВ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛
- NetBeans рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░, рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдлреНрд░реА-рдлреЙрд░реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЗрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо IDE рдХреЛ рд╕рдордЭрд╛рдПрдВрдЧреЗ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

- рдЕрдЧрд▓рд╛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред NetBeans рдЦреБрдж рдмрд┐рд▓реНрдб рдлрд╛рдЗрд▓ рдХреЛ рдвреВрдВрдвреЗрдЧрд╛ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реА рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

- рдФрд░ рдЕрдм, рдЖрдкрдХреЛ рдмрд┐рд▓реНрдб рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдИрдбреАрдИ рдХреЛ рдкрддрд╛ рд╣реЛ рдХрд┐ рдЬрдм рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдбреАрдмрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрдирд╛рдПрдБред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдирд╛рдо рдХрд╛ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдХрд╛рд░реНрдп рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдПрдХ рд░рд┐рд▓реАрдЬ рдХрд╛рд░реНрдп рд╣реИ, рдЬреЛ рд╣рдо рдЕрднреА рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред
launch
рдХрд╛рд░реНрдп рдХреЛ рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░реЗрдВрдЧреЗред рд╕рдлрд╛рдИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ, рд╕реНрд╡рдЪреНрдЫ рд╣реИ , рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ, рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдорд┐рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

- рдЕрдЧрд▓реА рд╕реНрдХреНрд░реАрди рдкрд░, рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
gen
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ рдХрд┐ R.java
рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред

- рдЕрдм рдХреЛрдб рд╕рдВрдХреЗрдд рд╕реЗрдЯ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрд░реЛрдд рдлрд╝реЛрд▓реНрдбрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдИрдбреАрдИ рд╕реЛрдЪреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХреЛрдб рдореЗрдВ
R
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕рд╣реА рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реИ <Android-SDK>/platforms/android-15/android.jar
ред

- рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдЪрд░рдг,
bin/classes
рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдЖрдИрдбреАрдИ рдХреЛ рдкрддрд╛ рд╣реЛ рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрджрдо рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рдк рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрддрд╛ рдХреА рдЦрд╛рддрд┐рд░, рдореИрдВ рдЗрд╕реЗ рдмрдирд╛рдКрдВрдЧрд╛ рддрд╛рдХрд┐ рдиреЗрдЯрдмреАрдиреНрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реБрдИ рд╣реИрдВ рдФрд░ рдЕрднреА рддрдХ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рдЪрд▓ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, custom_rules.xml
рдлрд╝рд╛рдЗрд▓ custom_rules.xml
, рдФрд░ рдЗрд╕реЗ рд▓рд┐рдЦреЗрдВ
рдЪреАрдВрдЯреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ <project name="CustomRules"> <target name="release-and-save" depends="release"> <xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName" output="manifest.versionName" default="test"/> <xpath input="AndroidManifest.xml" expression="/manifest/@android:versionCode" output="manifest.versionCode" default="test"/> <copy file="${out.final.file}" tofile="releases/${ant.project.name}-release${manifest.versionCode}-${manifest.versionName}.apk" overwrite="true"/> <copy file="${obfuscate.absolute.dir}/mapping.txt" tofile="releases/mapping-release${manifest.versionCode}.txt" overwrite="true"/> </target> <target name="rebuild-resources" depends="-set-debug-mode, -build-setup, -code-gen" /> <target name="-find-main-activity"> <xpath input="AndroidManifest.xml" expression="/manifest/@package" output="project.app.package" default="test"/> <xpath input="AndroidManifest.xml" expression="/manifest/application/activity[intent-filter/category/@android:name = 'android.intent.category.LAUNCHER'][1]/@android:name" output="project.app.mainactivity" default="test"/> <if> <condition> <matches pattern="\..+|[^\.].*\..*[^\.]" string="${project.app.mainactivity}"/> </condition> <then> <property name="project.app.mainactivity.qualified" value="${project.app.mainactivity}"/> </then> <else> <property name="project.app.mainactivity.qualified" value=".${project.app.mainactivity}"/> </else> </if> <property name="project.app.launcharg" value="-a android.intent.action.MAIN -n ${project.app.package}/${project.app.mainactivity.qualified}"/> </target> <target name="launch" depends="-find-main-activity"> <exec executable="adb"> <arg line="shell am start"/> <arg line="${project.app.launcharg}"/> </exec> </target> </project>
рдпреЗ рддреАрди рдХрд╛рд░реНрдп рд╣рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
rebuild-resources
рдЖрдкрдХреЛ рдПрдХ
R
рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдЧреНрд░рд╣рдг рдореЗрдВ, рд╡реИрд╕реЗ, рдЕрдХреНрд╕рд░ рдХрд╣реАрдВ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╕рдордп рдкрд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред
launch
рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛, рдФрд░
release-and-save
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдЬрдм рдЖрдк рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░реЛрдЧрд╛рд░реНрдб рд╡рд┐рдзрд┐ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдХреЗ рддрд╣рдд рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рднреА рдРрд╕реА рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЗрд▓реА рдЬрд╛рдП:
<target name="-post-build"> <sound> <success source="C:\Windows\Media\Windows Notify.wav"/> </sound> </target>
рдмреЗрд╢рдХ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдирд┐ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЕрдиреНрдп рдУрдПрд╕ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдЪреБрдирдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдм рдпрд╣
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ NetBeans рдореЗрдВ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ ред рдмрд┐рд▓реНрдб рдФрд░ рд░рди рдЯреИрдм рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
launch
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд░рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЗрдЯрдо рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ред рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡реЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрднреА рдХрд┐рдП рдЧрдП рдмрд╛рдХреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛:

рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рд╣реИред рдЖрдк рдПрдореБрд▓реЗрдЯрд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд░рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЦреБрдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдВрддрд┐рдо рдЯрдЪ рдмрдирд╛рдиреЗ рдФрд░
рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдореЗрдВ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ
, рдЬреЛ project.properties
рдореЗрдВ рд▓рд╛рдЗрди рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИредproguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
ant.properties
рдпрд╣ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЗрдВ ant.properties
рд▓рд╛рдпрдХ рд╣реИ :
key.store = < >
key.alias = < >
рдЕрдм рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ: рдПрдХ рдЪреАрдВрдЯреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЧреНрд░реИрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЪреАрдВрдЯреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЧреНрд░реИрдбрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдирдП рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╣рдг -
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╣реИ ред рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдЪреАрдВрдЯреА рдкрд░ рд▓реМрдЯрдирд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:
- ant.properties
- build.xml
- local.properties
- ProGuard-project.txt
- project.properties
рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓, рдмрд┐рд▓реНрдХреБрд▓,
build.xml
ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯреА рд╕реА рдкреВрдВрдЫ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рд╕реНрдерд┐рдд рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
local.properties
рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЧреБрдг рд╣реЛрддрд╛ рд╣реИ: SDK рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рд╕реНрдерд╛рдиред рдЗрд╕ рдлрд╝рд╛рдЗрд▓
рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╢реАрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд, рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рд╣реИ
sdk.dir=C:\\Android-SDK
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде
ANDROID_HOME
рдкрд░реНрдпрд╛рд╡рд░рдг
ANDROID_HOME
рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЯреНрд░реИрд╢ рдореЗрдВ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕рдмрд╕реЗ рдКрдкрд░, рдиреЗрдЯрдмреАрдиреНрд╕ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рдж рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред
ant.properties
рдкрд╣рд▓реЗ рд╣реА
ant.properties
рд╕реЗ рдорд┐рд▓
ant.properties
; рд╕рд╣рд╛рдпрдХ рдЪрд░, рдЬреИрд╕реЗ рдХрд┐ рдХреАрд╕реНрдЯреЛрд░ рдХрд╛ рд╕реНрдерд╛рди, рд╡рд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЗрд╕рдореЗрдВ рдПрдХ
project.properties
рднреА рд╣реИред
project.properties
рдлрд╛рдЗрд▓ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рдХреЗ рд╕реНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧрд╛рд░реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдБ рджреЗрдЦрдирд╛ рд╣реИред рдЬрдм рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣реЛрдВрдЧреАред
рдЕрдВрдд рдореЗрдВ,
proguard-project.txt
рдлрд╝рд╛рдЗрд▓, рдЬреЛ рдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЗрд╕рдореЗрдВ рдкреНрд░реЛрдЧрд╛рд░реНрдб рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рд╢реБрд░реВ рдореЗрдВ рдЦрд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ ProGuard рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ SDK рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреВрд░реНрд╡-рджрд░реНрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ (ProGuard рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░реЗрдЦрд╛ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ?), рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рджреВрд╕рд░реЛрдВ рдХреЗ рдмреАрдЪ, рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ
-renamesourcefileattribute MyProject
-keepattributes SourceFile,LineNumberTable
рд╡реЗ рдЖрдЧреЗ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╕рдЯреАрдХ рдбреЗрдЯрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдХреА рдХреМрди рд╕реА рд▓рд╛рдЗрди рдбреНрд░реЙрдк рдпрд╛ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдХреЛрдИ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ
build.xml
custom_rules.xml
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред
<target name="rebuild-resources" depends="-set-debug-mode, -build-setup, -code-gen" />
рдпреЗ рд▓рд╛рдЗрдиреЗрдВ рдмрд╕ рдПрд╕рдбреАрдХреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд▓реА рдЧрдИ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЕрдиреНрдп рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ:
<target name="release-and-save" depends="release"> <xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName" output="manifest.versionName" default="test"/> <xpath input="AndroidManifest.xml" expression="/manifest/@android:versionCode" output="manifest.versionCode" default="test"/> <copy file="${out.final.file}" tofile="releases/${ant.project.name}-release${manifest.versionCode}-${manifest.versionName}.apk" overwrite="true"/> <copy file="${obfuscate.absolute.dir}/mapping.txt" tofile="releases/mapping-release${manifest.versionCode}.txt" overwrite="true"/> </target>
XPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╕рдВрд╕реНрдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдВрдЯреА рдореЗрдВ рдХреЛрдИ XPath рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИ? рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдореЗрдВ, Google рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓ рдЬреЛрдбрд╝реЗред рдЙрдирдХреЗ рдХрдИ рдЙрдкрдХрд░рдг рдПрд╕рдбреАрдХреЗ рд╕реЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдРрд╕реЗ рднреА рд╣реИрдВ рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐
xpath
ред рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
if
, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕реА рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХрд░рддрд╛ рд╣реИ: рд╢рд░реНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрдиред
рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдп рднреА
xpath
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдмрд╛рд░ рдХрд╛рд░реНрдп рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ:
<target name="-find-main-activity"> <xpath input="AndroidManifest.xml" expression="/manifest/@package" output="project.app.package" default="test"/> <xpath input="AndroidManifest.xml" expression="/manifest/application/activity[intent-filter/category/@android:name = 'android.intent.category.LAUNCHER'][1]/@android:name" output="project.app.mainactivity" default="test"/> <if> <condition> <matches pattern="\..+|[^\.].*\..*[^\.]" string="${project.app.mainactivity}"/> </condition> <then> <property name="project.app.mainactivity.qualified" value="${project.app.mainactivity}"/> </then> <else> <property name="project.app.mainactivity.qualified" value=".${project.app.mainactivity}"/> </else> </if> <property name="project.app.launcharg" value="-a android.intent.action.MAIN -n ${project.app.package}/${project.app.mainactivity.qualified}"/> </target> <target name="launch" depends="-find-main-activity"> <exec executable="adb"> <arg line="shell am start"/> <arg line="${project.app.launcharg}"/> </exec> </target>
рдЖрдкрдХреЛ рдПрдХ рдРрд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЗрд░рд╛рджреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рд╢реНрд░реЗрдгреА
android.intent.category.LAUNCHER
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ - рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдЙрди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореЗрдиреВ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреБрд░реНрд▓рдн рд╣реИ), рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдп рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрддрд╛ рд╣реИред
рдПрдХ рдФрд░ рд░реЛрдбрд╝рд╛ рд╣реИред рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ
AndroidManifest.xml
рдпрд╛ рддреЛ рдкреВрд░реНрдг рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджреНрд╡рд╛рд░рд╛, рдпрд╛ рдХреЗрд╡рд▓ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдпрджрд┐ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдХрдо рд╕реЗ рдХрдо
рдкреНрд░рд▓реЗрдЦрди рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ ред рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░рд╣рдг рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдмрд┐рдВрджреБ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рдХреЗрд╡рд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдПрдВрдбреНрд░реЙрдЗрдб рдЗрд╕ рддрд░рд╣ рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЯреАрдо рдЕрдм рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдПрдХ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рди рд╣реЛред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ
if
рдХрд╛рд░реНрдп, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧреАред
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдп рдерд╛ рдЬреЛ рдзреНрд╡рдирд┐ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдиреЗ SDK рдореЗрдВ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреНрд╡рд┐рд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЫрд╣ рд╣реБрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
- -рдкреВрд░реНрд╡ рдирд┐рд░реНрдорд╛рдг
- -рдкреВрд░реНрд╡ рд╕рдВрдХрд▓рди
- -post-рд╕рдВрдХрд▓рди
- -post-рдкреИрдХреЗрдЬ
- -post-рдирд┐рд░реНрдорд╛рдг
- -рдкреВрд░реНрд╡ рд╕рд╛рдл
рд╣реБрдХ рдЙрди рдЪрд░рдгреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рддрд╛ рд╣реИ: рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛, рдХреЛрдб рдмрдирд╛рдирд╛ (рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╕рд╣рд╛рдпрддрд╛, рдЖрд░, рдмрд┐рд▓реНрдбрдХреЙрдиреНрдлрд┐рдЧ), рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛, рдПрдкреАрдХреЗ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ред рддрджрдиреБрд╕рд╛рд░,
-pre-build
рдХреЛ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ,
-pre-compile
рд╕рдВрдХрд▓рди рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ
-pre-compile
рдареАрдХ рдкрд╣рд▓реЗ,
-pre-compile
-post-compile
- рд╕рдВрдХрд▓рди рдФрд░ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рдмреАрдЪ,
-post-build
- рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рд▓реЗрдХрд┐рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдФрд░
-post-build
рдХреЛ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рдЬрдм
-pre-clean
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдЖрдЬ рд╣рдордиреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рджреЗрдЦреА: рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рджрд░рдЕрд╕рд▓, рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛рдлреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЖрдк рдиреАрдЪреЗ рдмреИрдардХрд░ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпреЗ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдиреЗрдЯрдмреАрдиреНрд╕ рдореЗрдВ рднреА рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рд▓реЗрдЦ рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред