Namenskonvention für Anwendungsordner


7

Ich habe mich nur gefragt, warum die Benennung einiger Ordner auf Android so ist:

com.dropbox.android
com.android.browser

Antworten:


11

Weiter zu antworten von @PratapPatil, der die Android-Details angegeben hat.

Dies ist eine Konvention in der Programmierung, speziell hier Java.

Die Details des Java Tutorials- Pakets enthalten Details und Beispiele.

Da Programmierer weltweit Klassen und Schnittstellen mit der Programmiersprache Java schreiben, ist es wahrscheinlich, dass viele Programmierer denselben Namen für verschiedene Typen verwenden. Tatsächlich macht das vorherige Beispiel genau das: Es definiert eine Rectangle-Klasse, wenn das java.awt-Paket bereits eine Rectangle-Klasse enthält. Der Compiler erlaubt jedoch, dass beide Klassen denselben Namen haben, wenn sie sich in unterschiedlichen Paketen befinden. Der vollständig qualifizierte Name jeder Rectangle-Klasse enthält den Paketnamen. Das heißt, der vollständig qualifizierte Name der Rectangle-Klasse im Grafikpaket lautet graphics.Rectangle, und der vollständig qualifizierte Name der Rectangle-Klasse im java.awt-Paket lautet java.awt.Rectangle.

Dies funktioniert gut, es sei denn, zwei unabhängige Programmierer verwenden denselben Namen für ihre Pakete. Was verhindert dieses Problem? Konvention.

Regeln der Namensgebung

Paketnamen werden in Kleinbuchstaben geschrieben, um Konflikte mit den Namen von Klassen oder Schnittstellen zu vermeiden.

Unternehmen verwenden ihren umgekehrten Internetdomänennamen , um ihre Paketnamen zu beginnen, z. B. com.example.mypackage für ein Paket mit dem Namen mypackage, das von einem Programmierer unter example.com erstellt wurde.

Namenskollisionen, die innerhalb eines einzelnen Unternehmens auftreten, müssen gemäß den Konventionen innerhalb dieses Unternehmens behandelt werden, z. B. indem die Region oder der Projektname nach dem Firmennamen eingefügt werden (z. B. com.example.region.mypackage).

Für einen alternativen Blickwinkel geht es bei der StackOverflow-Frage darum, ein Hobbyprojekt zu benennen. Die Benennung könnte so etwas wie sein, rossc.android.exampleproject da ich keine eigene Domain habe.


5

Jede Android-App hat Zugriff auf einen Dateibereich in der / data-Partition, der für die App privat ist. Hier befinden sich die SQLite-Datenbanken und Benutzereinstellungen (gemeinsame Einstellungen). Der Entwickler der App muss sich keine Gedanken über die Namenskonvention oder den Speicherort der Dateien machen, die er in Bezug auf diesen privaten Bereich speichern möchte.

Wenn jedoch Daten von einer App auf einer SD-Karte (im öffentlichen Raum) gespeichert werden sollen, muss die App sicherstellen, dass der von der App erstellte Ordner eindeutig ist und von keiner anderen App oder vom Gerätebenutzer verwendet wird. Android OS (AndroidManifest) identifiziert eine App eindeutig anhand ihres Paketnamens. Welche finden Sie sogar die Playstore-URLs. Beispiel: https://play.google.com/store/apps/details?id=com.dropbox.android

Daher verwenden Entwickler diese Paketnamen, um Ordner zu erstellen, um Konflikte mit anderen Apps zu vermeiden. Dieser Weg garantiert nicht, dass es keinen Konflikt gibt, verhindert ihn jedoch weitgehend.

Ein weiterer Grund ist folgender: Wenn der Benutzer die Anwendungsdaten auf eine SD-Karte verschiebt, werden die Daten aus dem privaten Bereich der Anwendung in den öffentlichen Bereich (SD-Karte) verschoben. Dieser private Bereich wird folgendermaßen benannt: -

Beispiel: /data/data/com.dropbox.android. Dies wird also nach /sdcard/something/com.dropbox.android verschoben


Korrektur: Wenn jede App einen eigenen Namen verwendet, es würde Kollisionen verhindern, wie zwei Anwendungen mit dem gleichen Namen können nicht installiert werden , wenn (sie sind, für Android, die gleiche app).
Darkhogg

Noch präziser: Verhindert immer Kollisionen, solange beide Apps aus dem Play Store stammen. Wenn Sie eine App hätten und eine mit demselben Paketnamen von außerhalb des Play Stores heruntergeladen hätten, würde sie meiner Meinung nach die vorherige bei der Installation ersetzen. Ich bin mir nicht sicher, welche Warnungen das System geben könnte.
MPeti
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.