рдЕрдкрдиреА рдкрд╣рд▓реА рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рд░рд┐рд▓реАрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛рдкрди рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЪреАрдВрдЯреА рдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЖрдкрдХреЛ
рдмрд┐рд▓реНрдб .
xml рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреВрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдиреАрдп -рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Android-SDK рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдк рдХреБрдВрдЬреА.рд╕реНрдЯреЛрд░ рдФрд░ рдХреА.рд▓рд┐рдпрд╛рд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрдХреЗрдд рдорд┐рд▓реЗрдВред Google рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рд▓реЙрдЧ рдореЗрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
рд╕рдВрдкрддреНрддрд┐ / рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рдЕрдВрддрд┐рдо рдкреИрдХреЗрдЬ рд╕реЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдпреЗ рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдереЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИрдВред рдЕрдВрддрд┐рдо рдЖрд╡реЗрджрди рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд░рд▓рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╕рдорд╛рдзрд╛рди рдЬрд▓реНрджреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдХреА рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рд╣реИред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрджрд░ рджреЗрдЦреЗрдВред
рдпрджрд┐ рдЖрдк
build.xml рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╣рд╛рдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЯрд┐рдкреНрдкрдгреА рдХрд┐рдП рдЧрдП рддрддреНрд╡ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рдж рдЖрддрд╛ рд╣реИ
<setup />
рдпрд╣
рдПрд╕рдбреАрдХреЗ / рдЙрдкрдХрд░рдг / рдЪреАрдВрдЯреА / main_rules.xml рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣рд╛рдБ рд╕реЗ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ -pre-build, -pre-compile рдпрд╛ -post-compile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ .apk рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
<target name="-package-resources"> <echo>Packaging resources</echo> <aapt executable="${aapt}" command="package" versioncode="${version.code}" debug="${build.packaging.debug}" manifest="AndroidManifest.xml" assets="${asset.absolute.dir}" androidjar="${android.jar}" apkfolder="${out.absolute.dir}" resourcefilename="${resource.package.file.name}" resourcefilter="${aapt.resource.filter}"> <res path="${resource.absolute.dir}" /> </aapt> </target>
<target name="-package-resources"> <echo>Packaging resources</echo> <aapt executable="${aapt}" command="package" versioncode="${version.code}" debug="${build.packaging.debug}" manifest="AndroidManifest.xml" assets="${asset.absolute.dir}" androidjar="${android.jar}" apkfolder="${out.absolute.dir}" resourcefilename="${resource.package.file.name}" resourcefilter="${aapt.resource.filter}"> <res path="${resource.absolute.dir}" /> <!-- <nocompress /> forces no compression on any files in assets or res/raw --> <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw --> </aapt> </target>
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рджреЛ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗ:
1. рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЕрдкрд╡рд╛рдж рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдЧрд╛ред
2. рдПрдХ рдФрд░ рдХрджрдо рдЬреЛрдбрд╝реЗрдВ: рдПрдХ рдореМрдЬреВрджрд╛ apk рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ред
рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдЦреЛрдЬ рдХрд░рдирд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд╛рд░реНрдп aapt рдордВрдЪ рдЙрдкрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╢реЗрд▓ рдореЗрдВ рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдорджрдж рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рда рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ:
рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓, рдЬреИрд╕реЗ рдХрд┐ рдПрдбрд╛рдкреНрдЯрд▓, рдПрдкреНрдЯ, рдбреЗрдХреНрд╕рдбрдВрдк, рдФрд░ рдбреАрдПрдХреНрд╕, рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ (рдПрдбреАрдЯреА) рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрди рдЯреВрд▓реНрд╕ рдХреЛ рд╕реАрдзреЗ рдЗрдирд╡реЙрдЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдпрд╛ ADT рдкреНрд▓рдЧрдЗрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЦреНрдп-рдирд┐рдпрдореЛрдВ.рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ
рдЯрд╛рд╕реНрдХ- рдбрд┐рдл рд╣реЗрдбрд░ рд╕реЗ
, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ aapt,
com.android.ant.AaptExecLoopTask рдХреНрд▓рд╛рд╕ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд░реНрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдЗрд╕рд╕реЗ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ aapt рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдХ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреАрд░реНрдг рдкрд░рдд рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдп рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдЖрдк рд░рд╛рд╕реНрддреЛрдВ рдФрд░ рдирд╛рдореЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЧрд╣рд░реА рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рдпрдВ рдореЗрдВ рдирд╣реАрдВ рд░рдЦреА рдЬрд╛рддреА рд╣реИред рдЙрдкрдХрд░рдг рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдкреИрдХреЗрдЬ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирд╛ рд╣реИ: рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рдж рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ
build.xml рдХреЗ рдЕрдВрджрд░ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
"-рдкреИрдХреЗрдЬ-рд░рд┐рд▓реАрдЬрд╝" рдЬреЛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
<target name="-package-release" depends="-dex, -package-resources, -package-removetestassets"> <package-helper output.filepath="${out.unsigned.file}"/> </target>
<target name="-package-release" depends="-dex, -package-resources, -package-removetestassets"> <package-helper output.filepath="${out.unsigned.file}"/> </target>
рдЕрдм рдпрд╣ рд▓рдХреНрд╖реНрдп main_rules.xml рд╕реЗ рдореВрд▓ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рдирдИ рдирд┐рд░реНрднрд░рддрд╛
-рдкреИрдХреЗрдЬрд╝-рд░рд┐рдореЗрдХреНрдЯреЗрд╕реИрд╕реЗрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ред рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВ:
<target name="-package-removetestassets"> <echo>Excluding test assets from apk</echo> <exec executable="${aapt}"> <arg value="remove"/> <arg value="${out.absolute.dir}/${resource.package.file.name}"/> <arg value="assets/test/*.*"/> </exec> </target>
<target name="-package-removetestassets"> <echo>Excluding test assets from apk</echo> <exec executable="${aapt}"> <arg value="remove"/> <arg value="${out.absolute.dir}/${resource.package.file.name}"/> <arg value="assets/test/*.*"/> </exec> </target>
рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, build.xml рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╕рдВрднрд╡ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рдеред рдФрд░ рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Android рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рдЬреЛрдЦрд┐рдо рдХрдо рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рд╕рд╣рд╛рдпрдХ рд╣реИред