Ebuild dex2jar (Convertisseur .dex Android en .class)

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:

About Ludovic

Ingénieur en informatique dipl. EPFL
Cette entrée a été postée dans la catégorie Android, Ebuild, Gentoo et taggée , , . Ajouter le permalink aux favoris.

Comments are closed.