aboutsummaryrefslogtreecommitdiff
path: root/files/android.el
diff options
context:
space:
mode:
Diffstat (limited to 'files/android.el')
-rw-r--r--files/android.el131
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)
+