From b05a38b6a8551f2f102cd3b7a4c8c1a3d32832dc Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Tue, 1 Dec 2015 21:52:31 +1100 Subject: [PATCH 1/3] New topic for installing old releases --- .../Android_SDK_Manager_Platform_tools.png | Bin 0 -> 45570 bytes doc/contributing_working_with_releases.rst | 61 ++++++++++++++++++ doc/index.rst | 1 + 3 files changed, 62 insertions(+) create mode 100644 doc/_static/images/Android_SDK_Manager_Platform_tools.png create mode 100644 doc/contributing_working_with_releases.rst diff --git a/doc/_static/images/Android_SDK_Manager_Platform_tools.png b/doc/_static/images/Android_SDK_Manager_Platform_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..8f51ad154fb48586b141bb6f712a273fbeaeb3f7 GIT binary patch literal 45570 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 (on both +devices and on the Android simulator). + +Sometimes it is useful to be able to access new features that are available only in beta releases, or to test your +application against older releases. In this case you will need to install the appropriate Android application package (APK). + +You can find all releases (beta and stable) on the `Project Releases `_ page on +Github, along with source code for the release. The file's with extension **.apk** can be installed using the +`Android Debug Bridge tool (adb) `_. + + + +Installation steps +================== + +#. Install the **adb** tool using the *Android SDK Manager*. + + .. figure:: _static/images/Android_SDK_Manager_Platform_tools.png + + The tool is part of the *Android SDK Platform tools* as shown. + It is installed to */sdk/platform-tools*. The path to the **sdk** is shown in the SDK Manager + above (highlighted in blue). + +#. Connect your device. Instructions for launching a `virtual device are here `_ + and instructions for using `Hardware Devices are here `_. + + You can verify the connection by running *adb*: + + .. code-block:: bash + + > adb devices + + List of devices attached + 3204672ab49bc1f5 device + +#. Download the `adk file/release of interest `_ and install it. + For example, running adb from the **platform-tools** directory, we might install a file as shown + + + .. code-block:: bash + + > adb install D:\MyFiles\3dr-services-release.104022.apk + + 5331 KB/s (3762561 bytes in 0.689s) + pkg: /data/local/tmp/3dr-services-release.104022.apk + Success + + .. note:: + + Installation will fail if a version of the file already exists. + If you need to install a new version, manually uninstall the old + version first/. + +After installation the *3DR Services* app icon will appear on your device. You can confirm the version is +correct by viewing the version string in the app footer. \ No newline at end of file diff --git a/doc/index.rst b/doc/index.rst index d7c2a7d138..ca9a91e00f 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -23,5 +23,6 @@ Contents: getting_started first_app pebble_app + contributing_working_with_releases resources From b15d695da174f9ae49a95c487e7f6ad991b34e09 Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Mon, 7 Dec 2015 16:47:18 +1100 Subject: [PATCH 2/3] Add section on building from source --- ...Android_Studio_Import_Dronekit_Android.png | Bin 0 -> 22544 bytes doc/contributing_building_from_source.rst | 105 ++ doc/first_app.rst | 995 +++++++++--------- doc/getting_started.rst | 1 + doc/index.rst | 1 + 5 files changed, 605 insertions(+), 497 deletions(-) create mode 100644 doc/_static/images/Android_Studio_Import_Dronekit_Android.png create mode 100644 doc/contributing_building_from_source.rst diff --git a/doc/_static/images/Android_Studio_Import_Dronekit_Android.png b/doc/_static/images/Android_Studio_Import_Dronekit_Android.png new file mode 100644 index 0000000000000000000000000000000000000000..718f2074cb49a7ad67c1a4332f7570accf16e8e4 GIT binary patch literal 22544 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 L&bIZ|xa9u>7kY8t literal 0 HcmV?d00001 diff --git a/doc/contributing_building_from_source.rst b/doc/contributing_building_from_source.rst new file mode 100644 index 0000000000..2f7c440d17 --- /dev/null +++ b/doc/contributing_building_from_source.rst @@ -0,0 +1,105 @@ +===================================== +Building DroneKit-Android from Source +===================================== + +Developers who want to contribute to DroneKit-Android will need to to modify and build the +*3DR Services* (**ServiceApp**) source code, which contains the DroneKit-Android client library (**ClientLib**). + +The build process creates a +`.aar file `_ +*definition* of the client API. In order to use the modifications your DroneKit-Android apps must specify +this file as a dependency rather than the definition file hosted online for official releases. + +.. tip:: + + If you just want to access old releases you don't need to rebuild the source + (see :doc:`contributing_working_with_releases` for more information). + + + +Build 3DR Services App (DroneKit-Android) +========================================= + +The steps to modify and build the *3DR Services* app are: + +#. Fork and clone the `DroneKit-Android Repo `_. + +#. Import the project root directory into Android Studio. Android Studio will automatically recognize all the sub-apps inside), as shown below: + + .. figure:: _static/images/Android_Studio_Import_Dronekit_Android.png + :width: 400px + +#. Modify DroneKit-Android as needed. + + .. tip:: + + You might want to skip this step for now and come back when you've verified that you can built the project. + +#. Build the project (**Build | Rebuild Project**). + + + .. note:: + + Android Studio will generate an **.aar** file in the directory **DroneKit-Android/ClientLib/build/outputs/aar/** + (for example, **dronekit-android.2.7.0.aar**). This file contains the definition of the locally built + DroneKit-Android client API, including any changes you made to the project. This is the dependency file that + DroneKit-Android apps will have to link against in order to access your new functionality. + + The version number of the **.aar** file is generated automatically. + +#. Select the **Run** button in Android-Studio (with your Android device connected). + This will install your rebuilt *3DR Services* app to your device. + + + +Update your DroneKit-Android App +================================ + +This section shows how to update your project to use the locally generated *aar* file created in the previous section (instead of +the cloud hosted definition used when making releases). + +For easy comparison with the "normal" case, here we use the same *Hello Drone Android App* described earlier. + +#. Fork and Clone `Hello Drone Android App `_. + +#. Open the app in Android Studio. + +#. Update the app build dependencies so that it uses the local **.aar** file rather than the definition in the online repo: + + * Find **build.gradle** file for the project and open it. + Add a ``flatDir`` attribute inside the ``allprojects | repositories`` entry. + This should contain the path to the directory **DroneKit-Android/ClientLib/build/outputs/aar**: + + .. code-block:: text + :emphasize-lines: 5-7 + + allprojects { + repositories { + jcenter() + + flatDir { + dirs 'libs','../../DroneKit-Android/ClientLib/build/outputs/aar' + } + + } + } + + * Find the *build.gradle* (for the Module:app) and open it. Find the entry for the online definition of + DroneKit-Android ``compile 'com.o3dr.android:dronekit-android:2.3.+'`` + and replace it with the local file ``compile(name:'dronekit-android.2.7.0', ext:'aar')``: + + .. code-block:: cpp + :emphasize-lines: 5-6 + + dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:21.0.3' + + // compile 'com.o3dr.android:dronekit-android:2.3.+' + compile(name:'dronekit-android.2.7.0', ext:'aar') + } + + +#. Save everything and then select the *Android-Studio* menu: **Tools | Android | Sync Android with Gradle Files**. This will automatically search all dependency libs (including our local DroneKit build) and link it in our code. + +That's it - the build process will now use your locally created version of DroneKit-Android. \ No newline at end of file diff --git a/doc/first_app.rst b/doc/first_app.rst index 654097ba4c..cfe229ee75 100644 --- a/doc/first_app.rst +++ b/doc/first_app.rst @@ -30,7 +30,8 @@ Adding the Client Library To add the 3DR Services library to your project: -#. Open **build.gradle (Module:app)** and, under the dependencies section, add: +#. Open **build.gradle (Module:app)** and, under the dependencies section add a + reference to the 3DR Services Client library: .. code-block:: bash @@ -52,25 +53,25 @@ Implement a ``TowerListener`` on your ``MainActivity`` to listen for events sent :linenos: :emphasize-lines: 1,4-12 - public class MainActivity extends ActionBarActivity implements TowerListener { + public class MainActivity extends ActionBarActivity implements TowerListener { - // 3DR Services Listener - @Override - public void onTowerConnected() { - - } + // 3DR Services Listener + @Override + public void onTowerConnected() { - @Override - public void onTowerDisconnected() { - - } + } - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } - } + @Override + public void onTowerDisconnected() { + + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + } + } Now you'll need to: @@ -116,7 +117,7 @@ Now you'll need to: @Override public void onTowerDisconnected() { - + } @Override @@ -148,65 +149,65 @@ Now that you have a virtual drone, let’s add the ability to connect to it. First, declare that your ``MainActivity`` can act as an interface for DroneListener and implement some methods to listen for drone events. .. code-block:: java - :linenos: - :emphasize-lines: 1-15 + :linenos: + :emphasize-lines: 1-15 - public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener { - @Override - public void onDroneEvent(String event, Bundle extras) { + public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener { + @Override + public void onDroneEvent(String event, Bundle extras) { + + } - } + @Override + public void onDroneConnectionFailed(ConnectionResult result) { - @Override - public void onDroneConnectionFailed(ConnectionResult result) { - - } + } - @Override - public void onDroneServiceInterrupted(String errorMsg) { + @Override + public void onDroneServiceInterrupted(String errorMsg) { - } + } - ... - } + ... + } Next, add an instance variable to the top of your ``MainActivity`` to keep track of the drone instance. .. code-block:: java - :linenos: - :emphasize-lines: 2-3 + :linenos: + :emphasize-lines: 2-3 - public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener { - private Drone drone; - private int droneType = Type.TYPE_UNKNOWN; + public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener { + private Drone drone; + private int droneType = Type.TYPE_UNKNOWN; In order to register with the control tower, the drone instance needs a generic Android handler. Go ahead and add a handler where you declare your instance variables. .. code-block:: java - :linenos: - :emphasize-lines: 4 + :linenos: + :emphasize-lines: 4 - public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener { - private Drone drone; - private int droneType = Type.TYPE_UNKNOWN; - private final Handler handler = new Handler(); + public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener { + private Drone drone; + private int droneType = Type.TYPE_UNKNOWN; + private final Handler handler = new Handler(); Add an instantiation of the new drone upon the creation of your ``MainActivity``. After creation, the new drone will need to be registered with the control tower to be active. .. code-block:: java - :linenos: - :emphasize-lines: 7 - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - this.serviceManager = new ServiceManager(getApplicationContext()); - this.drone = new Drone(); - } + :linenos: + :emphasize-lines: 7 + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + this.serviceManager = new ServiceManager(getApplicationContext()); + this.drone = new Drone(); + } @Override public void onTowerConnected() { @@ -218,33 +219,33 @@ Add an instantiation of the new drone upon the creation of your ``MainActivity`` Make sure that when the ``MainActivity`` is stopped, the drone is unregistered from the control tower. .. code-block:: java - :linenos: - :emphasize-lines: 4-8 - - @Override - public void onStop() { - super.onStop(); - if (this.drone.isConnected()) { - this.drone.disconnect(); - updateConnectedButton(false); - } + :linenos: + :emphasize-lines: 4-8 + + @Override + public void onStop() { + super.onStop(); + if (this.drone.isConnected()) { + this.drone.disconnect(); + updateConnectedButton(false); + } this.controlTower.unregisterDrone(this.drone); this.controlTower.disconnect(); - } + } Now let's add a button in **activity_main.xml** that will connect to the drone on press. Open **activity_main.xml** and add the following: .. code-block:: xml - :linenos: + :linenos: -