Jump to content


Photo

Getting the legacy Android GCS up on newer versions (like 13.06.04)


  • Please log in to reply
232 replies to this topic

#1 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 05 March 2014 - 08:02 AM

Please note this is a 100% solo effort (thus far). I just went out and bought an old Samsung Galaxy Tab 10.1 for this task. I wanted to see if I could learn something as I have been intentionally avoiding Android over the years. 

Bh8rU9XIYAALViA.jpg

 

I've spent the last few days navigating from the *old* (http://forums.openpi...evelopment old) thread to the *new* thread (http://forums.openpilot.org/topic/18671-android-gcs-development-new/) and about every damn place in between that you could wind up. =] I don't care to admit how much time I have spent staring at git, Fisheye changes, Pull requests, etc. 

 

None the less I have been making some progress. I felt like I was cluttering up the *new* thread so I wasted to start my own. Several of you already know that the Google Play version of OpenPilot legacy Android GCS has a wonderful Nag screen that I have been on a quest to get out of my face. 

 

Here is where I am for now, not bad really for a few days work! I also now understand the innards of WHY certain firmware versions are prevented from connecting. 

 

Just in case anyone was following along I'll start adding notes here and keep them isolated. 

 

To make a long story short, several versions of the available GCS apk files do not include the correct UAVO .jar files. 

I have prepackaged some of them here if you need them for your own testing (and do not wish to compile them)

The archive file is located here: http://www.digitalmu...n.com/uavos.jar

$ tar czvf uavos.jar ./OpenPilot/androidgcs/assets/uavos/
a ./OpenPilot/androidgcs/assets/uavos
a ./OpenPilot/androidgcs/assets/uavos/0393a8fb439f831f.jar
a ./OpenPilot/androidgcs/assets/uavos/29b837c47aba763e.jar
a ./OpenPilot/androidgcs/assets/uavos/385035f6cd225ea2.jar
a ./OpenPilot/androidgcs/assets/uavos/bd99d74f71222a7d.jar

They are associated with the following UAVO versions:

#UAVO_GIT_VERSIONS := 5e14f53 # 12.10.2
#UAVO_GIT_VERSIONS := 85c222e # 14.01
#UAVO_GIT_VERSIONS := b58620c # ??? (random git pick)
UAVO_GIT_VERSIONS := c267d73 # 13.06.04

To generate these files I looked for a few target commits to build after.

 

For example I looked for rel-13.06.04 that had been "merged into next" by using

 

git log | more
-------
Author: Alessio Morale <alessiomorale@gmail.com>
Date:   Sat Aug 17 15:39:52 2013 +0200

    Merge remote-tracking branch 'origin/rel-13.06.04'

commit c267d73b42a55a4003d352eb0c3d6185391e4c9b
-------

 

The above entry coresponds to
RELEASE-13.06.04

I truncated the commit hash down to 7 chars and used it in the make file
UAVO_GIT_VERSIONS := c267d73

you see this when you compile... the number after the "->" becomes the jar file name. This gives you a success indicator

...

- OpenPilot UAVObject Generator -
Done: processed 97 XML files and generated 97 objects with no ID collisions. Total size of the data fields is 3689 bytes.
generating java code
UAVOTAR   c267d73
UAVOUNTAR c267d73
UAVOHASH  c267d73 -> 385035f6cd225ea2
UAVOJAVA  c267d73    385035f6cd225ea2

I was able to use this build (and associated 385035f6cd225ea2.jar) with a board running RELEASE-13.06.04

 

The existing (TauLabs) OpenPilot GCS GooglePlay App uses the following jar file.
bd99d74f71222a7d.jar

This corresponds to the version the mention in the description as RELEASE-12.10.2

 

The version is set in the current Makefile for the most recent source (And is what the GooglePlay app is compiled with)

UAVO_GIT_VERSIONS := 5e14f53

This is based on the following git commit entry

--------
Author: Oleg Semyonov <os@openpilot.org>
Date:   Thu Nov 29 17:31:50 2012 +0200

    Merge remote-tracking branch 'origin/rel-12.10.2' into next

    Conflicts:
        MILESTONES.txt

commit 5e14f5352fb3e82c320a3ccf68a4279782d57446

------

 

Again, we simply truncate down to the first 7 characters to get the UAVO hash. 

 

Logically working with the latest release would follow the same guide lines.
RELEASE-14.01

UAVO_GIT_VERSIONS := 85c222e

-------
Author: Alessio Morale <alessiomorale@gmail.com>
Date:   Fri Feb 21 19:16:02 2014 +0100

    Merge branch 'rel-14.01' into next

commit 85c222e7cbf37f21b5712ec8f6a554c2df7a1d3f

--------

Instead we get a failure...

D/UsbRequestJNI( 1752): init
D/TelemetryTask( 1752): Entering UAVTalk processing loop
E/HidUAVTalk( 1752): Dropped data.  Size:220 data length: 39
D/UAVTalk ( 1752): Canceling transaction: GCSTelemetryStats
D/UAVTalk ( 1752): Canceling transaction: GCSTelemetryStats

or if we try to use the PFD

E/AndroidRuntime( 1752): FATAL EXCEPTION: main
E/AndroidRuntime( 1752): java.lang.NullPointerException
E/AndroidRuntime( 1752):        at org.openpilot.androidgcs.fragments.PFD.objectUpdated(PFD.java:75)
E/AndroidRuntime( 1752):        at org.openpilot.androidgcs.fragments.PFD.onOPConnected(PFD.java:64)
E/AndroidRuntime( 1752):        at org.openpilot.androidgcs.ObjectManagerActivity$OnConnectionListener.update(ObjectManagerActivity.java:433)

vs. what we see on a successful attempt:

D/TelemetryTask( 1596): Entering UAVTalk processing loop
D/OPTelemetryService( 1596): Starting dex loader
D/dalvikvm( 1596): DexOpt: --- BEGIN 'bd99d74f71222a7d.jar' (bootstrap=0) ---
D/dalvikvm( 1623): DexOpt: load 6ms, verify+opt 0ms, 103636 bytes
D/dalvikvm( 1596): DexOpt: --- END 'bd99d74f71222a7d.jar' (success) ---
D/dalvikvm( 1596): DEX prep '/data/data/org.openpilot.androidgcs/app_jars/bd99d74f71222a7d.jar': unzip in 3ms, rewrite 134ms

There is also a trick that I learned at https://github.com/T.../pull/942/files to add in a boat load of historic UAVObjects

git log --format=%h -- shared/uavobjectdefinition/ | head -n 6 | tr '\n' ' '

which gives you: UAVO_GIT_VERSIONS := 3cf1662 b846ba3 a0baa17 4a29db4 55fc327 ebe320b

 

At the very least there have been some major changes that I need to look into. I think some of my problems connecting to 14.x are USB related. For exampled I noted some things in Tau handles their USB data based on a quick diff of UAVTalk.java

 

diff -y ./src/org/openpilot/uavtalk/UAVTalk.java ../../TauLabs//androidgcs/src/org/taulabs/androidgcs/telemetry/HidUAVTalk.java

 

There was some recent work centered around http://torvafirmus-a...terface-in.html so I need to wrap my head around what IF anything that means in the context of my connectivity issues to 14.x. 

 

Again if anyone is trying to follow along I have uploaded one of the .apk files from a recent compile here that should work with 13.06.06: http://www.digitalmu...idgcs-debug.apk

The Google API is set to 16 so you will need at least a 4.x device. 

$ adb install ./build/androidgcs/bin/androidgcs-debug.apk
1268 KB/s (1197385 bytes in 0.921s)
pkg: /data/local/tmp/androidgcs-debug.apk
Success

This binary is my attempt to merge the rel-14.01 code, With what is left of the legacy GCS here 11 months ago - http://git.openpilot...b8aff9b5bb0d7f4

$ git checkout origin/rel-14.01
Switched to branch 'origin/rel-14.01'

(do some voodoo)

 

I have some patches that facilitated some forward movement (for me) which I am sharing at http://www.digitalmu...13.06.04.tar.gz (and attached to the post)  

This is literally a hack, I modded some files, checked out the branch and did a cp into the current code: 

$ cp -rfv ../OpenPilot/Makefile ../OpenPilot/androidgcs . ; cp -rfv ../OpenPilot/flight/uavobjects flight/; cp -rfv ../OpenPilot/ground/openpilotgcs/src/plugins/uavobjects ground/openpilotgcs/src/plugins/;  cp -rfv ../OpenPilot/ground/openpilotgcs/src/libs ground/openpilotgcs/src/; cp ../OpenPilot/make/scripts/version-info.py make/scripts/

More to some soon hopefully! Don't mind my mess... let me know if you have questions or wanna help me out. I am currently combing the "3rd party" issues lists to see how different the Google Play app is since the *current* code is kept under wraps. 

 

This is my current TODO reading list (in no particular order):

https://github.com/T...Labs/issues/117

https://groups.googl...lA/UefpdGVmEZYJ
https://groups.googl..._E/9e1gXEGv_jsJ
https://groups.googl...vs/LfCjw_n-skgJ
https://github.com/T...Labs/issues/964
https://github.com/T...auLabs/pull/942
https://github.com/T...auLabs/pull/605
https://github.com/T...TauLabs/pull/52
https://github.com/T...Labs/issues/775
https://github.com/p...c6eaaadf4a5e42a
https://github.com/p...76edb4938f3a011
https://github.com/p...9aea9078e9c3735
https://github.com/T...b3464b9b0dee806
https://github.com/T...auLabs/pull/116
https://github.com/T...3602c6e78e4249e
http://buildandcrash...oid-update.html
http://wiki.openpilo...-info.pyutility
https://github.com/T...Labs/issues/812
http://forums.openpi...ss/#entry110784
http://git.openpilot...e25211c8158b252
http://git.openpilot...98f0cf502c5b0c7
http://git.openpilot...978cf73f2ecfae0
http://git.openpilot...27d2dd00b00231b
http://forums.openpi...es-and-android/
https://github.com/T...9ccd60ab0cf3865
https://github.com/T...aa844c96893dfb5
http://git.openpilot...ru/OPReview-271
https://play.google....ndroidgcs&hl=en
https://github.com/T.../pull/179/files
https://github.com/T...Labs/issues/455
http://git.openpilot...ATE&userFilter=
http://git.openpilot...ATE&userFilter=
https://github.com/T...use-google-maps.
https://github.com/T...TauLabs/pull/75
https://github.com/T...auLabs/pull/118
https://github.com/T...990db1ce8bbc8c8

Attached Files



#2 m_thread

m_thread

    A Happy Camper

  • Members
  • PipPipPip
  • 1435 posts
  • LocationStockholm
  • Country: flag of Sweden Sweden


Posted 05 March 2014 - 08:33 AM

Great! Lets get this part of the project running again.

 

If we could get a stable and robust UAVTalk implementation for Android finished the sky is the limit for what we could do really.

 

/Fredrik



#3 Trivoty

Trivoty

    Advanced Member

  • Members
  • PipPipPip
  • 520 posts
  • Country: flag of Netherlands Netherlands


Posted 05 March 2014 - 09:35 AM

That is some great progress. Nice job!

 

btw: that's one hell of a todo list :blink:



#4 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 05 March 2014 - 02:49 PM

That is some great progress. Nice job!

 

btw: that's one hell of a todo list :blink:

 

I concur... unfortunately although some folks claim they like their source "open" they have a history of making it hard to track changes.

https://twitter.com/...541977845608448

 

Hence why my todo list is so large. 

 

Next steps are comparing the decompiled code in the PlayStore app to the list above, I am trying to find out what is *really* missing. 

$ tar -zxvf apktool-install-macosx-r05-ibot.tar.bz2
x apktool-install-macosx-r05-ibot/aapt
x apktool-install-macosx-r05-ibot/
x apktool-install-macosx-r05-ibot/apktool
$ tar -zxvf apktool1.5.2.tar.bz2
x apktool1.5.2/
x apktool1.5.2/apktool.jar
cd apktool-install-macosx-r05-ibot/
$ ln -s ../apktool1.5.2/apktool.jar .

Go to http://apps.evozi.com/apk-downloader/ and paste in https://play.google....ndroidgcs&hl=en

Click "Generate Download Link" and pull it down - http://storage2.evoz...Ag&t=1394030534 (Your download token will eventually expire) by clicking the green "Click here to download org.openpilot.androidgcs now" button. 

 

Next up you decompile the .apk

$ ./apktool d ../org.openpilot.androidgcs.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /Users/kevinfinisterre/Library/apktool/framework/1.apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...

Of course I have provided said decompiled here for the lazy folks: http://www.digitalmu...droidgcs.tar.gz

 

We can see one of the annoying add ons of course, a quick Google will verify that this repo is not online anywhere... 

$ grep "Tau Labs" . -r
./res/layout/gcs_home.xml:    <TextView android:textAppearance="?android:textAppearanceSmall" android:id="@id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Development on OpenPilot app has moved to Tau Labs. To follow future developement check out forums.taulabs.org.  Use the button below to get the latest app." />
./res/layout/gcs_home.xml:    <Button android:id="@id/tau_labs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Get Tau Labs" />
./res/layout-w600dp/gcs_home.xml:    <TextView android:textAppearance="?android:textAppearanceSmall" android:id="@id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Development on OpenPilot app has moved to Tau Labs. To follow future developement check out forums.taulabs.org.  Use the button below to get the latest app." /> />
./res/layout-w600dp/gcs_home.xml:<Button android:id="@id/tau_labs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Get Tau Labs" />
Kevins-iMac:org.openpilot.androidgcs kevinfinisterre$ grep "Development" . -r
./res/layout/gcs_home.xml:    <TextView android:textAppearance="?android:textAppearanceSmall" android:id="@id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Development on OpenPilot app has moved to Tau Labs. To follow future developement check out forums.taulabs.org.  Use the button below to get the latest app." />
./res/layout-w600dp/gcs_home.xml:    <TextView android:textAppearance="?android:textAppearanceSmall" android:id="@id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Development on OpenPilot app has moved to Tau Labs. To follow future developement check out forums.taulabs.org.  Use the button below to get the latest app." /> />

Try searching for "app has moved to Tau Labs." on Google... crickets. ;) https://www.google.c...d to Tau Labs."

 

JD-GUI is the other option, as it provides actual .java rather than decompiled smali code - http://jd.benow.ca

$ file org.openpilot.androidgcs.apk
org.openpilot.androidgcs.apk: Zip archive data, at least v1.0 to extract

 

$ unzip org.openpilot.androidgcs.apk
Archive:  org.openpilot.androidgcs.apk
extracting: assets/models/TEXTURE.PNG 
extracting: assets/uavos/a23c2254b4fc6b6d.jar 
extracting: assets/uavos/bd99d74f71222a7d.jar 
  inflating: res/layout/controller.xml 
  inflating: res/layout/dualjoystick.xml 
  inflating: res/layout/gcs_home.xml 
  inflating: res/layout/logger.xml  
  inflating: res/layout/map_layout.xml 
  inflating: res/layout/object_browser.xml 
  inflating: res/layout/object_editor.xml 
  inflating: res/layout/object_view.xml 
  inflating: res/layout/pfd.xml     
  inflating: res/layout/system_alarms.xml 
  inflating: res/layout/system_alarms_fragment.xml 
  inflating: res/layout/telemetry_stats.xml 
  inflating: res/layout/telemetry_widget.xml 
  inflating: res/layout/tuning.xml  
  inflating: res/menu/options_menu.xml 
  inflating: res/menu/status_menu.xml 
  inflating: res/xml/controller_preferences.xml 
  inflating: res/xml/device_filter.xml 
  inflating: res/xml/preferences.xml 
  inflating: res/xml/telemetry_widget_info.xml 
  inflating: AndroidManifest.xml    
extracting: resources.arsc         
extracting: res/drawable-hdpi/browser_icon.png 
extracting: res/drawable-hdpi/ic_alarms.png 
extracting: res/drawable-hdpi/ic_browser.png 
extracting: res/drawable-hdpi/ic_controller.png 
extracting: res/drawable-hdpi/ic_home.png 
extracting: res/drawable-hdpi/ic_logging.png 
extracting: res/drawable-hdpi/ic_logo.png 
extracting: res/drawable-hdpi/ic_map.png 
extracting: res/drawable-hdpi/ic_pfd.png 
extracting: res/drawable-hdpi/ic_telemetry.png 
extracting: res/drawable-hdpi/ic_tuning.png 
extracting: res/drawable-hdpi/ic_uav.png 
extracting: res/drawable-hdpi/im_pfd_fixed.png 
extracting: res/drawable-hdpi/im_pfd_horizon.png 
extracting: res/drawable-hdpi/im_pfd_reticule.png 
extracting: res/drawable-ldpi/browser_icon.png 
extracting: res/drawable-ldpi/icon.png 
extracting: res/drawable-mdpi/browser_icon.png 
extracting: res/drawable-mdpi/icon.png 
  inflating: res/layout-w600dp/gcs_home.xml 
  inflating: res/layout-w600dp/tuning.xml 
  inflating: classes.dex            
  inflating: lib/armeabi/libosgNativeLib.so 
  inflating: lib/armeabi-v7a/libosgNativeLib.so 
  inflating: META-INF/MANIFEST.MF   
  inflating: META-INF/CERT.SF       
  inflating: META-INF/CERT.RSA

Use dex2jar on the classes.dex file

$ dex2jar classes.dex
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.15
dex2jar classes.dex -> classes_dex2jar.jar
Done.

You can verify your results

$ tar -zxvf ../classes_dex2jar.jar
x com/
x com/MobileAnarchy/
x com/MobileAnarchy/Android/
x com/MobileAnarchy/Android/Widgets/
x com/MobileAnarchy/Android/Widgets/DockPanel/
x com/MobileAnarchy/Android/Widgets/DockPanel/DockPanel$1.class
x com/MobileAnarchy/Android/Widgets/DockPanel/DockPanel$2.class
x com/MobileAnarchy/Android/Widgets/DockPanel/DockPanel$3.class
x com/MobileAnarchy/Android/Widgets/DockPanel/DockPanel$4.class
x com/MobileAnarchy/Android/Widgets/DockPanel/DockPanel.class
x com/MobileAnarchy/Android/Widgets/DockPanel/DockPosition.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DragAndDropManager$1.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DragAndDropManager.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DragSurface.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DraggableItem.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DraggableViewsFactory.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DropZone.class
x com/MobileAnarchy/Android/Widgets/DragAndDrop/DropZoneEventsListener.class
x com/MobileAnarchy/Android/Widgets/Joystick/
x com/MobileAnarchy/Android/Widgets/Joystick/DualJoystickView.class
x com/MobileAnarchy/Android/Widgets/Joystick/JoystickClickedListener.class
x com/MobileAnarchy/Android/Widgets/Joystick/JoystickMovedListener.class
x com/MobileAnarchy/Android/Widgets/Joystick/JoystickView$1.class
x com/MobileAnarchy/Android/Widgets/Joystick/JoystickView.class
x com/MobileAnarchy/Android/Widgets/ThresholdEditText/
x com/MobileAnarchy/Android/Widgets/ThresholdEditText/ThresholdEditText$1.class
x com/MobileAnarchy/Android/Widgets/ThresholdEditText/ThresholdEditText$2.class
x com/MobileAnarchy/Android/Widgets/ThresholdEditText/ThresholdEditText.class
x com/MobileAnarchy/Android/Widgets/ThresholdEditText/ThresholdTextChanged.class
x com/MobileAnarchy/Android/Widgets/TilesLayout/
x com/MobileAnarchy/Android/Widgets/TilesLayout/SingleTileLayout.class
x com/MobileAnarchy/Android/Widgets/TilesLayout/TilePosition.class
x com/MobileAnarchy/Android/Widgets/TilesLayout/TilesLayout$1.class
x com/MobileAnarchy/Android/Widgets/TilesLayout/TilesLayout.class
x com/MobileAnarchy/Android/Widgets/TilesLayout/TilesLayoutPreset.class
x org/
x org/openpilot/
x org/openpilot/androidgcs/
x org/openpilot/androidgcs/AttitudeView.class
x org/openpilot/androidgcs/BluetoothDevicePreference.class
x org/openpilot/androidgcs/BuildConfig.class
x org/openpilot/androidgcs/CompassView.class
x org/openpilot/androidgcs/Controller$1.class
x org/openpilot/androidgcs/Controller$2$1.class
x org/openpilot/androidgcs/Controller$2.class
x org/openpilot/androidgcs/Controller$3.class
x org/openpilot/androidgcs/Controller$4.class
x org/openpilot/androidgcs/Controller$5.class
x org/openpilot/androidgcs/Controller$6.class
x org/openpilot/androidgcs/ObjectManagerActivity.class
x org/openpilot/androidgcs/Controller.class
x org/openpilot/androidgcs/HomePage$1.class
x org/openpilot/androidgcs/HomePage$2.class
x org/openpilot/androidgcs/HomePage$3.class
x org/openpilot/androidgcs/HomePage$4.class
x org/openpilot/androidgcs/HomePage$5.class
x org/openpilot/androidgcs/HomePage$6.class
x org/openpilot/androidgcs/HomePage$7.class
x org/openpilot/androidgcs/HomePage$8.class
x org/openpilot/androidgcs/HomePage.class
x org/openpilot/androidgcs/Logger.class
x org/openpilot/androidgcs/ObjectBrowser$1.class
x org/openpilot/androidgcs/ObjectBrowser$2.class
x org/openpilot/androidgcs/ObjectBrowser$3.class
x org/openpilot/androidgcs/ObjectBrowser$4.class
x org/openpilot/androidgcs/ObjectBrowser$5.class
x org/openpilot/androidgcs/ObjectBrowser$6.class
x org/openpilot/androidgcs/ObjectBrowser.class
x org/openpilot/androidgcs/ObjectEditView$1.class
x org/openpilot/androidgcs/ObjectEditView.class
x org/openpilot/androidgcs/ObjectEditor$1.class
x org/openpilot/androidgcs/ObjectEditor$2.class
x org/openpilot/androidgcs/ObjectEditor$3.class
x org/openpilot/androidgcs/ObjectEditor.class
x org/openpilot/androidgcs/ObjectManagerActivity$1$1.class
x org/openpilot/androidgcs/ObjectManagerActivity$1.class
x org/openpilot/androidgcs/ObjectManagerActivity$2.class
x org/openpilot/androidgcs/ObjectManagerActivity$3.class
x org/openpilot/androidgcs/ObjectManagerActivity$ActivityUpdatedObserver$1.class
x org/openpilot/androidgcs/ObjectManagerActivity$ActivityUpdatedObserver.class
x org/openpilot/androidgcs/ObjectManagerActivity$ConnectionObserver.class
x org/openpilot/androidgcs/ObjectManagerActivity$FragmentUpdatedObserver$1.class
x org/openpilot/androidgcs/ObjectManagerActivity$FragmentUpdatedObserver.class
x org/openpilot/androidgcs/ObjectManagerActivity$OnConnectionListener.class
x org/openpilot/androidgcs/PfdActivity.class
x org/openpilot/androidgcs/Preferences$PrefsFragment.class
x org/openpilot/androidgcs/Preferences.class
x org/openpilot/androidgcs/R$array.class
x org/openpilot/androidgcs/R$attr.class
x org/openpilot/androidgcs/R$color.class
x org/openpilot/androidgcs/R$drawable.class
x org/openpilot/androidgcs/R$id.class
x org/openpilot/androidgcs/R$layout.class
x org/openpilot/androidgcs/R$menu.class
x org/openpilot/androidgcs/R$string.class
x org/openpilot/androidgcs/R$styleable.class
x org/openpilot/androidgcs/R$xml.class
x org/openpilot/androidgcs/R.class
x org/openpilot/androidgcs/SystemAlarmActivity.class
x org/openpilot/androidgcs/TelemetryWidget.class
x org/openpilot/androidgcs/TuningActivity.class
x org/openpilot/androidgcs/UAVLocation$1.class
x org/openpilot/androidgcs/UAVLocation$2.class
x org/openpilot/androidgcs/UAVLocation$ActivityUpdatedObserver$1.class
x org/openpilot/androidgcs/UAVLocation$ActivityUpdatedObserver.class
x org/openpilot/androidgcs/UAVLocation$FragmentUpdatedObserver$1.class
x org/openpilot/androidgcs/UAVLocation$FragmentUpdatedObserver.class
x org/openpilot/androidgcs/UAVLocation$UAVOverlay.class
x org/openpilot/androidgcs/UAVLocation.class
x org/openpilot/androidgcs/fragments/
x org/openpilot/androidgcs/fragments/ObjectManagerFragment.class
x org/openpilot/androidgcs/fragments/PFD.class
x org/openpilot/androidgcs/fragments/SystemAlarmsFragment.class
x org/openpilot/androidgcs/telemetry/
x org/openpilot/androidgcs/telemetry/BluetoothUAVTalk$1.class
x org/openpilot/androidgcs/telemetry/BluetoothUAVTalk$2.class
x org/openpilot/androidgcs/telemetry/TelemetryTask.class
x org/openpilot/androidgcs/telemetry/BluetoothUAVTalk.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$1.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$2.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$3.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$4.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$5.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$ByteFifo.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$TalkInputStream.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk$TalkOutputStream.class
x org/openpilot/androidgcs/telemetry/HidUAVTalk.class
x org/openpilot/androidgcs/telemetry/OPTelemetryService$LocalBinder.class
x org/openpilot/androidgcs/telemetry/OPTelemetryService$ServiceHandler.class
x org/openpilot/androidgcs/telemetry/OPTelemetryService$TelemTask.class
x org/openpilot/androidgcs/telemetry/OPTelemetryService.class
x org/openpilot/androidgcs/telemetry/TcpUAVTalk$1.class
x org/openpilot/androidgcs/telemetry/TcpUAVTalk.class
x org/openpilot/androidgcs/telemetry/TelemetryTask$1.class
x org/openpilot/androidgcs/telemetry/TelemetryTask$2.class
x org/openpilot/androidgcs/telemetry/TelemetryTask$3.class
x org/openpilot/androidgcs/telemetry/TelemetryTask$4.class
x org/openpilot/androidgcs/telemetry/TelemetryTask$processUavTalk.class
x org/openpilot/androidgcs/util/
x org/openpilot/androidgcs/util/ObjectFieldMappable.class
x org/openpilot/androidgcs/util/SmartSave$1.class
x org/openpilot/androidgcs/util/SmartSave$2.class
x org/openpilot/androidgcs/util/SmartSave$3.class
x org/openpilot/androidgcs/util/SmartSave$4.class
x org/openpilot/androidgcs/util/SmartSave$5.class
x org/openpilot/androidgcs/util/SmartSave$FieldPairing.class
x org/openpilot/androidgcs/util/SmartSave.class
x org/openpilot/androidgcs/views/
x org/openpilot/androidgcs/views/ScrollBarView$1.class
x org/openpilot/androidgcs/views/ScrollBarView$2.class
x org/openpilot/androidgcs/views/ScrollBarView.class
x org/openpilot/uavtalk/
x org/openpilot/uavtalk/Telemetry$1.class
x org/openpilot/uavtalk/Telemetry$2.class
x org/openpilot/uavtalk/UAVTalk$OnTransactionCompletedListener.class
x org/openpilot/uavtalk/Telemetry$3.class
x org/openpilot/uavtalk/Telemetry$4.class
x org/openpilot/uavtalk/Telemetry$5.class
x org/openpilot/uavtalk/Telemetry$6.class
x org/openpilot/uavtalk/Telemetry$7.class
x org/openpilot/uavtalk/Telemetry$8.class
x org/openpilot/uavtalk/Telemetry$9.class
x org/openpilot/uavtalk/Telemetry$ObjectQueueInfo.class
x org/openpilot/uavtalk/Telemetry$ObjectRunnable.class
x org/openpilot/uavtalk/Telemetry$ObjectTimeInfo.class
x org/openpilot/uavtalk/Telemetry$ObjectTransactionInfo.class
x org/openpilot/uavtalk/Telemetry$ObjectUpdateHandler.class
x org/openpilot/uavtalk/Telemetry$TelemetryStats.class
x org/openpilot/uavtalk/Telemetry.class
x org/openpilot/uavtalk/TelemetryMonitor$1.class
x org/openpilot/uavtalk/TelemetryMonitor$2.class
x org/openpilot/uavtalk/TelemetryMonitor$3.class
x org/openpilot/uavtalk/TelemetryMonitor.class
x org/openpilot/uavtalk/UAVObject.class
x org/openpilot/uavtalk/UAVDataObject.class
x org/openpilot/uavtalk/UAVMetaObject.class
x org/openpilot/uavtalk/UAVObject$1.class
x org/openpilot/uavtalk/UAVObject$AccessMode.class
x org/openpilot/uavtalk/UAVObject$CallbackListener.class
x org/openpilot/uavtalk/UAVObject$Metadata.class
x org/openpilot/uavtalk/UAVObject$TransactionResult.class
x org/openpilot/uavtalk/UAVObject$UpdateMode.class
x org/openpilot/uavtalk/UAVObjectField$1.class
x org/openpilot/uavtalk/UAVObjectField$FieldType.class
x org/openpilot/uavtalk/UAVObjectField.class
x org/openpilot/uavtalk/UAVObjectManager$CallbackListener.class
x org/openpilot/uavtalk/UAVObjectManager.class
x org/openpilot/uavtalk/UAVTalk$1.class
x org/openpilot/uavtalk/UAVTalk$2.class
x org/openpilot/uavtalk/UAVTalk$ComStats.class
x org/openpilot/uavtalk/UAVTalk$RxStateType.class
x org/openpilot/uavtalk/UAVTalk.class
x org/openpilot/uavtalk/uavobjects/
x org/openpilot/uavtalk/uavobjects/FirmwareIAPObj.class
x org/openpilot/uavtalk/uavobjects/FlightTelemetryStats.class
x org/openpilot/uavtalk/uavobjects/GCSTelemetryStats.class
x org/openpilot/uavtalk/uavobjects/TelemObjectsInitialize.class

Lastly run em through jd-gui and export all classes. 

Bh-IxqdIEAAICgh.jpg

$ unzip classes_dex2jar.src.zip
Archive:  classes_dex2jar.src.zip
   creating: com/
   creating: com/MobileAnarchy/
   creating: com/MobileAnarchy/Android/
   creating: com/MobileAnarchy/Android/Widgets/
   creating: com/MobileAnarchy/Android/Widgets/DockPanel/
  inflating: com/MobileAnarchy/Android/Widgets/DockPanel/DockPanel.java 
  inflating: com/MobileAnarchy/Android/Widgets/DockPanel/DockPosition.java 
   creating: com/MobileAnarchy/Android/Widgets/DragAndDrop/
  inflating: com/MobileAnarchy/Android/Widgets/DragAndDrop/DragAndDropManager.java 
  inflating: com/MobileAnarchy/Android/Widgets/DragAndDrop/DragSurface.java 
  inflating: com/MobileAnarchy/Android/Widgets/DragAndDrop/DraggableItem.java 
  inflating: com/MobileAnarchy/Android/Widgets/DragAndDrop/DraggableViewsFactory.java 
  inflating: com/MobileAnarchy/Android/Widgets/DragAndDrop/DropZone.java 
  inflating: com/MobileAnarchy/Android/Widgets/DragAndDrop/DropZoneEventsListener.java 
   creating: com/MobileAnarchy/Android/Widgets/Joystick/
  inflating: com/MobileAnarchy/Android/Widgets/Joystick/DualJoystickView.java 
  inflating: com/MobileAnarchy/Android/Widgets/Joystick/JoystickClickedListener.java 
  inflating: com/MobileAnarchy/Android/Widgets/Joystick/JoystickMovedListener.java 
  inflating: com/MobileAnarchy/Android/Widgets/Joystick/JoystickView.java 
   creating: com/MobileAnarchy/Android/Widgets/ThresholdEditText/
  inflating: com/MobileAnarchy/Android/Widgets/ThresholdEditText/ThresholdEditText.java 
  inflating: com/MobileAnarchy/Android/Widgets/ThresholdEditText/ThresholdTextChanged.java 
   creating: com/MobileAnarchy/Android/Widgets/TilesLayout/
  inflating: com/MobileAnarchy/Android/Widgets/TilesLayout/SingleTileLayout.java 
  inflating: com/MobileAnarchy/Android/Widgets/TilesLayout/TilePosition.java 
  inflating: com/MobileAnarchy/Android/Widgets/TilesLayout/TilesLayout.java 
  inflating: com/MobileAnarchy/Android/Widgets/TilesLayout/TilesLayoutPreset.java 
   creating: org/
   creating: org/openpilot/
   creating: org/openpilot/androidgcs/
  inflating: org/openpilot/androidgcs/AttitudeView.java 
  inflating: org/openpilot/androidgcs/BluetoothDevicePreference.java 
  inflating: org/openpilot/androidgcs/BuildConfig.java 
  inflating: org/openpilot/androidgcs/CompassView.java 
  inflating: org/openpilot/androidgcs/ObjectManagerActivity.java 
  inflating: org/openpilot/androidgcs/Controller.java 
  inflating: org/openpilot/androidgcs/HomePage.java 
  inflating: org/openpilot/androidgcs/Logger.java 
  inflating: org/openpilot/androidgcs/ObjectBrowser.java 
  inflating: org/openpilot/androidgcs/ObjectEditView.java 
  inflating: org/openpilot/androidgcs/ObjectEditor.java 
  inflating: org/openpilot/androidgcs/PfdActivity.java 
  inflating: org/openpilot/androidgcs/Preferences.java 
  inflating: org/openpilot/androidgcs/R.java 
  inflating: org/openpilot/androidgcs/SystemAlarmActivity.java 
  inflating: org/openpilot/androidgcs/TelemetryWidget.java 
  inflating: org/openpilot/androidgcs/TuningActivity.java 
  inflating: org/openpilot/androidgcs/UAVLocation.java 
   creating: org/openpilot/androidgcs/fragments/
  inflating: org/openpilot/androidgcs/fragments/ObjectManagerFragment.java 
  inflating: org/openpilot/androidgcs/fragments/PFD.java 
  inflating: org/openpilot/androidgcs/fragments/SystemAlarmsFragment.java 
   creating: org/openpilot/androidgcs/telemetry/
  inflating: org/openpilot/androidgcs/telemetry/TelemetryTask.java 
  inflating: org/openpilot/androidgcs/telemetry/BluetoothUAVTalk.java 
  inflating: org/openpilot/androidgcs/telemetry/HidUAVTalk.java 
  inflating: org/openpilot/androidgcs/telemetry/OPTelemetryService.java 
  inflating: org/openpilot/androidgcs/telemetry/TcpUAVTalk.java 
   creating: org/openpilot/androidgcs/util/
  inflating: org/openpilot/androidgcs/util/ObjectFieldMappable.java 
  inflating: org/openpilot/androidgcs/util/SmartSave.java 
   creating: org/openpilot/androidgcs/views/
  inflating: org/openpilot/androidgcs/views/ScrollBarView.java 
   creating: org/openpilot/uavtalk/
  inflating: org/openpilot/uavtalk/Telemetry.java 
  inflating: org/openpilot/uavtalk/TelemetryMonitor.java 
  inflating: org/openpilot/uavtalk/UAVObject.java 
  inflating: org/openpilot/uavtalk/UAVDataObject.java 
  inflating: org/openpilot/uavtalk/UAVMetaObject.java 
  inflating: org/openpilot/uavtalk/UAVObjectField.java 
  inflating: org/openpilot/uavtalk/UAVObjectManager.java 
  inflating: org/openpilot/uavtalk/UAVTalk.java 
   creating: org/openpilot/uavtalk/uavobjects/
  inflating: org/openpilot/uavtalk/uavobjects/FirmwareIAPObj.java 
  inflating: org/openpilot/uavtalk/uavobjects/FlightTelemetryStats.java 
  inflating: org/openpilot/uavtalk/uavobjects/GCSTelemetryStats.java 
  inflating: org/openpilot/uavtalk/uavobjects/TelemObjectsInitialize.java

Both the initial jar file from the dex and the resulting decompiled source are here
http://www.digitalmu...ses_dex2jar.jar                                                                                                               
http://www.digitalmu...dex2jar.src.zip

 

Have fun! 

Attached Files



#5 Rick~K

Rick~K

    OP Team .... The more motors the better!

  • Administrators
  • 3122 posts
  • Country: flag of United States United States


Posted 05 March 2014 - 03:15 PM

Looks good!


Always looking for new and better ways!

blogentry-3719-0-98177600-1376569110.gif

K8OHM


#6 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 05 March 2014 - 06:27 PM

This is 13.06.04 running on an old school OPCC (not CC3D) with OPLink in the Flexi port and OPLink as a HID accessory on a Sansung Galaxy tab 10.1 using my copy of the Android GCS. 

 

Bh-71yyIUAILErt.jpg



#7 m_thread

m_thread

    A Happy Camper

  • Members
  • PipPipPip
  • 1435 posts
  • LocationStockholm
  • Country: flag of Sweden Sweden


Posted 05 March 2014 - 08:31 PM

Really nice!



#8 Goobs

Goobs

    Goober

  • Members
  • PipPipPip
  • 555 posts
  • LocationMt Martha, Vic
  • Country: flag of Australia Australia


Posted 05 March 2014 - 09:41 PM

Your doing a great !! job kfinisterre, finding it all a little bit advance to get my head around, :unsure:  wish I could be more of a help, going to keep my eye on what you are doing & try & get my head around it all as you go.  :)


HT FLIP FPV, POST PACK, OV3RQUAD, ----- --- ---?, --- ---?, ----- -----?, GCS BackpackYouTube


#9 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 05 March 2014 - 10:04 PM

Your doing a great !! job kfinisterre, finding it all a little bit advance to get my head around, :unsure:  wish I could be more of a help, going to keep my eye on what you are doing & try & get my head around it all as you go.  :)

 

Thanks! 

 

I broke down late last night and paid the $25 to be a Google Developer named "Friends of OpenPilot that dislike Nag Screens". I hope to make it easy for folks like you to find and use no nag *updated* versions of the legacy Android GCS in the near future! This should hold those of us that can't wait off until the project takes a different / more solid posture moving forward in the droid arena. Stay tuned!

 

There is some signing nonsense I have to figure out, not had time yet. http://developer.and...pp-signing.html

 

FWIW I also put my foot down and asked the original developer to clarify where the heck the *latest* source code is that is being used in the Play store. The conversation isn't that hard to locate if you want to follow along the parallel effort on that end. (Won't link it here out of courtesy).



#10 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 05 March 2014 - 11:08 PM

Secrets be told... THIS is my goal. ;) think THIS with a GCS mashup for your android tablet. 

http://www.gns-gmbh.....php?id=238&L=1 or 

http://www.anteni.ne...494&id=15504142

 

Bh_8O7BIgAAQNPa.jpg



#11 m_thread

m_thread

    A Happy Camper

  • Members
  • PipPipPip
  • 1435 posts
  • LocationStockholm
  • Country: flag of Sweden Sweden


Posted 06 March 2014 - 06:05 AM

 

 

...The conversation isn't that hard to locate if you want to follow along the parallel effort on that end...

:D

 

I guessed it...

 

/F



#12 Adverse Effects

Adverse Effects

    Team Dropbear - QLD

  • Members
  • PipPipPip
  • 3043 posts
  • Country: flag of Australia Australia


Posted 06 March 2014 - 06:42 AM

 i dont know if it helps but i have a copy of OpenPilot-2013-06-03-1cfc7f15-dirty-android.apk that google has never touched let me know if you want a copy of it


25/2/2013

Help Those That Help Themselves First

convicted zealot

Quad - 01 Build Blog (Now Dead)
THE BEAST My RC Lawn Mower Blog
My Eurgle 2.4Ghz 9ch (Turnigy 9x clone)
HEX-01 - Build Log
FPVRaptor Composite 1600mm - Build Log

if i link to hobbyking i use Affiliate links that pay me a few cents each time you use them

#13 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 06 March 2014 - 02:08 PM

For sure brother I appreciate it. I think you can rename it to .zip and attach it to this post? You can email it to me kf[at]digitalmunition[dot]com as well. I am actually starting to collect the various APK files I have run across so I can do a mass decompile / compare later. =] 

 

Gratzi.



#14 Adverse Effects

Adverse Effects

    Team Dropbear - QLD

  • Members
  • PipPipPip
  • 3043 posts
  • Country: flag of Australia Australia


Posted 07 March 2014 - 03:00 AM

here you go file attached

opps i attached the wrong file HAHA

i'll try again

Attached Files


25/2/2013

Help Those That Help Themselves First

convicted zealot

Quad - 01 Build Blog (Now Dead)
THE BEAST My RC Lawn Mower Blog
My Eurgle 2.4Ghz 9ch (Turnigy 9x clone)
HEX-01 - Build Log
FPVRaptor Composite 1600mm - Build Log

if i link to hobbyking i use Affiliate links that pay me a few cents each time you use them

#15 fredz69

fredz69

    OP Team

  • Administrators
  • 2877 posts
  • LocationNSW
  • Country: flag of Australia Australia


Posted 07 March 2014 - 11:32 AM

Looking good Kevin :D



#16 TheOtherCliff

TheOtherCliff

    CC3D Nav lead

  • Members
  • PipPipPip
  • 2370 posts
  • LocationTemple/Dallas GA. or International Waters
  • Country: flag of United States United States


Posted 18 March 2014 - 04:48 AM

Is the GNS so that you know when full sized planes are in the area and so can better avoid them?



#17 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 18 March 2014 - 11:28 AM

Is the GNS so that you know when full sized planes are in the area and so can better avoid them?

 

Yessir! I am kinda paranoid about commercial aircraft after running http://www.flyawayclub.com 

 

Good news is I think I have the app in the Play store now sans nag screen. I need to go through and make sure I have the support for 13.06.04 added, but I have at least successfully renamed the app from com.openpilot.androidgcs to com.openpilot_nonag.androidgcs which was required for getting it in the Play store. 

 

https://play.google....onag.androidgcs

 

BjAYmpjIUAEZYNw.jpg

 

Let me know if anyone wants to help out with bug fixes or anything else... I'll try to make some time to actually work on this help is obviously welcomed. 

 

update: looks like the name change means I have to redo the uavobjectgenerator as it is creating the proper jar file hash, with the wrong naming scheme so it is still unable to load. Will fix it shortly and reupload. 

 

D/OPTelemetryService(30360): Starting dex loader
D/dalvikvm(30360): DexOpt: --- BEGIN '385035f6cd225ea2.jar' (bootstrap=0) ---
D/dalvikvm(30627): DexOpt: load 5ms, verify+opt 0ms, 109620 bytes
D/dalvikvm(30360): DexOpt: --- END '385035f6cd225ea2.jar' (success) ---
D/dalvikvm(30360): DEX prep '/data/data/org.openpilot_nonag.androidgcs/app_jars/385035f6cd225ea2.jar': unzip in 8ms, rewrite 152ms
W/System.err(30360): java.lang.NoSuchMethodException: register [class org.openpilot_nonag.uavtalk.UAVObjectManager]
W/System.err(30360):  at java.lang.Class.getConstructorOrMethod(Class.java:460)
W/System.err(30360):  at java.lang.Class.getMethod(Class.java:915)
W/System.err(30360):  at org.openpilot_nonag.androidgcs.telemetry.OPTelemetryService.loadUavobjects(OPTelemetryService.java:408)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.TelemetryMonitor$2.update(TelemetryMonitor.java:439)
W/System.err(30360):  at java.util.Observable.notifyObservers(Observable.java:138)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVObject$CallbackListener.event(UAVObject.java:45)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVObject.updated(UAVObject.java:95)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVObject.unpack(UAVObject.java:631)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVTalk.updateObject(UAVTalk.java:689)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVTalk.receiveObject(UAVTalk.java:561)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVTalk.processInputByte(UAVTalk.java:517)
W/System.err(30360):  at org.openpilot_nonag.uavtalk.UAVTalk.processInputStream(UAVTalk.java:236)
W/System.err(30360):  at org.openpilot_nonag.androidgcs.telemetry.TelemetryTask$processUavTalk.run(TelemetryTask.java:186)

 



#18 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 18 March 2014 - 06:42 PM

Just fixed that minor error... it should load the proper UAVO sets for 13.06.04 now. The .jar file was present, it however had the wrong internal naming scheme. 



#19 kfinisterre

kfinisterre

    Zenaidura carolinensis

  • Members
  • PipPipPip
  • 1946 posts
  • Country: flag of United States United States


Posted 19 March 2014 - 01:13 AM

Big pimpin an Nvidia Shield now. JUST picked it up locally. Which GCS should I install? ;)

 

BjDVfvnIcAAtc8s.jpg

 

Of course I picked the one I can use with 13.06.04 ;) 

 

BjDcOQKCMAA-OqN.jpg

 

BjDcVoRIUAAvUST.jpg



#20 emjay

emjay

    Advanced Member

  • Moderators
  • 867 posts
  • LocationWarrandyte
  • Country: flag of Australia Australia


Posted 19 March 2014 - 02:14 AM

should I be able to download / run this on my android phone?

 

I followed the link that you provided Kev but the play store indicated that the app was incompatible with my phone.  That being said it is a very cheap phone ($40 from the supermarket - Huawei). I'll have to determine what version of Android it is running.

 

 

 

 

The spray is unnecessary on a public release.