Android de code à distance de chargement
Je suis en train d'élaborer une bibliothèque pour Android qui nécessite de fréquentes mises à jour à partir d'un serveur central. Je me demandais comment il serait agréable si ma bibliothèque peut mettre à jour lui-même, ou si je pouvais vient de sortir une bootstrap bibliothèque de téléchargements de la bibliothèque cible lorsque l'application est installée.
Je vois cette classe en 1,5 appelé "DexClassLoader" mais il semble y avoir très peu sur le web, en plus de l'API docs. Quelqu'un a utilisé avec succès pour le scénario que j'ai décrit?
Aussi, les conditions de l'Android Market permettre une telle chose?
OriginalL'auteur sehugg | 2009-06-16
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé avec succès DexClassLoader. Il est important de fournir une
dexOutputDir
qui est en fait accessible en écriture par votre application, pas/data/dalvik-cache
. Par ailleurs, le journal va montrer une ou deux lignes en cas d'échec d'écrire là-bas, suivis parClassNotFoundException
.De faire
Class.forName()
de travail, vous pouvez essayer Fil de discussion.setContextClassLoader() (je n'ai pas).il n'est pas un travail pour android5 sucette et de plus, en raison de l'ART: stackoverflow.com/questions/27349097/...
OriginalL'auteur Chris Boyle
En effet ce que vous voulez est pris en charge et les œuvres. DexClassLoader ne fonctionne pas comme prévu pour moi, mais le code suivant fonctionne très bien.
Sur le marché en question, je ne vois pas de problème avec cela, mais vous devez lire le CLUF pour être sûr.
Bonjour, peut-être que vous avez raison, mais quand j'ai répondu, c'était la seule façon dont il fonctionne.
OriginalL'auteur Lucas S.
DexClassLoader
est la bonne réponse. Les Applications ne doivent jamais utiliserDexFile
directement (il est destiné à être utilisé en classe chargeurs).Vous pouvez utiliser le stockage externe (
/sdcard
), ou de l'application des données privées de la zone, pour ladexOutputDir
paramètre. De stockage externe est généralement plus élevé, mais si la carte est éjectée votre application sera tué, et en raison de l'absence d'autorisation de fichier de l'application, il est facile pour un tiers, afin de remplacer votre code. Cela peut permettre à des applications malveillantes à cause de votre application pour effectuer des mesures arbitraires. (Si vous voulez le faire de toute façon, obtenir le chemin d'accès viaEnvironment.getExternalStorageDirectory()
; nécessite laWRITE_EXTERNAL_STORAGE
autorisation.)App-privé de la zone de données (obtenir le chemin d'accès à partir de
Context.getFilesDir()
) est plus sécurisé, et a également l'avantage d'être nettoyé automatiquement si l'application est désinstallée. Cette approche est recommandée.N'écrivez JAMAIS votre dex fichier sur la Carte SD chemin. Cela va créer un problème de sécurité. symantec.com/connect/blogs/android-class-loading-hijacking
Mis à jour pour résoudre les problèmes de sécurité.
OriginalL'auteur fadden