Install multiple apps in one step (Android) - android

I'm trying to find a way to "package" my apps in one super app that downloads and installs all my apps.
So far my options seem to be:
Make an interface app that links to each of my apps in the app store (too many steps).
Create a big apk file containing all my apps that would drop my apps in a folder on the device and run a script to install them all (not sure if possible).
?
Any help very much appreciated.

create a big apk file containing all my apps that would drop my apps in a folder on the device and run a script to install them all (not sure if possible)
You cannot install them. You can help the user install them, by calling startActivity() to bring up each one in sequence, but this will be a similar number of steps to the approach that you rejected. It also means that you will take up double the disk space (copy in your "super" APK plus the installed copy of each app).
???
Have only one app in the first place.

For systems that have ROOT permission,copy apks to /data/app directory.For the other,achieve every function in one package and show these functions' activities in launcher.Just like several apks have been inatalled in one time.

Related

How update a single file installed in the APK while developing an app on Android?

I am developing an Android application that has a NDK .so file which I need to iterate on and fix + improve.
The current workflow has me having to generate a APK and install it every iteration which updates a whole plethora of non NDK elements in the process really slowing things down.
The question is how could I access the installation folder of my own APK? I have both a rooted and unrooted device.
Is there some change I could make to install the app in an unprotected location for development purposes even. The installation data is my own application after all so feels like should be a way...
Help greatly appreciated :)
EDIT1:
I found Unity3D has some sort of patching mode, maybe this is a sign that with the correct ADB commands it may be possible... https://docs.unity3d.com/Manual/android-AppPatching.html
EDIT2: I found the location of the .so I am building in... checked on unrooted device and don't have permission.
If your app is not a native-only app (has a Java/Kotlin part) then your so library should be loaded at the moment using a call to System.loadlibrary(..).
What is interesting on this method is, that calls to this method are ignored if the library to be loaded has already been loaded. So if you modify the Java code of the development build of your app to manually load your library before the original loadLibrary call is executed you can end up with a different library loaded.
The only problem is that System.loadLibrary(..) does not accept a file-name or path as argument. But using System.load(..) which uses a full path as argument you should be able to specify a full path to a file e.g. in the app's data directory. That way you can replace the library as often as you want and then just restart the app to load the updated library.

How to install two versions of the same Android app on one (rooted) device?

Is it possible to install two instances of the same app on a rooted Android device?
I know, that the Android system distinguishes apps based on their package name.
It is possible to decompile apps with tools like apktool, change the Manifest file and recompile / sign them. However, for more sophisticated applications (e.g., if they have multiple apk files packed in a apkx file) or complex dependencies this not always works.
I do not want to work with third party applications like Dual Space, Titanium Backup and so on.
How would you approach this?
A few options:
Use lucky patcher's "clone" function in the tools menu (shouldn't be hard to find)
Copy the app apk out of system memory and edit it manually (good luck, text file "readers" read it fine, editors do not)
Use an apk editor to change the package name (I have a copy of one if necessary)

Run multiple android app instances like parallel space

I want to know how parallel space
https://play.google.com/store/apps/details?id=com.lbe.parallel.intl&hl=en is working. It is an app for logging in with another facebook, whatsapp etc account. You can find the detailed description in the play store link.
I have looked at the folders that parallel space is creating using ES Explorer. They have created the following folder parallel_intl/0/
In this folder they have DCIM, Pictures etc folder. I logged in another whatsapp account using parallel space and they created the whatsapp folder at the following location parallel_intl/0/Whatsapp
Is it possible to achieve the same thing with Android For Work Container???
Are they some how creating a separate space where Whatsapp etc will run???
Kindly provide some guideline explaining how this can be achieved.
Thanks.
Actually they have created a virtual OS named multi-droid where you can run any app on that OS. As you install any app on their OS the space for that app increases by the size of the app. Firstly they find the path of your installed APK then they copy that APK into somewhere in the directory
Thus they have the APK to install . now they run it on their OS and they took all the permissions required by the app that way all the permission could be obtained .then the app has a service running in background so notifications can be obtained .

Does copying Android application from device to device copies the data as well?

I want to protect my application from being copied by users from device to another device. I know that wont be possible because once the apk is installed any third party application may be able to copy or extract the apk. I mostly care about the private data of the application rather than the apk itself. So, my questions are :
1- Can I protect the apk from being copied to another device by the user ?
2- If user copied an application from device to another (e.g. via third party app or by bluetooth) will he/she be able to copy the private data as well ? If yes, can I protect that ?
Thanks in advance.
To answer briefly, AFAIK, No.
Regarding the single questions:
if device is rooted it's really easy to access the /data/app/ dir and copy your apk, even on the device itself.
For un-rooted devices you need to issue some adb commands. For reference, look here:
https://stackoverflow.com/a/11013175/1865860
https://stackoverflow.com/a/17135554/1865860
How to get a list of installed android applications and pick one to run
the same applies to /data/data/com.example.app/ for the private app's data. Just different folder and possibly many files to copy.
Basically the difference it's not in having root or not, but in the ease of realization.
you can use google licence in your app even if its copied from rooted device it wont work until its downloaded from playstore
second /data/data/<packagename>/ can be copied from rooted device

Is there a FAST way to export and install an app on my phone, while signing it with my own keystore?

So, I've downloaded my own application from the market and installed it on my phone. Now, I am trying to install a temporary new version from Eclipse, but here is the message I get:
Re-installation failed due to different application signatures.
You must perform a full uninstall of the application. WARNING: This will remove the application data!
Please execute 'adb uninstall com.applicationName' in a shell.
Launch canceled!
Now, I really really don't want to uninstall the application, because I will lose all my data. One solution I found is to Export my application, creating new .apk, and then install it via HTC Sync (probably a different program based on what phone you have). The problem is this takes a long time to do, since I need to enter the password for the keystore each time and then wait for HTC Sync. It's a pain in the ass!
So the question is: Is there a way to make Eclipse automatically use my keystore to sign the application (quickly and automatically)? Or perhaps to replace debug keystore with my own? Or perhaps just tell it to remember the password, so I don't have to enter it every time...? Or some other way to solve this problem?
In Eclipse, select Window --> Preferences--> Android --> Build
You can have your keystore pointed here
Just rename the temp app's package in Eclipse. Change com.appname to com.appname2. Now you can debug as normal, and the apps will run side by side.
This isn't a signing problem, it's due to the fact that Android won't allow any 2 applications to share the same namespace.
Make sure you change the icon for the temp one or something though, otherwise it'll be annoying to tell them apart!
Beside the obvious part where you don't download it from the market when you can get it so much easier update it right from eclipse, there is a way.
First, I recommend getting Android Studio as you can save passwords, which shortens down the time used by a few seconds. This is something you can skip.
Now, you have some options:
Use Google Drive, or any other cloud sync tool that allows you to upload files and download on your phone.
Have your phone download folder available and easily accessible from your computer, alongside the folder where the APK is stored after the signing. Simply drag the file into the downloads and run it from the phone
You could replace the debug.keystore file with your own keystore (rename yours).
This file is located in the .android folder of your documents (at least on XP).
Edit: bah, GSree beat me to it. His/Her answer is more user friendly than mine!
Edit 2: Your question was specifically,
"So the question is: Is there a way to
make Eclipse automatically use my
keystore to sign the application
(quickly and automatically)? Or
perhaps to replace debug keystore with
my own?"
I would suggest asking a different question if you don't like the answers.
Not a full solution, but adding the '-k' param to the "adb uninstall" command will keep your data and cache dirs:
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories

Categories

Resources