FORUMS
Remove All Ads from XDA

[TOOLS][ZIPS][SCRIPTS] osm0sis' Odds and Ends [Multiple Devices/Platforms]

13,604 posts
Thanks Meter: 29,939
 
By osm0sis, Recognized Developer / Recognized Contributor on 18th April 2013, 12:37 AM
Post Reply Email Thread
3rd August 2015, 10:16 PM |#371  
mikeoswego's Avatar
Senior Member
Flag Northern Indiana
Thanks Meter: 773
 
More
Quote:
Originally Posted by osm0sis

Nice job! Cool to figure out the mechanics of how packages.xml relates to Android optimizing.

Well, I've got something put together that works. Since I control the rom, I have the list of versions for the installed apps in /system rather than having to check them on the fly. This script is tacked onto an existing script in the Motorola rom.

It looks for updated apps in packages.xml, compares the version and if the system version is greater/equal, it does an rm -rf on the version in /data. Then it goes through packages.xml to find the start of the package entry for the version in /data, removes that line and all up to the /package line. Then it goes through packages.xml again to find the lines marked as "updated-package" and "/updated-package" for the app and sed removes the "updated" part. Finally, if any action was taken, it reboots the phone. After the reboot, the optimizing apps dialog comes up for the apps updated, all settings are still in place and the version number for the system installed app has been updated. This all takes some time and it is 30 seconds or more after the lock screen appears before the reboot occurs. I'm not thrilled by the auto reboot but on the other hand there is no need to wipe dalvik-cache and wait for an eternity if Xposed is installed to rebuild the entire cache. Maybe I could speed this up by reading packages.xml into an array rather than reading it from the disk, I'll have to think about that.

Here is the code:
Code:
# Hack to clean up apps in data after image upgrade
#
reboot=no
tmp=$(grep "\<updated-package name" /data/system/packages.xml)
tmpline=$(echo "$tmp" | grep -c \>)
let tmpline=tmpline+1
counter=1
while [  $counter -lt $tmpline ]; do
	appname=$(echo $tmp | cut -d \> -f $counter | cut -d \" -f2)
	poscounter=1
	position=empty
	datainfo=$(grep "<package name=\"$appname\"" /data/system/packages.xml)
	poscounter=1
	until [ "$position" == " version=" ]; do
		position=$(echo "$datainfo" | cut -d \" -f $poscounter)
		if [ "$position" == " version=" ]; then
			let poscounter=poscounter+1
			dataversion=$(echo "$datainfo" | cut -d \" -f $poscounter)
		fi
		let poscounter=poscounter+2
	done
	sysversion=$( grep "$appname\"" /system/etc/applist | cut -d \" -f2)
	if [ "$sysversion" == "" ]; then
		sysversion=0
	fi
	if [ $sysversion -ge $dataversion ] ; then
		position=empty
		poscounter=1
		until [ "$position" == " codePath=" ]; do
			position=$(echo "$datainfo" | cut -d \" -f $poscounter)
			if [ "$position" == " codePath=" ]; then
				let poscounter=poscounter+1
				datapath=$(echo "$datainfo" | cut -d \" -f $poscounter)
			fi
			let poscounter=poscounter+2
		done
		rm -rf $datapath
		reboot=yes
		if [ -f /data/system/packages.tmp ]; then
			rm /data/system/packages.tmp
		fi
		packline=no
		endpackline=no
		doneline=no
		foundpack=no
		while IFS= read line; do 
			if [ "$doneline" == "yes" ]; then
				printf "%s\n" "$line" >> /data/system/packages.tmp
			else
				if [ "$foundpack" == "yes" ]; then
					endpackline=$(echo $line | grep "</package")
					if [ ! "$endpackline" == "" ]; then
						doneline=yes
					fi
				else
					packline=$(echo $line | grep "<package name=\"$appname\"")
					if [ ! "$packline" == "" ]; then
						foundpack=yes
					else
						printf "%s\n" "$line" >> /data/system/packages.tmp
					fi
				fi
			fi
		done < /data/system/packages.xml
		mv /data/system/packages.tmp /data/system/packages.xml
		if [ -f /data/system/packages.tmp ]; then
			rm /data/system/packages.tmp
		fi
		packline=no
		endpackline=no
		doneline=no
		foundpack=no
		while IFS= read line; do 
			if [ "$doneline" == "yes" ]; then
				printf "%s\n" "$line" >> /data/system/packages.tmp
			else
				if [ "$foundpack" == "yes" ]; then
					endpackline=$(echo $line | grep "</updated-package")
					if [ ! "$endpackline" == "" ]; then
						printf "%s\n" "$line" | sed 's/updated-package/package/' >> /data/system/packages.tmp
						doneline=yes
					fi
				else
					packline=$(echo $line | grep "<updated-package name=\"$appname\"")
					if [ ! "$packline" == "" ]; then
						printf "%s\n" "$line" | sed 's/updated-package/package/' >> /data/system/packages.tmp
						foundpack=yes
					else
						printf "%s\n" "$line" >> /data/system/packages.tmp
					fi
				fi
			fi
		done < /data/system/packages.xml
		mv /data/system/packages.tmp /data/system/packages.xml
	fi
	position=empty
	let counter=counter+1
done
if [ "$reboot" == "yes" ]; then
	reboot
fi
#
#End clean up hack

Thanks again for your ideas and taking time to help me out with this!
The Following User Says Thank You to mikeoswego For This Useful Post: [ View ] Gift mikeoswego Ad-Free
 
 
3rd August 2015, 11:35 PM |#372  
osm0sis's Avatar
OP Recognized Developer / Recognized Contributor
Flag Halifax
Thanks Meter: 29,939
 
Donate to Me
More
I'll just leave this here...

Quote:
Originally Posted by pkgnex

OK, here they are (kept them out of the thread so you can review them first if you wish):

https://dl.dropboxusercontent.com/u/...875mntsettings
https://dl.dropboxusercontent.com/u/.../925vmsettings
https://dl.dropboxusercontent.com/u/.../950iosettings
https://dl.dropboxusercontent.com/u/...965netsettings
https://dl.dropboxusercontent.com/u/...75experimental

... and here's the rundown (should be included in the "changelog" I commented at the top of each file):

875mntsettings - Has no changes. I just updated the header comments to denote the file has been verified for 5.0+.
925vmsettings - I updated the min_free_kbytes to shamu stock (higher) which seems to be consistent with other more modern devices having more memory. I removed the LMK tweaks since they no longer work with 5.0+. I also doubled the entropy wakeup_threshold values based on subjective feel, and again the theory that it makes sense for newer devices with more RAM.
950iosettings - I simply added my previous sioplus tunables for sio and sioplus schedulers (you and boype, and Nephilim and everybody else agreed they were good, and I proved the optimization with stats, of course ).
965netsettings - Here's where it gets interesting... I took the ipv4 tcp stuff and the transmission queue length setting from the old 975experimental and put them in a new script along with the tcp_congestion_algo from 925vmsettings. These are beneficial (I proved it with network speed tests on WiFi and LTE), and should no longer be experimental. That said, the txqueuelen value of 0 was AWFUL. After doing some research and optimization, I determined 100 is the way to go here - reduces buffer bloat by 90% and shows significant improvement on hi-speed wlan and LTE.
975experimental - This is now just what's left of the old script after taking out the 965netsettings stuff. I don't think any of it is needed anymore on newer devices with more RAM and 5.0+, but I verified they still run without breaking anything.

That's it... nothing too earth-shattering but txqueulen=100 is nice find and helps a lot.

Let me know what you think or if you have any questions. I know there's no rush on this, but I would like to release a "refresh" of the Dev Team scripts before "M" drops!

Feel free to re-post them as you see fit.

All credit to @pkgnex for the time and effort spent on this thorough Lollipop(+) refresh of the old "Dev Team" init.d scripts. Thank his post below.

Edit: Rehosted - https://basketbuild.com/devs/osm0sis/scripts/
The Following 9 Users Say Thank You to osm0sis For This Useful Post: [ View ]
4th August 2015, 03:41 AM |#373  
Senior Member
Thanks Meter: 941
 
More
Thanks, osm0sis.

Glad to contribute a little something to your awesome work.

If anyone has any questions, I'll be glad to answer if I can.
The Following 7 Users Say Thank You to pkgnex For This Useful Post: [ View ] Gift pkgnex Ad-Free
4th August 2015, 01:14 PM |#374  
Captain_Throwback's Avatar
Senior Member
Flag The Nothing
Thanks Meter: 22,611
 
10
Donate to Me
More
Quote:
Originally Posted by osm0sis

@Captain_Throwback

<36>[ 5.592661] type=1400 audit(10666621.200:10): avc: denied { search } for pid=231 comm="00test" name="/" dev="fuse" ino=0 scontext=u:r:init_shell:s0 tcontext=ubject_r:fuse:s0 tclass=dir permissive=0

Pulled that from my dmesg. 00test is an init.d script I was using to test if init.d support was working and it didn't execute, so it looks like the logwrapper init.d support injector we came up with is having SELinux troubles. Any ideas to get around it without going Permissive?

Unfortunately I don't know enough about SELinux to know how to fix it. That would explain why it stopped working for me, though.
The Following User Says Thank You to Captain_Throwback For This Useful Post: [ View ] Gift Captain_Throwback Ad-Free
7th August 2015, 04:21 PM |#375  
osm0sis's Avatar
OP Recognized Developer / Recognized Contributor
Flag Halifax
Thanks Meter: 29,939
 
Donate to Me
More
Did some testing on my proof-of-concept ROM GApps Auto-Integration init.d script from the other night and it had a few issues, so now here is the polished version!

This init.d script will integrate /data/app GApps into /system, complete with libs (unlike Titanium Backup), for KK and JB (for now). It can also be run on-demand, stand-alone, but you'll have to reboot to trigger the Dalvik-cache to optimize, cleanup, etc. and things could theoretically be unstable until then. This is of course not intended for Stock ROMs since it'll break OTA functionality.

Used as an init.d script it should process things early enough in the boot that afterwards Dalvik will immediately do the cleanup ("Android is upgrading..."), much like following an OTA. Of course, because it occurs during boot, when it does have processing to do, the boot could take significantly longer than normal, generally on the bootanimation.

A log from the process is created at /sdcard/gapps-integrator.log, containing the date, /data/app/ name, /system/app/ name (if there is one) and any issues with copying libs or APKs that occur, and will be updated on every boot. If you don't have the GApp installed to /system/app/ then there is no matched APK and it will not be integrated, so you still need an initial GApps installation. APKs that don't contain any libs (eg. Keep) will naturally cause an error/warning when there are no libs to copy, but this is nothing to worry about.

/system/etc/init.d/000gappsintegrator:
Code:
#!/system/bin/sh
# chmod -R 755 /system/etc/init.d
#
# ROM GApps Auto-Integration
# osm0sis @ xda-developers

gtmp=/data/local/tmp/gapp;
log=/sdcard/gapps-integrator.log;

test ! -f $log && echo -e "## GApps Auto-Integration Script Log\n" > $log;
echo `date` >> $log;

# find new unintegrated Google Apps APKs in /data
for i in $(ls /data/app/ | grep -E 'com.android|com.google.android'); do

  # find equivalent /system APK name and only process if it exists
  sysapk=`grep "updated-package name=\"$(echo $i | cut -d- -f1)" /data/system/packages.xml | cut -d\" -f4`;

  echo "/data/app/$i $sysapk" >> $log;

  if [ "$sysapk" ]; then

    # extract and force copy libraries to /system
    mkdir -p $gtmp;
    unzip /data/app/$i -d $gtmp;
    chmod 644 $gtmp/lib/arm*/*;
    mount -o remount,rw /system;
    cp -fp $gtmp/lib/arm*/* /system/lib/ 2>>$log;
    rm -rf $gtmp;

    # overwrite /system APK with new /data APK
    cp -f /data/app/$i $sysapk 2>>$log;
    chown root.root $sysapk;
    chmod 644 $sysapk;
    mount -o remount,ro /system;

  fi;
done;

echo -e "---\n" >> $log;
For now this extracts the libs out of the APK and moves them to /system/lib/ regardless of architecture (beyond arm*), but this should be fine since Play Store downloaded them to your device in the first place. It also leaves the APKs untouched when copying them to /system/app/. This is because zip and zipalign don't come standard with busybox or in all ROMs, so a large /system partition or minimal GApps installation are a requirement for now. I might explore adding this as add-on functionality (if it detects those binaries) later, along with L and M support.

000gappsintegrator can be copied from the above, or is available in the OPs attached as a .txt file. busybox is likely required in your ROM, then simply download on your device, rename, move to /system/etc/init.d/ and chmod -R 755 /system/etc/init.d

Enjoy!
The Following 3 Users Say Thank You to osm0sis For This Useful Post: [ View ]
8th August 2015, 08:35 AM |#376  
mikeoswego's Avatar
Senior Member
Flag Northern Indiana
Thanks Meter: 773
 
More
Quote:
Originally Posted by osm0sis

For now this extracts the libs out of the APK and moves them to /system/lib/ regardless of architecture (beyond arm*), but this should be fine since Play Store downloaded them to your device in the first place. It also leaves the APKs untouched when copying them to /system/app/. This is because zip and zipalign don't come standard with busybox or in all ROMs, so a large /system partition or minimal GApps installation are a requirement for now. I might explore adding this as add-on functionality (if it detects those binaries) later, along with L and M support.

I got the script I was working on down to 2 seconds from the 90 that I had before looping through the packages.xml file.

I am just copying the folder with it's libs from /data because the playstore automatically just places the correct lib file, the other lib files in the apk don't need to be extracted. You are not checking version number of the app installed by the playstore against the version in system (and if you update the version in system from recovery, etc., the version for the old updated-packages entry is never updated so you have to either have aapt to look up the version in /system or have a list created ahead of time statically to work against.

Here is what I have now. The static list of apps that I'm going to process (in your case it would be the gapps list installed, you don't want to process updated CM apps it they start being updated by the playstore. The list I precompile and place in /system/etc/applist is in the form of com.android.whatever"345678, appID"appVersion I used the " as the delimiter just because at the time. I'll change that to a tab but wanted to share what I've done. You are not updating pacakges.xml and maybe I don't need to either since on reboot, the version numbers are updated for the entries I've modifed in packages.xml.

When I'm editing the packages.xml, I blank out the lines for the app installed by the playstore, sed the updated-package lines to just package for the apps we are working with. On the rom I'm working with, this completes in 2 seconds with 200 apps installed and 5 of them updated; it is done before the boot animation stats. Well it's late so I'll just post it:
Code:
#!/system/bin/sh
# Hack to clean up apps in data after image upgrade
#
reboot=no
i=0
old_IFS=$IFS      # save the field separator           
IFS=$'\n'     # new field separator, the end of line
while read line # Read a line
	do
	pkgxmlarray[i]=$line # Put it into the array
	i=$(($i + 1))
done < /data/system/packages.xml
IFS=$old_IFS     # restore default field separator 
pkgxmlline=$i
counter=0
updatedcount=0
updatedpkg=$(printf "%s\n" "${pkgxmlarray[@]}" | grep -n "\<updated-package name" | cut -d \: -f1)
updatedpkgcount=$(printf "%s\n" "${pkgxmlarray[@]}" | grep -c "\<updated-package name")
i=0
while read line # Read a line
	do
	sysverarray[i]=$line # Put it into the array
	i=$(($i + 1))
done < /system/etc/applist
sysline=$i
let tmpline=updatedpkgcount+1
counter=1
while [  $counter -lt $tmpline ]; do
	arraypos=$(echo $updatedpkg | cut -d " " -f$counter)
	let arraypos=arraypos-1
	appname=$(echo "${pkgxmlarray[$arraypos]}" | cut -d \" -f2)
	datapkgline=$(printf "%s\n" "${pkgxmlarray[@]}" | grep -n "<package name=\"$appname\"" | cut -d \: -f1)
	let datapkgline=datapkgline-1
	updatedpkgline=$(printf "%s\n" "${pkgxmlarray[@]}" | grep -n "<updated-package name=\"$appname\"" | cut -d \: -f1)
	let updatedpkgline=updatedpkgline-1
	datainfo=$(echo ${pkgxmlarray[$datapkgline]})
	position=empty
	poscounter=1
	until [ "$position" == " version=" ]; do
		position=$(echo "$datainfo" | cut -d \" -f $poscounter)
		if [ "$position" == " version=" ]; then
			let poscounter=poscounter+1
			dataversion=$(echo "$datainfo" | cut -d \" -f $poscounter)
		fi
		let poscounter=poscounter+2
	done
	sysversion=$(printf "%s\n" "${sysverarray[@]}" | grep "$appname\""| cut -d \" -f2)
	if [ "$sysversion" == "" ]; then
		sysversion=0
	fi
	if [ $sysversion -ge $dataversion ] ; then
		position=empty
		poscounter=1
		until [ "$position" == " codePath=" ]; do
			position=$(echo "$datainfo" | cut -d \" -f $poscounter)
			if [ "$position" == " codePath=" ]; then
				let poscounter=poscounter+1
				datapath=$(echo "$datainfo" | cut -d \" -f $poscounter)
			fi
			let poscounter=poscounter+2
		done
		rm -rf $datapath
		reboot=yes
		packline=no
		endpackline=no
		foundpack=no
		tmpcounter=$datapkgline
		done=no
		until [ "$done" == "yes" ]; do
			packline=$(echo ${pkgxmlarray[$tmpcounter]})
				pkgxmlarray[$tmpcounter]=""
				let tmpcounter=tmpcounter+1
				until [ "$done" == "yes" ]; do
					endpackline=$(echo ${pkgxmlarray[$tmpcounter]} | grep "</package")
					if [ "$endpackline" == "" ]; then
						pkgxmlarray[$tmpcounter]=""
						let tmpcounter=tmpcounter+1
					else
						pkgxmlarray[$tmpcounter]=""
						done=yes
					fi
				done
		done
		packline=no
		endpackline=no
		foundpack=no
		tmpcounter=$updatedpkgline
		done=no
		until [ "$done" == "yes" ]; do
			packline=$(echo ${pkgxmlarray[$tmpcounter]})
				pkgxmlarray[$tmpcounter]=$(echo ${pkgxmlarray[$tmpcounter]} | sed 's/updated-package/package/')
				let tmpcounter=tmpcounter+1
				until [ "$done" == "yes" ]; do
					endpackline=$(echo ${pkgxmlarray[$tmpcounter]} | grep "</updated-package")
					if [ "$endpackline" == "" ]; then
						let tmpcounter=tmpcounter+1
					else
						pkgxmlarray[$tmpcounter]==$(echo ${pkgxmlarray[$tmpcounter]} | sed 's/updated-package/package/')
						done=yes
					fi
				done
		done
	fi
let counter=counter+1
done
if [ "$reboot" == "yes" ]; then
	printf "%s\n" "${pkgxmlarray[@]}" | grep -v '^$' > /data/system/packages.xml
#	reboot
fi
#
# End clean up hack
8th August 2015, 03:24 PM |#377  
osm0sis's Avatar
OP Recognized Developer / Recognized Contributor
Flag Halifax
Thanks Meter: 29,939
 
Donate to Me
More
Yeah, in no particular order..

1) Mine doesn't need editing of packages.xml because Android does it itself afterwards when it does the Dalvik stuff.

2) Version number doesn't matter because this is only for people who don't want to flash GApps more than once and just let Play Store keep them up to date and then let the script keep them integrated to save space.

3) If CM updates things on the Play Store with com.android too, I'd thought of that and decided it's fine, it'll get integrated and its not a big deal.

4) /data only houses the libs in Lollipop+, so yeah, if/when I go to add support for that it should make it faster/easier, but for now this is KitKat and Jelly Bean (and possibly Ice Cream Sandwich) only.

So for my purposes mine works great, but for your purposes, by the sounds of it, you need yours. I wasn't trying to duplicate your functionality for your specific case.
The Following User Says Thank You to osm0sis For This Useful Post: [ View ]
8th August 2015, 05:46 PM |#378  
mikeoswego's Avatar
Senior Member
Flag Northern Indiana
Thanks Meter: 773
 
More
Quote:
Originally Posted by osm0sis

So for my purposes mine works great, but for your purposes, by the sounds of it, you need yours. I wasn't trying to duplicate your functionality for your specific case.

Right, I got mixed up. You are integrating updated apps in /data into /system where I'm wanting to delete apps in /data that have been updated in a read-only /system environment. From your example, it looks like maybe I just need to rm -rf the old apps in /data and not worry about rewriting packages.xml (which I spent a lot of effort figuring out how to do!) I'll test that out.
The Following User Says Thank You to mikeoswego For This Useful Post: [ View ] Gift mikeoswego Ad-Free
8th August 2015, 08:21 PM |#379  
mikeoswego's Avatar
Senior Member
Flag Northern Indiana
Thanks Meter: 773
 
More
Quote:
Originally Posted by mikeoswego

Right, I got mixed up. You are integrating updated apps in /data into /system where I'm wanting to delete apps in /data that have been updated in a read-only /system environment. From your example, it looks like maybe I just need to rm -rf the old apps in /data and not worry about rewriting packages.xml (which I spent a lot of effort figuring out how to do!) I'll test that out.

At the risk of talking to myself.. I found that in my application, that simply doing an rm -rf on the apps in /data/app was not enough, the apps were not available and packages.xml was not updated and there was no optimizing apps process. Running the original script with the packages.xml editing routine still in place, caused the built-in optimizing aps routine to run and packages.xml was updated.

So I'm not sure at this point if simply touching packages.xml causes the built-in optimizing to fire or if the 5.1 system always validates the packages in /system/app & /system/priv-app against packages.xml updating any changes found and fires the optimization unless the package entry is marked as updated in which case it is ignored. And apparently there is no validation of the packages in /data/app since it happily ignored the deleted apps, did not automatically fix packages.xml and didn't load the app in /system.
The Following User Says Thank You to mikeoswego For This Useful Post: [ View ] Gift mikeoswego Ad-Free
16th August 2015, 08:32 AM |#380  
osm0sis's Avatar
OP Recognized Developer / Recognized Contributor
Flag Halifax
Thanks Meter: 29,939
 
Donate to Me
More
Quote:
Originally Posted by Captain_Throwback

Unfortunately I don't know enough about SELinux to know how to fix it. That would explain why it stopped working for me, though.

This seems like it could be the when and why of it (comments):
https://01.org/jira/browse/BA-262

If I'm right, the logwrapper command itself shouldn't be crucial to the script, (it's just a nice way to output script errors to the dmesg like run-parts does), so I can just remove it. I'll mess around with other ways, or, at worst we can just do away with the logging and hopefully still have our simple init.d work.


Edit: Seems like logwrapper wasn't the whole problem, find was failing too, so I switched it to ls and that seems to get the scripts to run, and I can funnel them out to kmsg to preserve the logging, but still we have permission problems in the scripts themselves:

Code:
<4>[    4.513739] /system/etc/init.d/00test[3]: can't create /sdcard/test.txt: Permission denied
<36>[    4.513827] type=1400 audit(11880703.140:15): avc: denied { search } for pid=230 comm="00test" name="/" dev="fuse" ino=0 scontext=u:r:init_shell:s0 tcontext=u:object_r:fuse:s0 tclass=dir permissive=0

Edit 2: I've even tried invoking su and allowed su during boot in SuperSU settings but things still get blocked somehow..

Given that, the only real solution I can think of is to set SELinux permissive as part of the flashing process.

This is the most functional version I've come up with so far; I've also simplified it a bit where I hadn't thought to before:
Code:
# Execute files in /system/etc/init.d before booting
service run-parts /system/bin/sh -c "for i in /system/etc/init.d/*; do if  [ ! -d $i ] && [ -x $i ]; then . $i > /dev/kmsg 2>&1; fi; done;"
    class late_start
    user root
    group root
    oneshot

Edit 3: And more bad news.. It seems as if there's no way to disable SELinux in stock Lollipop kernels, or at least stock ramdisks, which would likely mean heavier modifications like swapping out init for the AOSP version, at which point we might as well just go back to putting busybox in /sbin and try executing run-parts to keep things simple.


Edit 4: Nope..

Code:
[email protected]:/ # dmesg | grep busybox
<3>[    4.433790] init: cannot execve('/sbin/busybox'): Permission denied
Well I'm out of ideas. I guess I'll make it non-stock only with the slim version above to at least update support for KitKat and lower, and also add this SELinux permissive cmdline chunk at the bottom before repack to hopefully support non-stock Lollipop(+) ramdisks:
Code:
# add SELinux commandline only in KitKat and newer
android_ver=$(mount /system; grep "^ro.build.version.release" /system/build.prop | cut -d= -f2; umount /system);
case $android_ver in
  4.4*|5.*|6.*) cmdtmp=`cat $split_img/boot.img-cmdline`;
                case "$cmdtmp" in
                  *selinux=permissive*) ;;
                  *) echo "androidboot.selinux=permissive $cmdtmp" > $split_img/boot.img-cmdline;;
                esac;;
esac;
The Following 2 Users Say Thank You to osm0sis For This Useful Post: [ View ]
23rd August 2015, 03:33 AM |#381  
bgiesing's Avatar
Senior Member
Flag Union, MO
Thanks Meter: 602
 
Donate to Me
More
@osm0sis here's a problem I am having with the GApps integrator script.

Code:
## GApps Auto-Integration Script Log

Sat Aug 22 21:23:07 CDT 2015
/data/app/com.android.chrome-2 /system/app/Chrome
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.android.chrome-2 is a directory (not copied).
/data/app/com.androidexperiments.lipflip-2 
/data/app/com.google.android.apps.chromecast.app-1 
/data/app/com.google.android.apps.hangoutsdialer-1 
/data/app/com.google.android.apps.inbox-1 
/data/app/com.google.android.apps.paidtasks-1 
/data/app/com.google.android.apps.photos-2 /system/app/Photos
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.apps.photos-2 is a directory (not copied).
/data/app/com.google.android.apps.youtube.creator-1 
/data/app/com.google.android.calendar-1 /system/app/CalendarGooglePrebuilt
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.calendar-1 is a directory (not copied).
/data/app/com.google.android.googlequicksearchbox-1 /system/priv-app/Velvet
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.googlequicksearchbox-1 is a directory (not copied).
/data/app/com.google.android.keep-1 /system/app/PrebuiltKeep
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.keep-1 is a directory (not copied).
/data/app/com.google.android.launcher-1 /system/priv-app/GoogleHome
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.launcher-1 is a directory (not copied).
/data/app/com.google.android.music-2 /system/app/Music2
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.music-2 is a directory (not copied).
/data/app/com.google.android.talk-1 /system/priv-app/Hangouts
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.talk-1 is a directory (not copied).
/data/app/com.google.android.tv.remote-1 
/data/app/com.google.android.youtube-2 /system/app/YouTube
cp: /data/local/tmp/gapp/lib/arm*/*: No such file or directory
cp: /data/app/com.google.android.youtube-2 is a directory (not copied).
---
Sent from my Moto G using Tapatalk
Post Reply Subscribe to Thread

Tags
automation, batch, flashable zip, script, tool

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes