There is an app I have that wont backup to the Google cloud... I have many that do just fine. This app also creates a basically useless .ab file when using adb backup.
I pulled the apk file from google play, used apktool to unpack it and examined the manifest... and there it was... allow Backup set to "true". I have the most up to date version of the app... but I then pulled the apk off my phone and did the same thing and the manifest had allowbackup set to false!
Can someone help me understand this? I can't get the data off of my old phone because of this... and I'd really like to get that data transferred to my newer phone. (This app data did not transfer during the upgrade process either)
I'm not looking to solve the issue... only the app developer can do that. I simply want to understand what might be going on.
So in the just a little knowledge is dangerous departement:
After unpacking the apk (apktool d app.apk), I modified the android manifest which had backups:false to backups:true. I then just did:
apktool b app
I took the apk so produced in the dist folder and put it on my pixel 6, after first uninstalling the original app. I then tried to install the app and got:
"you cant install the app on your device".
I don't want to reverse engineer the app... I just want to force it to do backups... I can only assume the approach I took is far too simple-minded. Like I said, I would like to modify the behavior of the app not the function. what else must I do?
Related
I got a problem with the way sms's are handled by HTC Sense(Its the HTC Desire).
I receive a sms from work on a daily basis, and thy contain a "/" (Slash as in "WorkPlaceName A/S") in the "from/sender" field instead of a phone number.
The problem is that the phone receives it, but discards it again because of the slash.
All sense based ROM's I've tried have all had this problem, but the non-sense froyo(2.2) ROM's are fine.
Now I want to change the behavior my self, but I don't know where to look.
I was thinking the kernel or somewhere in the ROM?
But I'm not sure.
I'll appreciate any help.
Anyone can help on this?
Does anyone know how would know?
Have you tried using Handcent instead of the HTC app? Since HTC's apps are not open source, it might not be easy to modify them although you could try 'APK Manager'.
Also, I recommend reading this if you want to understand how apps interact with the OS in Android - http://developer.android.com/guide/topics/fundamentals.html
gnarlyc said:
Have you tried using Handcent instead of the HTC app? Since HTC's apps are not open source, it might not be easy to modify them although you could try 'APK Manager'.
Also, I recommend reading this if you want to understand how apps interact with the OS in Android - http://developer.android.com/guide/topics/fundamentals.html
Click to expand...
Click to collapse
Yes i did try Handcent, but as far as I can see the problem runs deeper then that.
I tried almost all sms apps on the marked, and the sms's keeps getting deleted.
if there is any way to change it, you could most probably find it by decompiling the apks associated with the sms system.. Unfortunately I have no idea what file it would be, however you can convert the Android compiled XMLs with AXMLPrinter2.jar file, and edit the settings to get it to do what you want (though there is a better and more efficient way to do this.. I cant remember what the program is called to do it..)
You can get AXMLPrinter2.jar from here: Download
You have to have the java jre (java runtime environment), and here is the syntax:
1. rename the apk to a .zip file
2. extract the files to a folder
3. 1 by 1 go to the files you want and type (for example)
java -jar AXMLPrinter2.jar Rosie.xml > Rosie.txt
Like I said there is a better way. There is a program out there that will do the hard work on multiple files for you, however I can't remember the program name.
hexskrew said:
if there is any way to change it, you could most probably find it by decompiling the apks associated with the sms system.. Unfortunately I have no idea what file it would be, however you can convert the Android compiled XMLs with AXMLPrinter2.jar file, and edit the settings to get it to do what you want (though there is a better and more efficient way to do this.. I cant remember what the program is called to do it..)
You can get AXMLPrinter2.jar from here: Download
You have to have the java jre (java runtime environment), and here is the syntax:
1. rename the apk to a .zip file
2. extract the files to a folder
3. 1 by 1 go to the files you want and type (for example)
java -jar AXMLPrinter2.jar Rosie.xml > Rosie.txt
Like I said there is a better way. There is a program out there that will do the hard work on multiple files for you, however I can't remember the program name.
Click to expand...
Click to collapse
APK Manager?
hexskrew said:
if there is any way to change it, you could most probably find it by decompiling the apks associated with the sms system.. Unfortunately I have no idea what file it would be, however you can convert the Android compiled XMLs with AXMLPrinter2.jar file, and edit the settings to get it to do what you want (though there is a better and more efficient way to do this.. I cant remember what the program is called to do it..)
You can get AXMLPrinter2.jar from here: Download
You have to have the java jre (java runtime environment), and here is the syntax:
1. rename the apk to a .zip file
2. extract the files to a folder
3. 1 by 1 go to the files you want and type (for example)
java -jar AXMLPrinter2.jar Rosie.xml > Rosie.txt
Like I said there is a better way. There is a program out there that will do the hard work on multiple files for you, however I can't remember the program name.
Click to expand...
Click to collapse
Thanks I'll try that.
But do you know the name of the HTC SMS apk?
I can only find MMS and mail.
Anyway I'll have a look at the MMS apk.
This is a work-in-progress report. I found a cool way to save internal memory: one can delete native libraries from apks after the apks have been installed. When an apk is installed, the native libraries are put in /data/data/*/lib, and if you delete the lib from the apk file in /data/app, everything works fine. Signatures don't seem to matter here.
This is particularly useful for apps most of whose memory usage is the native libraries.
OK, I've only tried it with one app.
Ooops: Normally, the /data/data/app.name/lib directory gets deleted on reboot to match the shorn apk file.
But this can be prevented by setting /data/data/app.name/lib and /data/data/app.name/lib/* to read only (chmod 555).
In case anybody wants to try with this, here's how you can do it. Of course, you need root.
Download my Android commandline build of zip. Install it in /bin and make it executable (chmod 755 /bin/zip). If you don't want to or can't make /bin writeable, install it in /data/local, and then call it explicitly as /data/local/zip
In the shell, do:
Code:
su
cd /data/data/app.name
(Where of course "app.name" is the name of the app.) Make sure there is something in the lib/ folder, or you won't save any space. Make the libraries read-only:
Code:
chmod 555 lib lib/*
Then delete the libraries from the apk:
Code:
cd /data/app
zip -d app.name*.apk lib lib/*
(You can replace the first * with a -1 or -2 or the like suffix, which gets added by the installer.)
And you're done. The apk is now thinner, and the libraries are still usable as they've already been extracted to /data/data/app.name/lib
If your app was moved to SD using Froyo (or higher?), you will need to do something a little more complicated. After you've made the libraries read-only, you'll need to remount the app directory read-write, and then zip:
Code:
mount -o rw,remount /mnt/asec/app.name*
cd /mnt/asec/app.name*
zip -d pkg.apk lib lib/*
Run the app, then reboot to see if it still works. If not, uninstall and reinstall the app.
You can save pretty serious amounts of memory this way. The libs in some graphics-intensive apps, like games, are most of the apk. I've seen apks that shrink from about 2mb to about 200k or from about 7mb to about 2mb after this procedure. Particularly bloated are apps that include two different versions of the libraries, for different CPUs.
A happy thing is that you can still move the shorn app to SD (at least with my Force2SD--I haven't tried with the OS's own function).
Interestingly, the uninstaller can still delete the app, despite the procedure, which is nice. I don't yet know what happens when you try to upgrade after this.
It would be easy to write an app that does this, or to integrate it into Force2SD. I am not sure I am going to bother.
For further savings, you can remount your sdcard as exec (I have a utility that does that if anybody is interested), move the library from /data/data/app.name/lib to your sdcard and then link to that. I have a script that automates that procedure. I've done it for a few apps that have large libraries (Angry Birds is a nice example).
Another update: This actually works very reliably. I've deleted the libraries from a bunch of apks using the above method, and things continue to work just fine.
is there an app or a script that can do this?
it is really painfull to do this with +100 apps :silly:
What happens when I update the app using play store. Is it works ?
And if it is working, does it download more data than usual to get an upgrade?
Sent from my HTC Desire X using XDA Free mobile app
ashifashraf5 said:
What happens when I update the app using play store. Is it works ?
And if it is working, does it download more data than usual to get an upgrade?
Sent from my HTC Desire X using XDA Free mobile app
Click to expand...
Click to collapse
When you update, this would need to be done again.
I have no idea if this still works on current Android versions anyway.
@arpruss
I'm doing this to my system apps currently. I use an zip explorer and just move the lib files needed to system/lib and deletes the lib folders from Apk. There is no problem of clearing of lib files at start up for this thogh. I Set the permissions to read write.
Sent from my HTC Desire X using XDA Free mobile app
---------- Post added at 05:21 PM ---------- Previous post was at 05:18 PM ----------
I like to know if the updates download more data than the normal case. What I mean is , when we updates app by play store it only download a portion of files. I like to know if this is affected by removing lib files
Sent from my HTC Desire X using XDA Free mobile app
ashifashraf5 said:
@arpruss
I'm doing this to my system apps currently. I use an zip explorer and just move the lib files needed to system/lib and deletes the lib folders from Apk. There is no problem of clearing of lib files at start up for this thogh. I Set the permissions to read write.
Click to expand...
Click to collapse
If you move the lib files to system/lib, the apps won't upgrade properly.
I have some more observations:
- On 2.3, the /data/data/*/lib directory gets cleared on reboot if the apk has had its libraries deleted. It doesn't matter what the permissions on the libraries are.
- On 4.3 and 4.4, things work great, and you don't need to change permissions at all. (I don't have rooted 4.0-4.2 devices for testing.)
- Many apps from the Amazon Appstore have a security check that makes them fail if the apk is modified.
- Moving the library-shorn apk to SD causes the libraries to disappear. I don't think the permissions matter here (but haven't tested).
It would be nice to have data from rooted 4.0, 4.1 and 4.2 devices. I guess I could play around with an emulator.
I am thinking of integrating this functionality into my Force2SD app. I would probably make this functionality available in the free version.
Anyone has tried this with 4.0 ?
benibela said:
Anyone has tried this with 4.0 ?
Click to expand...
Click to collapse
I think I tried something like this with 4.3 or 4.4 and it worked.
Yes, you said that already.
But I need to know it for 4.0.4. My stupid bank has a must-use-app for online banking with 20 MB libs that are only there to prevent it from running on a rooted device. And if it detects a modification, it self-destructs.
Nevermind. I tried it with my own app and it worked. With permission change, did not try without
I have Android 8.1.0, Xiaomi Redmi 5 Plus.
I am modifying the files in "lib" directories (such as /data/data/com.application.name/lib/) of few specified applications.
Rarely the files from the "lib" directory get overwritten with the content from APK archive of these applications. The "lib" gets restored from APK archive sometimes (maybe after 2 weeks or so).
It's important for my project to learn about the problem of Android restoring the "lib" directory.
I would like see what part of Android is responsible for this. I want to know which script or executable file in Android is responsible for restoration of "lib" directory.
Hopefully someone out there knows something about it.
i found a better way to remove lib folder from apk to get more free space https://forum.xda-developers.com/android/general/guide-t4080131
I'd like to try out an app from the Market but I don't like the list of permissions it has. Specifically the ability to modify global system settings and change my wifi settings. I'd like to try removing those permissions by decompiling it with APKTOOL and removing those permissions from the manifest file.
The only way I can see of getting the file onto my computer to edit it, is to install from the Market first and then pull it off the phone with 'adb pull'. If I download it, but don't run it, am I right to assume the app will be totally dormant while I pull it to the computer so I can then uninstall it from the phone straight away?
Hello Guys,
I am trying to make/edit my first custom rom (forgive my noob mistakes). As base i am using the Oxygen rom. This rom has all his apps stored in system/app. I inserted an launcher(hololauncher), keyboard(custom htcime) and gallery(quickpick) apk in this folder, but after the rom is flashed these apps are causing fc's and the gallery app isnt even flashed.
I know that not every apk can be placed in the system/app folder, but how can i ensure that these apps will install correctly during flashing.
Depends on apps.
The most common mistake is forgetting to set the permissions to rw-r-r.
Also some apps need their lib files (usually end in .so) in a specific location, like quickpic that can't be turned into a system app just by putting it in system/app address.
Edit: you can ensure these apps are installed correctly by testing.
1 install them normally and convert them to system apps.
2 write down where each of their parts end up (some will always need stuff in data/app or something similar.
4 use a root explorer or adb to copy those files to your pc.
5 modify the flashable zip. Add the files you just copied and modify the updater-script to make sure those files get flashed to the correct location (you might need to include mount data commands if any of the files flash to data/)
6 test!
Some apps might require actual edition by decompiling them, but the above should work for most.
dxppxd said:
Depends on apps.
The most common mistake is forgetting to set the permissions to rw-r-r.
Also some apps need their lib files (usually end in .so) in a specific location, like quickpic that can't be turned into a system app just by putting it in system/app address.
Edit: you can ensure these apps are installed correctly by testing.
1 install them normally and convert them to system apps.
2 write down where each of their parts end up (some will always need stuff in data/app or something similar.
4 use a root explorer or adb to copy those files to your pc.
5 modify the flashable zip. Add the files you just copied and modify the updater-script to make sure those files get flashed to the correct location (you might need to include mount data commands if any of the files flash to data/)
6 test!
Some apps might require actual edition by decompiling them, but the above should work for most.
Click to expand...
Click to collapse
How can I convert it to a system app when it already is installed normally ?
I also saw the option to make a data/app folder, isn't that easier ?
(Take in consideration that I don't use kitchen or adb tools, just winrar and notepadcc )
Sent from my HTC Desire using xda app-developers app
Not talking about adb and kitchen.
there are many app managing apps out there (titanium backup, link2sd) that can convert apps to system apps.
The updater script is in META-INF of the flashable zip (can be edited with notepad).
You only need a rooted device to see where the apps keep their data and copy those files.
dxppxd said:
Not talking about adb and kitchen.
there are many app managing apps out there (titanium backup, link2sd) that can convert apps to system apps.
The updater script is in META-INF of the flashable zip (can be edited with notepad).
You only need a rooted device to see where the apps keep their data and copy those files.
Click to expand...
Click to collapse
Ok that is clear, thanks. What do you think about data/app. Will this work ?
Sent from my HTC Desire using xda app-developers app
winesh said:
Ok that is clear, thanks. What do you think about data/app. Will this work ?
Sent from my HTC Desire using xda app-developers app
Click to expand...
Click to collapse
Yeah, flashing to data app is an option, but if a data wipe or factory reset is applied after flashing the rom (to correct a bootloop for example), those apps are gone.
Hi every1,
Important threads:
- https://www.thecobraden.com/posts/unblocking_firebase_ids/
Explanation:
I've been messing, for some time now, with android tampering/reverse engineering. But, there is a problem that I can't seem to overcome, neither find any solution for it on any foruns, that is "Signing In with Google" on the app after modifying it (decompiling/recompiling).
The process I follow is as simple as:
Pulling the APK file from my android using adb;
Opening the APK file using jadx-gui to see the contents and search for what I want to change;
Decompiling the APK using APKEasyTool and searching for the .smali file I previously wanted to change;
Changing the file and recompiling the APK with APKEasyTool;
(optional) In case the APK file is splitted, installing it on my device using SAI.
Results:
After this process the app works fine, but as mentioned, I can't no longer sign in on the app with Google. As far as I know, when you click the sign-in button, an HTTP request is made to Google Servers, asking for a token, than can later be used to sign-in on the app (this is made by integrating Firebase in the android project). And, it's in this process that it fails, because on this request it is also sent the SHA-1 fingerprint as a Request Header, which was changed when signing the APK file.
Using a tool like MITMProxy I was able to repeat this request with the APK original SHA-1 (retrieved with keytool -printcert -jarfile <original.apk>), but this requires moving traffic through, for instance, my computer - as a proxy server. (And for some reason it didn't always worked).
Question:
Does anyone have any thoughts on this, or have successfully been able to decompile/recompile an apk and still be able to use Google Sign In option? How can I modify an apk file and still be able to sign in on it with my Google account?
i mean if your device is rooter, you can login in origin apk and use lucky patcher backup data ,install modified apk then do a restore data in to app
Play Services will not allow it unless the apk is signed by Google. The solution is to set the public key for the modified apk and patch Android Framework's signature check to make the system think it's valid.
The yellow smiley face app mentioned above does this, as well as microg.