Related
Hello
I'm planning to write a program that will interact with an active Android phone (Leo specifically). I plan to do this using ADB (since it fulfills exactly what I need to do), but I'm not comfortable having to open a program shell every time, it's not really an efficient and fail-safe method of doing things.
I noticed that the ADB files in the SDK come with two dll files called adbWinApi and AdbWinUsbApi, but I couldn't import them to Visual Studio, so I'm guessing they can't be used as external resources (or they can and I'm just too ignorant). Anyway, I found no resources on how to use them, so I'm guessing adb.exe uses them, and unless someone can reverse engineer them for me and found the references I need to use, they're useless.
Does anyone have an idea how to interface with an Android device programatically? Using C# preferably, but any open 'handle' I can use would be helpful.
Thanks in advance.
This looks like it might be what you're after:
http://madb.codeplex.com/
This is a Managed port of the Android Debug Bridge to allow communication from .NET applications to Android devices. This wraps the same methods that the ddms uses to directly communicate with ADB. This gives more flexibility to the developer then launching an adb process and executing one of its build in commands.
Click to expand...
Click to collapse
Wow, looks interesting, I'll look into it.
Thanks for the great find!
Sent from my Android HTC HD2 using XDA App
Ambious said:
Anyway, I found no resources on how to use them, so I'm guessing adb.exe uses them, and unless someone can reverse engineer them for me and found the references I need to use, they're useless.
Click to expand...
Click to collapse
And why to reverse engineer a part of an open source project? Android is open, you know ;-)
http://android.git.kernel.org/?p=platform/system/core.git;a=tree;f=adb
Brut.all said:
And why to reverse engineer a part of an open source project? Android is open, you know ;-)
http://android.git.kernel.org/?p=platform/system/core.git;a=tree;f=adb
Click to expand...
Click to collapse
LOL, true. But is the SDK?
Sent from my Android HTC HD2 using XDA App
Ambious said:
LOL, true. But is the SDK?
Click to expand...
Click to collapse
I think so, I have linked ADB sources above. Maybe these sources are for adbd daemon on a phone only, but even if, then you have docs about adb protocol in OVERVIEW.TXT and SERVICES.txt files.
True, and I also noticed the ADB client emulates TCP anyway, so it shouldn't be too hard to replicate and 'hook in'. Thanks for the tip
Sent from my Android HTC HD2 using XDA App
So I have an application ready, but its written all in JAVA. I have the avd and sdk and eclipse all configured, but how would I change stuff like mouseListener into "touchListener". If you guys dont know what im talking about PM me xD?
siddysidsid said:
So I have an application ready, but its written all in JAVA. I have the avd and sdk and eclipse all configured, but how would I change stuff like mouseListener into "touchListener". If you guys dont know what im talking about PM me xD?
Click to expand...
Click to collapse
I dont have the answer you want, but you could always use the android java app. You can find it on google, it works with some java apps, cant guarantee it will support yours.
Unfortunately I do not think it is possible to turn a Java-based applications into Android without rewriting it. Even though the programming language is the same, the UI components of Android are different that standard Java.
It for sure is not possible to port it to Android without rewriting parts of it.
All UI stuff definitely needs to be adapted and/or rewritten. Also dependent on your application you have might have to optimize parts of it to work well with Android due to lower hardware specifications and so on.
Ahh well thats unfortunate. I was hoping for some kind of program that woudl do this for me.
Duplicate, thread closed.
http://forum.xda-developers.com/showthread.php?t=897686
Hey guys im considering porting/recoding an app from VB.net to work on android, but i havent got a clue what language is used in android, could someone tell me its name or some sort of website with this information?
Finally if someone is experienced in programming apps for android, i would like to chat about a few capabilities of the language.
Thanks in advance!
Android is Java-ish based.
i would recommend you checking out the program Eclipse.
The main applayer is java based with some xml thrown in. But there is a native development kit that you can compile c c++ and many other languages to run on an android phone. But since java is virtual machine based an app written in java will run on all phones*(some caveats like os version) while the app in ndk will work on only hardware that it was designed for
Also, is Google not working? A simple search for "Android programming language" would answer this question
From something awesome
killersnowman said:
The main applayer is java based with some xml thrown in. But there is a native development kit that you can compile c c++ and many other languages to run on an android phone. But since java is virtual machine based an app written in java will run on all phones*(some caveats like os version) while the app in ndk will work on only hardware that it was designed for
From something awesome
Click to expand...
Click to collapse
hmmm, yes there is google but not what im exactly asking, and that makes me ask this:
You talk about c & c++ and other languages compilations to run on android phone, is vb.net a part of that list?
Could you show me a website or something that says more about that dev kit? im basically trying to port my apps from vb 2010 express (windows forms based) to android and if that thing is not possible should i use java to code it all over again?
Thanks in advance!
http://developer.android.com/sdk/ndk/ this is for the ndk but it is not as simple as just compiling your code with the ndk. You will need to rewrite some of it to actuallytie into the android apis
You should really just use the java sdk. You will reach more people and be able to find more help and info
And I stand corrected, while there are projects trying to bring other languages to the ndk it is at this point just C and C++
From something awesome
killersnowman said:
http://developer.android.com/sdk/ndk/ this is for the ndk but it is not as simple as just compiling your code with the ndk. You will need to rewrite some of it to actuallytie into the android apis
You should really just use the java sdk. You will reach more people and be able to find more help and info
And I stand corrected, while there are projects trying to bring other languages to the ndk it is at this point just C and C++
From something awesome
Click to expand...
Click to collapse
oh well in that case i will need to learn java.... thanks mate, i think its easier to just rewrite the whole thing really i like proper optimizations and ports most of the times lack them.
Thanks for the information thats all i needed.
PS: rep added
if you know vb.net well you'll have no real problem with java.. it just adds brackets and semicolons essentially lol. I learned java in college and then was thrown into the .net framework using c# and i love the .net framework.. its so hard for me to go from using Visual Studios to Eclipse to make an android application because Visual Studios (which im assuming you use, is so powerful).. But yes android is java code behind and html (preferred) GUI. You can make your GUI using java but trust me its terrible!
jr10000 said:
But yes android is java code behind and html (preferred) GUI. You can make your GUI using java but trust me its terrible!
Click to expand...
Click to collapse
Html? You mean xml?
Also try Intellij instead of Eclipse. Eclipse is way too bloated and IntellJ has some amazing autocomplete features. Its better in my opinion
From something awesome
jr10000 said:
if you know vb.net well you'll have no real problem with java.. it just adds brackets and semicolons essentially lol. I learned java in college and then was thrown into the .net framework using c# and i love the .net framework.. its so hard for me to go from using Visual Studios to Eclipse to make an android application because Visual Studios (which im assuming you use, is so powerful).. But yes android is java code behind and html (preferred) GUI. You can make your GUI using java but trust me its terrible!
Click to expand...
Click to collapse
what?? i really need a proper GUI ugh... yes im using visual studio, and indeed is amazing, the app i have and i want to port to android is windows form based, the most essential thing i would need about it is the calendar control :\
You can use Javascript+HTML5 (it's complicated to express here but the whole things is pretty much native).
Python aswell, use SL4x or Kivy (Kivy is pretty good but it's still too new).
Sorry, being hate Java too much.
Funnnny said:
You can use Javascript+HTML5 (it's complicated to express here but the whole things is pretty much native).
Python aswell, use SL4x or Kivy (Kivy is pretty good but it's still too new).
Sorry, being hate Java too much.
Click to expand...
Click to collapse
ok np, so to doublecheck this: to have an application with graphical interface i will need javascript and html5?
TheWarKeeper said:
ok np, so to doublecheck this: to have an application with graphical interface i will need javascript and html5?
Click to expand...
Click to collapse
I dont know why people spread extremely non standard practices to people getting started...
No you dont need javascript or html5.
Android has a ui layout system based in xml. Its just there to arrange objects that you can access from the java code. So a little xml and java is all you need
From something awesome
TheWarKeeper said:
ok np, so to doublecheck this: to have an application with graphical interface i will need javascript and html5?
Click to expand...
Click to collapse
The right way to do GUI is with Java, with the official SDK from Google.
Some non-standard way to do this is with Javascript (just a GUI wrapper from Javascript to Java) and Python (again wrapper to Python).
You can choose which way you want, many people I know didn't like Java, and they choose to use a web application, and then they want to embed this to a native Android application, so they go with Titanium Mobile or some others framework like that. It's not as good as Java, but it's some other way to start with your application (Web app first and then Native app)
Funnnny said:
The right way to do GUI is with Java, with the official SDK from Google.
Some non-standard way to do this is with Javascript (just a GUI wrapper from Javascript to Java) and Python (again wrapper to Python).
You can choose which way you want, many people I know didn't like Java, and they choose to use a web application, and then they want to embed this to a native Android application, so they go with Titanium Mobile or some others framework like that. It's not as good as Java, but it's some other way to start with your application (Web app first and then Native app)
Click to expand...
Click to collapse
i feel like i should probably stick with java, i want it to be quick and fast and have alot of stuff to code, the program should run in background so it must not affect performance at all, will use timers with a basic code ticking every second while on background and thats it really
TheWarKeeper said:
i feel like i should probably stick with java, i want it to be quick and fast and have alot of stuff to code, the program should run in background so it must not affect performance at all, will use timers with a basic code ticking every second while on background and thats it really
Click to expand...
Click to collapse
Then use java bro, it's an awesome programming language, I don't know why some people don't like it, each programmer should learn to get used to each language.
Anyway, for likes.. colors
Cheers, D4.
D4rKn3sSyS said:
Then use java bro, it's an awesome programming language, I don't know why some people don't like it, each programmer should learn to get used to each language.
Anyway, for likes.. colors
Cheers, D4.
Click to expand...
Click to collapse
well ive been learning vb and i will admit that im still on intermediate level, even though i know all the basic stuff such as messing with its own functions, etc i still havent used any of the apis for it, the main problem with programming is that if u learn a language you would waste your time learning that one or else if u go learn to many languages you will end up not knowing none of them at all.
Ill see if i can mess with java, some people say syntax is a bit similar to c & c++
EDIT: btw, im not saying i dont find java good, a programming language that will basically run on any machine independently of the OS makes the language itself possibly the best and most versatile around.
I'm learning Android and I use Java and XML. I'm still a beginner though.
Sent from my SGH-T959 using XDA App
I am just curious, software like Titanium Backup, or Angry Birds, which programming language do they use? Could this stuff be programmed with Eclipse in Java?
killersnowman said:
Html? You mean xml?
Also try Intellij instead of Eclipse. Eclipse is way too bloated and IntellJ has some amazing autocomplete features. Its better in my opinion
From something awesome
Click to expand...
Click to collapse
Hey, do you know how to use intellij idea fire Android development?
Sent from my GT-S5830 using xda premium
That's an app to help you lock screen and adjust volume with tiles. It calls functions in ShellChromeAPI.dll . Finally, it got published with English version.
link: http://www.windowsphone.com/en-us/store/app/quick-tiles/1725cca2-2349-4d33-b5d5-8b04e7810c04
(You may need to switch your phone language to English to download the English version. otherwise, the Chinese version will be shown. Forgive me for my tight schedule and I have to split different languages into different XAPs, for I only spent 2 hours developing this app...)
I've found two ways to pass the marketplace API detect, one is to use P/Invoke and the other is to load LoadLibraryExW without extern that from the lib provided by Microsoft.
both methods will be provided here in a month, and I may provide write some wrappers or static libraries.
Notice that I only found ways to access restricted API, but get higher privilege is not possible.
By this way, I think @GoodDayToDie 's HTTP Server with registry browser can be published with some simple modify. Even publishing the samsung interop unlock guide, which launches the toast using undocumented, is possible. Maybe we should try to find more useful functions which can be called without privilege in different dlls.
hjc4869 said:
That's an app to help you lock screen and adjust volume with tiles. It calls functions in ShellChromeAPI.dll . Finally, it got published with English version.
link: http://www.windowsphone.com/en-us/store/app/quick-tiles/1725cca2-2349-4d33-b5d5-8b04e7810c04
(You may need to switch your phone language to English to download the English version. otherwise, the Chinese version will be shown. Forgive me for my tight schedule and I have to split different languages into different XAPs, for I only spent 2 hours developing this app...)
I've found two ways to pass the marketplace API detect, one is to use P/Invoke and the other is to load LoadLibraryExW without extern that from the lib provided by Microsoft.
both methods will be provided here in a month, and I may provide write some wrappers or static libraries.
Notice that I only found ways to access restricted API, but get higher privilege is not possible.
By this way, I think @GoodDayToDie 's HTTP Server with registry browser can be published with some simple modify. Even publishing the samsung interop unlock guide, which launches the toast using undocumented, is possible. Maybe we should try to find more useful functions which can be called without privilege in different dlls.
Click to expand...
Click to collapse
What restricted API's possible to upload ?
ngame said:
What restricted API's possible to upload ?
Click to expand...
Click to collapse
you can load any API functions. but only some of them can be called and only a few is really useful.
I only tested the following functions
BOOL Shell_IsLocked()
void Shell_TurnScreenOn(BOOL)
void Shell_AdjustVolume(int)
hjc4869 said:
That's an app to help you lock screen and adjust volume with tiles. It calls functions in ShellChromeAPI.dll . Finally, it got published with English version.
link: http://www.windowsphone.com/en-us/store/app/quick-tiles/1725cca2-2349-4d33-b5d5-8b04e7810c04
(You may need to switch your phone language to English to download the English version. otherwise, the Chinese version will be shown. Forgive me for my tight schedule and I have to split different languages into different XAPs, for I only spent 2 hours developing this app...)
I've found two ways to pass the marketplace API detect, one is to use P/Invoke and the other is to load LoadLibraryExW without extern that from the lib provided by Microsoft.
both methods will be provided here in a month, and I may provide write some wrappers or static libraries.
Notice that I only found ways to access restricted API, but get higher privilege is not possible.
By this way, I think @GoodDayToDie 's HTTP Server with registry browser can be published with some simple modify. Even publishing the samsung interop unlock guide, which launches the toast using undocumented, is possible. Maybe we should try to find more useful functions which can be called without privilege in different dlls.
Click to expand...
Click to collapse
Interesting. But almost useless cause now all can freely make a developer unlock. Store apps can use RPC but this requires InteropServices CAP.
-W_O_L_F- said:
Interesting. But almost useless cause now all can freely make a developer unlock. Store apps can use RPC but this requires InteropServices CAP.
Click to expand...
Click to collapse
yes I tried it before in beta app .
ID_CAP_INTEROPSERVICES , Xbox live and exe files in xap are unable to upload !
And those APIs work without having the restricted capabilities in the manifest file?
After the update, it went back to Chinese... it would be nice if you set English as the default language, at least for European and American countries
mcosmin222 said:
And those APIs work without having the restricted capabilities in the manifest file?
Click to expand...
Click to collapse
Yes.
-W_O_L_F- said:
Yes.
Click to expand...
Click to collapse
Hmmm
This looks interesting.
P/Invoke? How did you manage to use it? I thought it was not available for Silverlight?
pinvoke is possible with silverlight, but according to microsoft it is illegal on the marketplace.
which is half true. you cant pinvoke a native dll compiled for arm, but the wp8 own dlls seem to make an exception
mcosmin222 said:
you cant pinvoke a native dll compiled for arm, but the wp8 own dlls seem to make an exception
Click to expand...
Click to collapse
What is the difference?
Useless guy said:
What is the difference?
Click to expand...
Click to collapse
Go ask microsoft.
If you scroll down you will find that p/invoke is not allowed in wp8 sdk
http://msdn.microsoft.com/en-us/lib...jj206940(v=vs.105).aspx#BKMK_Appcompatibility
however, the OP seems to have managed to do it with a DLL contained in the WP8 system.
I never actually tried to p/invoke something on the marketplace. Maybe this needs additional research to see if arm compiled third party dlls can be used.
I remember some guy on the forum trying to p/invoke a native ARM dll and got type load exceptions.
by native i mean something which is not compiled with C++/CX for windows phone. As in pure C/C++ targeted for ARM.
mcosmin222 said:
Go ask microsoft.
If you scroll down you will find that p/invoke is not allowed in wp8 sdk
http://msdn.microsoft.com/en-us/lib...jj206940(v=vs.105).aspx#BKMK_Appcompatibility
however, the OP seems to have managed to do it with a DLL contained in the WP8 system.
I never actually tried to p/invoke something on the marketplace. Maybe this needs additional research to see if arm compiled third party dlls can be used.
I remember some guy on the forum trying to p/invoke a native ARM dll and got type load exceptions.
by native i mean something which is not compiled with C++/CX for windows phone. As in pure C/C++ targeted for ARM.
Click to expand...
Click to collapse
I know what pinvoke is perfectly, don't send me to msdn as long as I'm able to find it by myself.
Both an unmanaged dll and a WinRT component are native. CLR wraps every COM\WinRT object in the Runtime Callable Wrapper, but the object itself stays in the unmanaged heap.
If you think that WinRT or C++/CX are not native, you're wrong.
To @hjc4869
How did you manage to bypass marketplace analysis using P\Invoke? I'm fairly certain that MS checks metadata for DllImport attribute.
I'm going to try the second way, thanks!
Useless guy said:
I know what pinvoke is perfectly, don't send me to msdn as long as I'm able to find it by myself.
Both an unmanaged dll and a WinRT component are native. CLR wraps every COM\WinRT object in the Runtime Callable Wrapper, but the object itself stays in the unmanaged heap.
If you think that WinRT or C++/CX are not native, you're wrong.
To @hjc4869
How did you manage to bypass marketplace analysis using P\Invoke? I'm fairly certain that MS checks metadata for DllImport attribute.
I'm going to try the second way, thanks!
Click to expand...
Click to collapse
never said you don't know what p/invoke is.
I just wanted to show you that it is illegal in wp8 SDK (which that link leads to).
And if you actually read that link, you would see that invoking winRT or C++/CX (compiled for WP8) is allowed. This is probably due to the fact that these methods still execute in a sandbox. While MS won't allow arm compiled dll without the WP8 SDK because it can't verify its security.
mcosmin222 said:
And if you actually read that link, you would see that invoking winRT or C++/CX (compiled for WP8) is allowed. This is probably due to the fact that these methods still execute in a sandbox. While MS won't allow arm compiled dll without the WP8 SDK because it can't verify its security.
Click to expand...
Click to collapse
What does it mean - compile for WP8? I can add to the package any dll that uses Win32 (non-restricted) and compiled for ARM. The library will work on both WP and W8 without recompilaton.
Useless guy said:
What does it mean - compile for WP8? I can add to the package any dll that uses Win32 (non-restricted) and compiled for ARM. The library will work on both WP and W8 without recompilaton.
Click to expand...
Click to collapse
Will it? When you compile a C++ dll for desktop, it references kernel32.dll and unless you explicitly exclude it from the linker, it couldn't possible work on WP8 since there's no kernel32.dll.
Hi all
Trying to play with this method, but it seems LoadLibraryExW is not available. The only function available is LoadPackagedLibrary and when I try to run it, I've got C00000D error which is STATUS_INVALID_PARAMETER.
---------- Post added at 01:03 PM ---------- Previous post was at 12:49 PM ----------
It seems LoadPackagedLibrary only loads .dll from installation folder of application and do not allows full path in name. Thats why I got invalid argument error
Useless guy said:
What is the difference?
Click to expand...
Click to collapse
Code signature.
Sunius1 said:
Will it? When you compile a C++ dll for desktop, it references kernel32.dll and unless you explicitly exclude it from the linker, it couldn't possible work on WP8 since there's no kernel32.dll.
Click to expand...
Click to collapse
Kernel32.dll is the huge part of Win32 and it exists on both WP and Windows. WPSDK doesn't include kernel32.lib, but I'm pretty sure it can be easily generated from dll file.
#define WINAPI_PARTITION_DESKTOP and kernel32.lib should work, I think.
UPD:
I forgot, kernel32 could be removed as it's just the compatability layer for kernelbase.dll and new windows 8 api sets (api-ms-*.dll).
clrokr said:
Code signature.
Click to expand...
Click to collapse
DLLs are signing on certification process.
I have fair number of years of programming behind me. But I haven't tried anything for Android, as I dislike Java.
But I want to try. I want to make something that works at low level, say, like a firewall. It acts as a filter between two communicating parties/devices.
To write anything like that, can someone suggest which is the best approach - code in Java (if it can perform such a feast) or code driver in C?
Thanks much!
Regards,
Nayan
Sent from my Micromax A117 using xda app-developers app
The interesting thing in such low level projects is the entry point: So for a firewall you only have to acces iptables because android has linux kernel. So no C-part, no drivers, only plain java. See AFWall, it's an open source firewall.
EmptinessFiller said:
The interesting thing in such low level projects is the entry point: So for a firewall you only have to acces iptables because android has linux kernel. So no C-part, no drivers, only plain java. See AFWall, it's an open source firewall.
Click to expand...
Click to collapse
Excellent! I would certainly study AFWall. Thanks for the reference.
But actually, my quest doesn't stop here. I am exploring Android, and Google's restriction of "UI to be built only via Java". (I am not interested in scripting and widgets for now, unless they are absolutely needed.)
I want to know the answers for same question (driver or app) for the following:
* Network Filter [EmptinessFiller, you already answered this as Java]
* Disk (SD cards) (for many various purposes) - file system should not block the intention, hopefully.
* USB filter
* SMS filter
I am still thinking of other categories. Will write more later.
Please suggest and refer. Thanks again!
General answer: Your app is always built in java. (It's UI components, it's LifeCycle (Activity, Service, Broadcastreceiver))
You may include native code, but that does not have more possibilities. It's only a little bit quicker.
Forgotten: If you have root, you may want to change some binaries, because you can't change things in an app. There you need native code of course.
EmptinessFiller said:
You may include native code, but that does not have more possibilities. It's only a little bit quicker.
Click to expand...
Click to collapse
Shame, isn't it? Too much power in Java's hand
EmptinessFiller said:
Forgotten: If you have root, you may want to change some binaries, because you can't change things in an app. There you need native code of course.
Click to expand...
Click to collapse
My point exactly! Low level stuff is best written in native code.
But right now, I am learning how to.
cnayan said:
Shame, isn't it? Too much power in Java's hand
My point exactly! Low level stuff is best written in native code.
But right now, I am learning how to.
Click to expand...
Click to collapse
Have a look at the Android NDK and this guide about the development of root apps.
nikwen said:
Have a look at the Android NDK and this guide about the development of root apps.
Click to expand...
Click to collapse
Thanks for the link. Good stuff, but won't help in my targets... unless an example is seen.