My company has 2 native applications that run on Windows/Mac/Linux as services or daemons. I have taken this code and compiled it with the Android toolchain. I have a rooted android device to which I can push this application, run as as process and it works great. However, I'd like to build some sort of installer (probably an .apk) to which I could add this native application and run on ANY android device (e.g. without being rooted).
So does anybody know of a link, example or even just how to "install" a native application and run?
Thanks
/Loren
To do this properly, you need to rework your native service to be a library utilized by an android Service, and operate in keeping with android's conception of services (lifecycle, status bar notification, etc).
Trying to run your own executable (vs library to an android-provided executable) is not something android makes easy and not something you are encouraged to do.
Related
I need to automate some actions (testing ajax login on demand) in a browser.
I manage to obtain the desired behavior using selenium and chromedriver on my pc, but I need to make it work either in a UWP app or in an Android app (*and must run without a pc once deployed)...
Notes:
UWP App
It's a web service that runs on Windows 10 IOT Core on a Raspberry 3b+ (ARM7)
Selenium seems to be incompatible to UWP apps... Maybe because of they are sandboxed and can't start new processes?
The app won't be published on windows store
I can add all needed capabilities
Android
It's an app that remotly commands the UWP app
Selenium integration compiled but execution blocks on "webDriver.get(url)"; I did'nt find a way to make it work yet.
I'm flexible concerning software/os/browser/libraries/etc to use.
The UWP & Android Apps are kinda complexe (they have many file...)
I don't know how to install a browser on the IOT Core (did'nt find an msix or appxbundle I could use)
Some ideas I had:
- Deploying the ARM7 chromedriver with a portable ARM7 chromium with the app
- Using dockers
- Using raspbian & mono
The ideal solution would be simple and working on android (if possible)...
Any of you have an idea of how I could do that?
I finally found a solution. I reproduced the desired behavior in Android using a WebView and javascript using the evaluateJavascript method.
It's a little tricky but perfect for my need.
I'm really curious to know how blackberry the company let's the blackberry OS install the apk package and the app runs like it was built to run on a blackberry. I've been looking for information on how they do it but can't find anything relevant.
Maybe there is some kind of compatibility layer built in the OS to let android apps run?
I thought I'd ask I think it's pretty neat how that works.
The compatability layer is built into the OS. QNX and Android on ARM use the same system call syemantics. BB10 system calls are able to distinquish the origin of the call (QNX or Android) and provide the appropriate service. This was introduced in 10.2.
What are the packages which need to be installed for writing scripts using PyJius in system ?
Is there anyway by which i could run these python scripts on android phone ?
What is K ivy Launcher for android ? Will it be helpful for executing my scripts ?
How actually Kivy works ( in detail say in I want to switch on Bluetooth using scripts, which are the things in the K ivy architecture gets invoked by doing so ? )
What i need is to write scripts on computer and then after sending those scripts to my phone, then i need to execute my scripts from phone. Get the results on the phone and send those results to system.
What are the packages which need to be installed for writing scripts using PyJius in system ?
I'm not sure what you mean here. To run use pyjnius, all you need is...pyjnius. It is a separate module, not part of kivy itself, though kivy uses it on android. Kivy's mobile build tools automatically package this when you build an android apk.
What is K ivy Launcher for android ? Will it be helpful for executing my scripts ?
An app that can dynamically open kivy apps from your user data directory. You can use it to upload and run kivy scripts/apps on your device.
It is most useful for quick tests, not as a way to distribute apps. For this, it's very easy to build your own apks, which gives a lot more flexibility in what you do and what you package.
How actually Kivy works ( in detail say in I want to switch on Bluetooth using scripts, which are the things in the K ivy architecture gets invoked by doing so ? )
I'm not sure what you're asking here. Kivy is a graphical framework for python, using an optimised opengl interface...you write python gui applications with it.
For things like bluetooth on android, you can use pyjnius (or more easily, wrapper projects like plyer providing an abstracted python api, though I don't think plyer has bluetooth quite yet). This generally isn't very hard, I've seen bluetooth done before.
Kivy itself is a graphical framework, these other tools are sister projects but separate from the graphics.
What i need is to write scripts on computer and then after sending those scripts to my phone, then i need to execute my scripts from phone. Get the results on the phone and send those results to system.
You can certainly do this with kivy, by putting the scripts in an app that you run. Network communication also isn't hard - it's separate to kivy itself, but you have access to all the normal python modules you might use.
Actually my application is running a service only when boot completed. it runs fine in android 2.2.
But when i install 4.0 android supported device it does not work. even after installation application is not running. I know after 3.X android have a change that application is not running when installed.
So how only service oriented application run in > 3.x android version ?
any help is appreciable.
How to run application without activity in android version 4.X
You don't.
First, you pretty much always need an activity:
You need to have your copyright notice somewhere
You need to have your license agreement somewhere
You need to have your disclosures of other open source components that you are using somewhere
You need to provide access to technical support, even if it is just a link to your Web site, somewhere
You need to allow the user to configure the behavior of the service somewhere
You need to give the user access to online help somewhere
You want to avoid the one-star ratings that come from apps that do not have a launcher activity, when the user installs the app, then cannot figure out how to run the app, and thinks that you are a complete moron as a result
This is above and beyond the technical requirement for a component of your app to be manually started before any manifest-registered BroadcastReceivers will work.
Okay, here's the situation:
I'm developing an application for a client (or trying to do so). It requires much (if not all) of the same functionality as the built-in SMS/MMS application. So, I thought - HEY! Android is open source right? I can take the application and modify to my needs, right?
So, I found the code on github for the MMS/SMS application (for some reason, based on the AndroidManifest file, it calls my project I built, "ConversationList"). But I get TONS of errors involving the import com.google.android.mms.* package and a couple other packages.
Everyone keeps saying "it's a private/internal package", and "download the entire AOSP". But, HOW do I do this on Windows, and WHY can't I just download the appropriate packages to use in the program?
ALL I want to do is build a project in Eclipse deploy it to my phone, and then modify the necessary code. If Android is open source, why so many secret/internal packages? This is frustrating.
Any advice?
So, I found the code on github for the MMS/SMS application (for some reason, based on the AndroidManifest file, it calls my project I built, "ConversationList"). But I get TONS of errors involving the import com.google.android.mms.* package and a couple other packages.
AOSP applications like this are designed to be built as part of a firmware image, not as standalone apps.
But, HOW do I do this on Windows
Most likely, you don't. Cygwin might work. More likely, you will need to use OS X or Linux, such as running Linux in VirtualBox. And the result of your build will not run on anything, except as part of a firmware build that you use to replace the firmware on a device.
WHY can't I just download the appropriate packages to use in the program?
Because that application is designed to be built as part of a firmware image, not as a standalone app.
ALL I want to do is build a project in Eclipse deploy it to my phone, and then modify the necessary code.
Then find a project that is designed to be built as a standalone app as your starting point. Or, work on modifying the project you are trying to use to work as a standalone app, by ripping out all the functionality that depends upon things that are not in the app itself.
If Android is open source, why so many secret/internal packages?
They are not "secret". They are part of the firmware.
For example -- since you appear to be familiar with Windows -- it is entirely possible that "apps" like Control Panel are not designed to be built independently from the Windows OS. If you were able to download the source code to Windows and tried to load Control Panel into Visual Studio, it is eminently possible that you could not create some standalone CPANEL.EXE file just via that one project. Rather, you would need to use a customized Windows OS build process to build the whole OS, which would then contain a CPANEL.EXE that would run within that built version of the OS.
Most of the AOSP apps work this way. Some have been forked to create standalone apps -- K-9 Mail came from the early version of the AOSP email app. I have no idea if anyone has done this with the stock AOSP Messaging app or not.
You could instead fork TextSecure[0] as it is no system application but looks very similar to the stock messaging application. The AOSP application needs to be installed on /system/app which requires root and might not be what your customer wants.
Please note that this application is copylefted (GPLv3) so you'd have to give your client access to the source code under the terms of the GPL if you fork.
[0] https://github.com/WhisperSystems/TextSecure