diff options
Diffstat (limited to 'files/android.el')
-rw-r--r-- | files/android.el | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/files/android.el b/files/android.el new file mode 100644 index 000000000..5c662186c --- /dev/null +++ b/files/android.el @@ -0,0 +1,131 @@ +;;;; Copyright 2007 The Android Open Source Project + +;;; Set up GUD+JDB to attach to a Java process running on the phone or +;;; under the emulator. + +(defvar android-jdb-port-history '("8700") + "history of ports supplied to `android-jdb'") + +(defvar android-jdb-project-root-history '() + "history of project roots supplied to `android-jdb'") +(defvar android-jdb-history nil + "history of commands supplied to `android-jdb'") + +(defvar android-jdb-activity-class-history () + "history of activity classes supplied to `start-android-activity'") + +(defcustom android-jdb-command-name "jdb" + "Name of Java debugger." + :type 'string + :group 'android) + +(defgroup android nil + "Android Applications." + :group 'applications) + +(defcustom android-project-root nil + "This is where your Android project root is stored." + :type 'directory + :group 'android ) + +(defcustom android-apk nil + "This is where your Android Application Package is stored." + :type 'string + :group 'android) + +(defcustom android-activity-class nil + "This is where your Android Activity class is stored." + :type 'string + :group 'android) + +(defun android-read-project-root () + (if (or (string-match "XEmacs" emacs-version) + (>= emacs-major-version 22)) + (read-file-name "Android project root: " + android-project-root + nil + t + nil + 'file-directory-p) + (labels ((read-directory () + (read-file-name "Android project root: " + android-project-root + nil + t + nil))) + (do ((entered-root (read-directory) (read-directory))) + ((and entered-root + (file-directory-p entered-root)) + (expand-file-name entered-root)))))) + +(defun android-jdb (port root) + "Set GUD+JDB up to run against Android on PORT in directory ROOT." + (interactive + (list + (read-from-minibuffer "Activity's JDWP DDMS port: " + (car android-jdb-port-history) + nil + t + 'android-jdb-port-history) + (android-read-project-root))) + (setq android-project-root root) + (let ((jdb-command + (format "%s -attach localhost:%s -sourcepath%s" + android-jdb-command-name + port + (format "%s/src" root)))) + (if (not (string= jdb-command (car android-jdb-history))) + (push jdb-command android-jdb-history)) + (jdb jdb-command))) + +(defun android-emulate () + "Run the Android emulator. This expects the SDK tools directory to be in the current path." + (interactive) + (compile "emulator")) + +(defun android-install-app (apk) + "Install an Android application package APK in the Android emulator. This expects the SDK tools directory to be in the current path." + (interactive (list (expand-file-name + (read-file-name "Android Application Package (.apk): " + nil + android-apk + t + nil + nil)))) + (setq android-apk apk) + (compile (format "adb install -r %s" apk))) + +(defun android-uninstall-app (package-name) + "Uninstall an Android application package APK in the Android emulator. This expects the SDK tools directory to be in the current path. +Specify the package name --- and not the name of the application e.g., com.android.foo." + (interactive + (list + (read-from-minibuffer "Package: "))) + (compile (format "adb uninstall %s" package-name))) + +(defun android-start-activity (package class) + "Start the activity PACKAGE/CLASS in the Android emulator. This expects the SDK tools directory to be in the current path." + (interactive + (list + (read-from-minibuffer "Package: ") + (read-from-minibuffer "Activity Java class: " + (car android-jdb-activity-class-history) + nil + t + 'android-jdb-activity-class-history))) + (compile (format "adb shell am start -n %s/%s" package class))) + +(defun android-debug-activity (package class) + "Start the activity PACKAGE/CLASS within the debugger in the Android emulator. This expects the SDK tools directory to be in the current path." + (interactive + (list + (read-from-minibuffer "Package: ") + (read-from-minibuffer "Activity Java class: " + (car android-jdb-activity-class-history) + nil + t + 'android-jdb-activity-class-history))) + (compile (format "adb shell am start -D -n %s/%s" package class))) + +(provide 'android) + |