Added release engineering for custom builds

pull/14/head
Tim Su 14 years ago
parent 0de220849a
commit 3ed636635d

1
.gitignore vendored

@ -6,6 +6,7 @@ gen
local.properties
ecbuild
astrid/bin
release
dev
lp-translations/
translations/strings.xml

@ -11,5 +11,6 @@ source.dir=${out.dir}/source
astrid.sources=src,common-src,plugin-src,src-legacy,rmilk-src
# Keystore
key.store=/etc/todoroo/keystore
key.alias=anddev.keystore
signjar.keystore=/etc/todoroo/keystore
signjar.keyalias=anddev.keystore
signjar.passfile=/etc/todoroo/keypass

@ -95,30 +95,67 @@
<echo message="Astrid: version ${manifest.version.code}, named ${manifest.version.name}" />
</target>
<!-- check for files with warnings -->
<target name="warnings">
<echo>====== context classes without setContext =====</echo>
<exec executable="sh">
<arg value="-c" />
<arg value="cd bin/source; grep -L '\(setContext\|DependencyInjectionService\)' `grep -l -R '^\(public\).*class .* \(Activity\|Service\|BroadcastReceiver\)' .` | grep -v '.*\(CriteriaExposer\|DetailExposer\|Plugin\).java$'" />
<arg value="cd bin/source; grep -L '\(setContext\|DependencyInjectionService\)' `grep -l -R '^\(public\).*class .* \(Activity\|Service\|BroadcastReceiver\)' .` | grep -v '.*\(CriteriaExposer\|DetailExposer\|Plugin\).java$' | grep -v rmilk" />
</exec>
<echo />
<echo>====== entry points without initializing Astrid DI =====</echo>
<exec executable="sh">
<arg value="-c" />
<arg value="cd bin/source; grep -L '\(AstridDependencyInjector\)' $(grep -l '@Autowired' `grep -l -R '^\(public\).*class .* \(Activity\|Service\|BroadcastReceiver\)' .`)" />
<arg value="cd bin/source; grep -L '\(AstridDependencyInjector\)' $(grep -l '@Autowired' `grep -l -R '^\(public\).*class .* \(Activity\|Service\|BroadcastReceiver\)' .`) | grep -v rmilk" />
</exec>
</target>
<!-- post build: rename apk -->
<target name="release" depends="get-version, warnings, android_rules.release">
<property name="out.release.package"
location="${out.absolute.dir}/${ant.project.name}-release.apk" />
<mkdir dir="../release" />
<property name="out.final.package"
location="${out.absolute.dir}/${ant.project.name}-${manifest.version.code}-${manifest.version.name}-release.apk" />
location="../release/${ant.project.name}-${manifest.version.code}-${manifest.version.name}-release.apk" />
<antcall target="signjar">
<param name="source"
value="${out.absolute.dir}/${ant.project.name}-unsigned.apk" />
<param name="dest"
value="${out.final.package}" />
</antcall>
<move file="${out.release.package}" tofile="${out.final.package}" />
<echo>Final Release Package: ${out.final.package}</echo>
</target>
<!-- jar signing -->
<target name="signjar" description="signs the jar">
<fail unless="source" message="need {source} to sign (jar base name)" />
<property file="${signjar.passfile}" /> <echo message="${signjar.passfile}" />
<signjar alias="${signjar.keyalias}" keystore="${signjar.keystore}"
storepass="${signjar.password}" jar="${source}"
signedjar="${source}-unaligned" />
<exec executable="${sdk.dir}/tools/zipalign" failonerror="true">
<arg value="-f" />
<arg value="4" />
<arg value="${source}-unaligned" />
<arg value="${dest}" />
</exec>
</target>
<!-- build custom release package with updated version name -->
<target name="release-custom">
<fail message="need to set custom.version.name">
<condition>
<not>
<isset property="custom.version.name" />
</not>
</condition>
</fail>
<copy file="AndroidManifest.xml" tofile="AndroidManifest_old.xml" />
<replaceregexp file="AndroidManifest.xml"
match="(android:versionName=&quot;[^&quot; ]*)[^&quot;]*"
replace="\1-${custom.version.name}" />
<antcall target="release" />
<move file="AndroidManifest_old.xml" tofile="AndroidManifest.xml" />
</target>
</project>

@ -0,0 +1,42 @@
<project name="astrid-project">
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="astrid/antlib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<target name="clean">
<delete dir="release" />
</target>
<target name="get-version">
<loadfile property="manifest" srcFile="astrid/AndroidManifest.xml" />
<propertyregex property="manifest.version.code"
input="${manifest}"
regexp="android:versionCode=&quot;(.*)&quot;"
select="\1" />
<propertyregex property="manifest.version.name"
input="${manifest}"
regexp="android:versionName=&quot;([^&quot; ]*)"
select="\1" />
<echo message="Astrid Project: version ${manifest.version.code}, named ${manifest.version.name}" />
</target>
<target name="release" depends="clean,get-version">
<subant target="release">
<fileset file="astrid/build.xml" />
</subant>
<!-- custom builds -->
<for list="getjar,amazon,verizon,sprint,orange,vodafone,other" param="name">
<sequential>
<subant target="release-custom">
<fileset file="astrid/build.xml" />
<property name="custom.version.name" value="@{name}" />
</subant>
</sequential>
</for>
</target>
</project>
Loading…
Cancel
Save