2010-09-01 27 views
0

Je divise une application que j'ai dans les couches "plate-forme" et "app" afin que je puisse distribuer la plate-forme comme un pot à l'usage des partenaires - tout en protégeant mon IP.Création et utilisation d'un pot "plate-forme commune" sous Android - qu'est-ce qui fonctionne?

J'ai maintenant deux projets Eclipse. Le bâtiment n'a pas la capacité de compiler des ressources dans un pot, donc j'ai déplacé toutes les références de ressources dans le projet d'application (le projet de plate-forme gen/directory est vide). Je compilé la plate-forme, puis utilisée manuellement le jdk à Jar il, importé ce pot dans le projet d'application, a marqué le pot à l'exportation dans le projet d'application, et compilé et installé une application de test:

public class NotifyService extends Service { 
    ... 
    @Override 
    public void onStart(Intent intent, int startId) { 
     myNotify(intent.getIntExtra(EXTRA_ICON),...)); 
    } 

    private void myNotify(int iconResource, String s1, String s2, String s3) { 
     Context c = getApplicationContext(); 
     if (H.VERBOSE) Log.d(TAG, "myNotify()"); //$NON-NLS-1$ 
     Notification n = new Notification(iconResource, s1, currentTime); 
     Intent nextStep = new Intent(Intent.ACTION_VIEW,Uri)); 
     PendingIntent pending = PendingIntent.getActivity(c, 0, nextStep, 0); 
     n.setLatestEventInfo(c, s2, s3, pending); 
     mgr.notify(1, n); 
    }... 

Le l'activité de test se lance comme prévu et j'obtiens le message LogCat() de ce service. Mais aucune notification n'est affichée et aucune erreur n'est enregistrée - c'est juste silencieux. ...

Quoi qu'il en soit, je veux que les applications partenaires utilisent ma plate-forme qui se connecte aux services, aux fournisseurs de contenu, au web, aux œuvres. Quelqu'un offre des conseils?

MISE À JOUR! Hah ... typique ... quand j'ai déplacé toutes les ressources de ma plate-forme et dans mon application, je ne les ai pas transmises correctement à partir de la couche de l'application. Ainsi, l'exemple de code que j'ai donné n'a pas eu d'erreur. Utiliser une intention plutôt qu'une liaison découble les "arguments passés" des "arguments attendus" bien sûr - et le compilateur ne se plaint pas. Avec une application corrigée, cela fonctionne.

Bien que je pense que la création d'une plate-forme de distribution binaire n'est pas rare, je ne trouve pas beaucoup de doc à ce sujet, donc je vais continuer à ajouter des conclusions importantes en ouvrant les portes ... .

Répondre

1

Vous devriez regarder le concept d'un «projet de bibliothèque».

Working with Library Projects

[Modifier]

@DJC - Je vois ... dans ce cas, je vous suggère de regarder le projet AndEngine. La sortie de ce projet est un JAR qui est ensuite utilisé dans le projet AndEngineExamples (un exemple d'application qui le consomme).

AndEngine - bibliothèque autonome, distribuée comme JAR

AndEngineExamples - application Exemples, qui consomme le look AndEngine JAR

+0

Merci Tim. Je ne distribuerai pas ma plateforme en tant que source - je veux conserver mon adresse IP. Peut-être ai-je mal compris ces mots de cette référence ... "Une bibliothèque ne peut pas être distribuée sous la forme d'un fichier binaire (comme un fichier JAR) car le projet principal est compilé par le projet principal pour utiliser les ID de ressources corrects." C'est pourquoi j'ai migré toutes mes références de ressources dans la couche de l'application, en les passant en arguments (ou extras d'intention) dans les appels de plate-forme.La bibliothèque API de Google contient deux bocaux, qui selon ce même document peuvent être référencés. – DJC

+0

@DJC - Par mon montage, je réalise qu'EndEngine est un cas d'utilisation assez spécifique mais peut-être que certains de ses plomberies vous seront utiles. –

+0

Ty Tim ... J'avais introduit un côté d'application d'erreur, voir la mise à jour à l'article original. Je suis sur mon chemin, il semble .. et excité :) – DJC

0

en utilisant des colis, est comme un pot seulement son propre androïde. Je n'ai pas beaucoup d'expérience avec eux, mais je pense qu'ils sont assez puissants en termes de réutilisation des activités, des points de vue et des choses.

« Il (paquet) enroule un JAR et d'autres fichiers liés sur Android que vous devez utiliser efficacement que JAR. » -Développement avancé Android