Dans le but de montrer la nécessiter d’encoder les fichiers sources d’une application Android, j’ai eu besoin d’utiliser dex2jar, un outil permettant d’extraire les fichiers .class d’une paquet .dex (pour la VM Dalvik d’Android).
Comme je préfère avoir tous mes paquets gérés par portage (gestionnaire de paquets Gentoo), j’ai décidé d’écrire un ebuild pour la version courante (la 0.0.7.9-SNAPSHOT).
Tout d’abord, pour tester l’ebuild (par exemple la suppression des .bat destinés à windows), il suffit d’utiliser cette commande jusqu’à avoir le résultat désiré:
ebuild dex2jar-0.0.7.9.ebuild digest && rm /var/tmp/portage/dev-util/dex2jar-0.0.7.9/ -rf && FEATURES="test" ebuild dex2jar-0.0.7.9.ebuild test
Ensuite, dans le répertoire dev-util/dex2jar/files de l’overlay, il faut placer le fichier dex2jar suivant:
#!/bin/sh exec /opt/dex2jar/dex2jar.sh ${1}
L’ebuild final, dex2jar-0.0.7.9.ebuild est à placer dans l’overlay sous dev-util/dex2jar
# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils multilib DESCRIPTION="A tool for converting Android's .dex format to Java's .class format" HOMEPAGE="http://code.google.com/p/dex2jar/" PSUFFIX="-SNAPSHOT" SRC_URI="http://dex2jar.googlecode.com/files/${PF}${PSUFFIX}.zip" LICENSE="Apache-2.0" SLOT="0" KEYWORDS="~x86 ~x86-64" IUSE="" RESTRICT="strip mirror" DEPEND="" RDEPEND="${DEPEND}" MY_SUBDIR="${PF}${PSUFFIX}" S="${WORKDIR}/${MY_SUBDIR}" src_unpack() { unpack ${A} # go to the source cd "${S}" #remove unneded bat files rm `find . -type f -iname '*.bat'` # Fix permissions chmod a+x dex2jar-dump.sh dex2jar.sh chmod a-x LICENSE.txt NOTICE.txt } src_install() { cd "${S}" for f in $(find .); do local t="$(dirname ${f})" if [[ ! -d "${f}" ]]; then if [[ -x "${f}" ]]; then exeinto "/opt/dex2jar/${t}" doexe "${f}" else insinto "/opt/dex2jar/${t}" doins "${f}" fi fi done exeinto "/usr/bin" doexe "${FILESDIR}/dex2jar" } pkg_postinst() { einfo "This is an unsupported ebuild." }
L’ebuild est également accessible sur github
Plus d’informations sur dex2jar sont disponibles sur la page officielle du projet
Documentation pour la création d’ebuild: