 So, advance android debugging. So, why this advanced term is added because it is command line and you can do scripting also that is why I added advanced otherwise it is not advanced it is basic only. So, what we are going to discuss here we will discuss the ADB command which is android debug bridge and we will see some commands known as PM package manager activity manager and as you all know android operating system is based on linux kernel. So, most of the linux commands will work. So, if you are not familiar with linux operating system do not worry I will repeat every command for you and you can of course do man of that command in your local linux desktop and you can learn. So, if you want to get into android world it is better you switch to GNU linux environment. So, these are debugging topic so why we need debugging because for obvious reasons if your code does not work if your code compiles correctly without errors but it does not work as you intended then officially then of course you should do debug to that. What about operating system if you are not talking about the code if you are dealing with operating system how to debug operating system how to know how much RAM a particular application is consuming how much CPU particular application is consuming how to uninstall application on in bulk how to install application various things. So, we will start with installation of ADB and setting debugging environment. So, I hope if you are on Debian or Ubuntu based distribution including linux mint you can just do sudo apt-get install android tools android hyphen tools hyphen adb to get adb installed or you can optionally download the android hdk from this link. So, this link will initiate the download process or if you want to use right away the adb I have hosted this adb binary in my github account. So, you can go to this link and download this adb and ch mode is a command ch mode means change mode change mode to executable. So, when you download this command this will be a plain file a non and non executable file. So, with plus x I am telling linux to make this file executable. So, there will be permissions so the executable flag will be enabled so that you can execute that file that is all with the setting up environment and this is important setting udev rules for adb to run as normal user. Many times if you are working with android if you have already experienced working with a crash tablet or any android phone you probably have noticed that you have to use root axis you have to get root privileges to do adb or to get a debug info in eclipse id you should initially initialize eclipse with root permission or you should do something like adb shell first suru adb shell then you should run the eclipse id because adb with these kinds of devices let me take my akash tablet ok so this is my akash tablet which today we will start debugging with adb and other tools so let me connect usb cable to this now I am connecting to usb micro usb to akash tablet so you can see there is a information usb debugging connected just wait for it you can see this is a debug icon so it is clearly mentioned that usb debugging connected that means we are ready to go. So, coming back to our document setting udev rules for adb so what we will do is we will add these two lines which will tell linux to treat this device as a known device because unless you tell linux that this is a known hardware it will treat as it is an external device which has no registry for usb it will ask root permission to debug that device so we do not want root permission for every time so we will set this udev rules by just copy this this will open so I have already added these two lines in my udev file this file will not exist in your linux machine you have to create this file this command will create the file just paste these two entries there save them then execute this command this will start the restart the udev process daemon process so it says udev stop waiting start running so udev is up so now I can control l to clear the screen now if I do adb devices I do not need any root access even if you try using adb try using eclipse you do not require any root permissions so moving ahead that is all now getting connected using wifi and usb cable sometimes means there are situations when you need wifi debugging then usb debugging okay so what could happen is you probably you do not have multiple cables or your application require some usb enabled sorry wireless enabled debugging or you have wifi at your home you do not have sufficient LAN cables so you moved your laptop to somewhere else and you just started working using wifi so wifi debugging is also very handy tool so how to do that you have to just start this adb android debug bridge adb is a binary executable which allows a bridge between this host machine with the tablet so adb tcp555 will restart it in tcp mode so all I need to do is adb connect and ip address of android device so this will connect host machine your akash tablet or any android device on wifi so you do not need usb cable afterwards so you can now remove the usb cable when you do adb devices it will still show you the list of devices because it has been connected using wifi now I am not doing that step again here because I have to connect to wifi and enter password that will take time but it works that is it so as soon as you finish debugging using wifi you can just issue adb disconnect and ip address to disconnect from that session now coming straight to our topic which is what all options we have with adb so to know what all options you have with adb you can just simply say adb and it will print all possible command line options so this is a big list you can see everything is documented hyphen d directs command to only connected usb hyphen e directs command to only running emulator so I am not going through each and every command in this session we will take only important commands which are required for debugging control l to clear okay so if you see we are still in hello world project directory and we have our readme.rst file here so what I want to know do is with adb I want to push this file to my tablet to my akash tablet so how to do that clearing screen adb push so adb push is a command by which you can spend data from your host machine to your akash tablet or any android connected device the syntax is adb push local file remote file so the remote file will be the destination that will be akash tablet and local file is our readme.rst which is in present working directory itself control c to cancel this command so what I will do adb push readme.rst hitting tab will complete the text for me I know the I know that in destination that is in akash tablet there is a location known as slash mount slash hd card yes slash mount and slash hd card and you may ask me how do you know that I mean without knowing what is the file hierarchy of your android tablet how you can say that slash mount slash hd card because this is a default location true for all android tablets phones everywhere at least this location will be there okay to give you more concrete evidence what we will do we will do adb shell adb shell is a command by which you can log into your device logging into device without any password adb shell adb devices will tell me whether my device is still connected or not still connected adb shell I can execute my shell commands without getting inside my android device also so adb shell will drop me into android command line prompt okay without going to android command my command line prompt I can simply say execute a shell command known as LS LS is also a Linux command but this is also not working so I want to kill the server again I do not want to take any risk adb kill server so if I type adb shell it will again start the server in the back end then it will go into the shell so this is same as adb start server then adb shell so okay then let's hope this works this time yes thankfully it worked so when I did adb shell it dropped me into root at the right android so is it my machine how to know who am I but who am I will not work here because who am I binary is available in full fledged desktop version of Linux but it is not integral part of embedded Linux which is android but it clearly indicates that your root at the right android that means it is not your device it is your tablet which you have connected I can press control D to exit from here control so now who am I I am Shrikan now control L will clear my screen now I will execute my adb shell ls without going inside the android device because it's safe to play from outside you will know why so this list all the files present in root of the android but I don't want to list all the files root of the android I want to verify whether there is any hd card or not yes it is so these are the content of adb shell ls mnt hd card so this proves that there is an hd card present with this device okay control L to clear now I will push my readme.rht to slash mnt slash hd card this trailing slash is not required not mandatory unless it's a directory this will also work and this will also work so our file has been copied so it doesn't mean that it moves push you should not confuse with push it will just copy your file to slash mnt hd card how to verify whether that file is there or not adb shell ls adb shell means execute a shell command inside where android environment adb shell slash mnt slash hd card because it hd card contains lot of files so I directly want to know whether there is a readme.rht yes it is you want to confirm let me do readme.rs it says no such file or directly that means when you do adb shell readme.rht it says it is there path is correct file exist that means we have successfully pushed our first file to our android device so now you can think of many automated jobs you can write a script bash script simple bash script to copy entire say thousand files you have you have a some project which requires many files to be copied etc etc you can just write a simple bash script which will copy all the files to adb think of a same situation think of a same operation without the adb what you would have done you would have taken the hd card out then you have you will put that hd card in card reader copy everything manually then again push the hd card back or you will connect an external usb to this then you will copy using some tools so this adb gives you this much freedom so let's let's see how adb pull works pull means copying some files from your device to your local machine so one thing is for sure that we know there is a file readme.rht in slash mount hd card that we want to retrieve now so let me show you what is there in my slash temp because I will copy my readme.rht here so there is no readme.rht here now this is my temp location my system temp my laptop's temp this is not android you can see who am I this is recon so I will do adb pull mnt hd card readme.rht if I press enter it will copy the readme.rht to my present working directory but I want readme.rht to be copied where in my slash temp location now verify ls slash temp so here is your readme.rht file which has been copied from your device okay so let's let push a directory and see how it how it been done so there is a small you should pay little attention to copy or pull directories from your machine because android by default won't create any directories for you for example my pwd is this hello world let me create a directory here make directory say data okay cd data and with touch command I will create few random directories say 1 2 3 3 4 so these are 5 files which I have created in data directory so what the data what does data directory consist it consist of 5 files now I want to push this entire directory to my android device cd dot dot will bring me out of this directory pwd will print my path so now I am here control l clearing the screen ls so I have a data directory here my aim is to push this data directory to android adb push data slash mnt slash sd card if I do only this what will happen the content of data directory will get copied to sd card without being without the directory structure there will be no data directory there all the files will be copied as it is you want to see that's it so the visual representation it shows that data to file has been copied to mount sd card to similarly all this so it has keep the directory so let me show you whether how much it is true adb shell ls slash mount slash sd card 3 one of the file I have chosen so it says of course that file exist so does it have any data directory probably no fine I won't test it because I'm not sure because yesterday I might have created that data directly and I hope it's not there let's assume it's not there now adb push data to slash mount slash sd card data so this will create a data directory and copy the files there okay so let me name it as data one okay I want to be sure that okay there is no such data directory there so it will push the data directory contents and create a new directory name as data one and put all the files there done so how to verify yeah adb shell ls slash mount slash sd card and data one so it has created a data one directory and it copied all my files okay so this is how you should do push and pull similarly you can pull the content of data one also like we know so that I won't be repeating again so there is another important adb feature which is known as backup and restore so you can backup all your applications files possibly to some destination location and you can restore them whenever you require but I should tell you this this backup and restore doesn't work with akas for now I don't I don't know reasons but I will try to make it work if possible but if you connect a phone or any other android device you can simply say adb backup hyphen all hyphen all means you want to copy all the apk files hyphen f will tell you the which location you want to copy as soon as you hit enter you will get this kind of on a phone you will get application which will ask do you want to backup backup my data or do not backup so as we have initialized the process from command line what we have done we have written a command adb backup hyphen all hyphen f temp backup dot ab this ab extension is important otherwise the backup process won't start ab stands for android backup I guess it is not documented so I guess it is android backup anyway so as soon as you enter that command you will get this pop up on your device if you press backup my data it will start the backup process and your terminal will turn into similar to this so this is a screenshot of the backup which I did yesterday so it says now unlock your device and confirm your backup so this will initiate the backup operation it it may take more than 15 minutes depending upon number of applications you have and to restore again all you have to do is adb restore the backup location part and it will restore back all your application so this you can practice with your own android device this works perfectly well and this is important also if at all you don't have this command or adb etc you can download many applications from android marketplace which does the same thing which will backup your application and give you a jib file which you can copy from hdcard to your local machine now starting adb shell so as I already mentioned adb shell will drop you to android prompt let me clear the screen for you adb shell means I am asking adb binary to execute shell so that it should drop me inside the android terminal so the hash prompt suggests that you are a root you have root privileges to this device so as I told you it's safer to use adb shell and the command name from your host machine itself how to do that adb shell ls will list all the files control l to clear the screen similarly adb shell say cat I know there is a file name as init.rc I know that because when I did adb shell ls I found there is a file init.rc so I want to cat that file cat means I want to view the content of that file so basically I can execute all adb commands all adb shell commands which essentially you do from inside the terminal from your host machine itself the next command is adb lock cat fine so adb lock cat as the name suggests it will print the live logs to your terminal so without applying this flag let me show you adb lock cat as it is so this is a live log of my device so it says lock screen display window manager etc etc surface fringer so these are surface fringer is the main surface activity for android and window manager as you know it manages the windows lib egl it will it will list whatever activities going through in your android device real time control c to get back to terminal prompt control l to clear the screen so now I will use lock cat adb lock cat for some debug information I want I want to see what is the main aim of lock cat know what is going with your process suppose you wrote an application and that application has name suppose com dot akash dot lab or that application has name read me for example so you want to know what has what is the debug info with the read me okay so hyphen d will drop you to the terminal back means a command line flag and I will use linux pipe to pipe the output pipe means to send the output of this command without this pipe it will print all the lock cat and if it exists if I do pipe what it will have what will happen it will pipe the output of this previous command to the next command which I am going to type the next command I use grep so grep is a linux command line utility to search strings in files is very useful many people use grep awk etc so what I will search let me search surface we have seen surface fringer right so it will list out all the instances with surface fringer so you can see now I can find out I can narrow my output to only surface fringers so that I know okay so this surface fringer does it make any sense to my application so this depends upon the developer so if you are a developer you are looking for a particular string just depth the string in that lock cat and you will know the result so in my example previously I had used read me dot rst that can also so this is the output which I did yesterday coming to next package which is package manager like in linux we have synaptic package manager or sorry depth package manager for debian and open to for windows we have dot exe executables okay so package manager is application which manages the packages packages means applications in android environment what are applications apks so all the apks are packages in android environment so with pm command you can do bunch of things which are relevant to packages so we will see few important things so coming back to my terminal adb shell pm so what I am doing I am doing adb shell means I want adb to execute pm command inside the android environment adb shell list packages so this will list all the packages installed on this device you cannot do this thing with your graphical tool now I can write a script to install all the packages or selected packages or packages starting with character a so these things are only possible when you do with adb when you do with a command line interface when you are in a debug mode now now what I want to convey is just to make make you feel homely I will do adb shell now I will type the command this will also print the same okay so this proves that the previous command this one adb shell pm list is nothing but executing whatever command comes after shell shell word it it will execute that command in the adb inside the android environment let's uninstall a package and see what happens so let me list all the packages first so let me uninstall this package so this package says or dot fdroid.fdroid okay this is the package name the apk name can be anything maybe fdroid.apk but the package name is what you mentioned in your eclipse while setting your project so what I will do adb shell pm pm is package manager uninstall see if you go through that documentation of pm it's already documented online it will list you all the possible commands with pm so I remember uninstall is a one of the command so adb shell pm uninstall or dot fdroid this enter success now it has uninstalled my fdroid package how to verify whether it has uninstalled adb shell pm list packages so there is no fdroid now so this pm binary pm application which is package manager is very important while dealing with packages let's see one more use of pm command so with there is a flag with pm known as set install location most of the time what happens when you install an apk it get installed into your system memory or by default memory which has which is the internal memory so what happens many times you run out of the memory you have installed so many applications and the associated data it exceeds the limit then you what you do you install some apk like apps to hd or something like that to move your applications to hd card but those things are not required if you are if you can do using this adb shell you can tell your operating system that okay don't use my internal memory use my external memory how to do that so there is a flag known as set install location zero the default value is the zero which is auto means automatically when your internal gets full it switched to external but now I want to use external media only explicitly so you can just replace one with two so let's try that out let me clear the screen again adb shell pm set install location one is internal location two is external location enter done so how to verify whether my location preference has been changed or not there is a command for that adb shell pm get install location it returns external okay so by this you can change your location preference this is also very handy tool that's why I thought I should include it the next comes activity manager so activity manager as the name suggests it deals with the activities means every application has its own activities it displays something so those display you can configure or you can control using activity manager you can script it in your script that suppose you want to automate some gi application suppose my debug information requires that when I execute some command from my desktop it should pop up some application it should execute some application it should show some graphical result it should do back forth whatever so how to do that so there is a command known as am am start for activity manager so you will see a simple example everything is documented don't worry these are not anything which I found from some unique blog which I only know this is well documented in android website the links are given at the bottom of the page so now if you see so what starting android intent action view so I executed activity manager and asked activity manager to so on terminal I am executing the same command so this pop ups my activity what is the activity complete action using calendar call activity activity action it doesn't make any sense but this is a simple example to show that how we can control activity manager using your debug android debug bridge this is also very handy tool kill all so probably you have installed many application you don't know which application is behaving abruptly which is using more memory you want to test the complete memory information for your application only so it is a good practice to kill all the background applications which are running suppose I am a developer I decided to test my APK and I want to know how much RAM it takes how much RAM it use okay so I can only find out that by knowing that my application is only running not any other application not any any not any other background application so what I will do I will just kill all the background application with this command adb shell am stand for activity manager kill all the activities killed so now I can start my if at all I am doing some development I can start my APK and I can find out how much RAM it is using how much CPU it is using whatever debug info I am interested in the RAM and CPU info we will see just after this okay there is a command known as adb shell am display size 320 x 240 or whatever display size you want to do so there is a strict warning here with akash it switch back to the previous version previous display resolution but it goes back to the fallback mode okay why this is important let me tell you first suppose you created you are a developer you created an application and your application to be tested on different resolution of the different screen resolutions you have only one device which has 800 x 480 resolution for suppose you do not have a device with 320 x 240 screen resolution you do not have a device with 800 x 600 resolution but you know that it should work but you want to test them all you can do is you can just copy this adb shell am display size 320 x 240 this will scale your display to 320 x 240 pixels so when I execute this command though it is not recommended for you to execute my screen size become small it becomes 320 x 240 resolution so it says unfortunatly system UI has stopped and you can see this is my small screen so as a developer you might require this to test your application on a small screen device so many phones still come with 320 x 240 resolution so see this is the menu only six items per menu everything is scaled down isn't it fine now I try to get back my original resolution 800 x 480 this is my resolution now I hit enter it scale back it scale back to my original resolution but just because you have seen that error message that unfortunately UI has stopped that made operating system believe that that something terrible went with UI so it get back to a fall back mode okay so you don't find anything here you find everything on a top down menu it's a it's like a safe mode you can say so that's why I won't recommend you how to get back of this safe mode what you can do is you can just go to backup and reset factory data reset reset tablet erase everything so this will reset your tablet erase every application which you have installed it will not remove remove your sd card content but it will remove all the user applications which you have installed all system applications still will be there it will take around two minutes I have not done erase everything because we don't need that so we are comfortable with adb shell so now so far we have seen single command single commands which execute adb we haven't seen any scripts that's what the debug is good for you can you can debug you can do scripting you can do bulk job with a single hit of enter automatic task on android side I won't recommend you to do that unless you are an expert Linux user and you know what you are exactly doing so don't blame me afterwards I included this because you should know this and there is a straightaway warning you should do only if you are comfortable with this so let me skip this part so automatic task on host side host side means from my device from my laptop if time suggests we will get back to automatic automating task on android side also now I have I have killed all my applications I want to know the RAM usage how much RAM I am using so so this is a bash script simple bash script which which will print out the amount of free RAM available with every one second delay so let me copy this script for you let's do little fast now vi say ram.sh paste the content save and exit how to run that all you have to do is sh ram.sh what is sh? sh is the shell by default Linux uses bash bash born again shell we are not using bash because bash is not available in android in android only sh is available to just I cancelled it to just show you adb shell and ls will come to busybox busybox is a binary which we will discuss little bit later so which sh it says system bin sh and let me try control l so there is no bash inside the android so let's execute our shell command again so this prints the ram use uses you can see so this prints after each one second control c will cancel this process so this is the actual free memory available now with our device out of 512 mb ram of akash only 125 mb ram is free okay let's move to next line the same thing you can execute in a single line because it is not a big bash script you can just execute in a one line to support my statement so it says same thing while true do adb shell busybox free hyphen m free is a command which tells how much ram is free hyphen m means telling that print the values in megabytes hyphen k will print the values in kilobytes okay then sleep for one second and repeat until while true means you understand while true so this repeats the same so you need not to write a shell script again you can just do in line also okay using busybox what is busybox first of all so busybox provides you several stripped down unix tools in a single executable file which is basically less than one mb if you take the full version of all the binaries it will exceed up to 50 mb maybe but busybox collects only important binaries which are important for embedded Linux perspective and create a single binary known as busybox you can call all this other binders with that so just type busybox on terminal adb shell busybox this is same as executing busybox inside android environment so this prints this prints all the commands with that one mb file contains see ad group ad user cut many important commands which we have seen already ch mode cp kill all vi there is no other text editor available for embedded Linux environment so vi is a default editor which fits in kilobytes of size so there are various variants of vi the desktop variant is very huge it comes with 30 mb but the busybox variant comes with only kilobytes 100 kilobytes like that so how to access each command adb shell busybox you have to mention busybox then any of these command you want so just now we have seen free hyphen m okay let's execute this it prints you might you may ask me that without busybox also free might work okay let's try free hyphen m free is not available free is only available through busybox okay adb shell ls ls is available but ls is also available through busybox okay busybox is single statically compiled binary so what I will do adb shell ls hyphen l prints everything and adb shell busybox ls hyphen l it also prints everything but it gives me color info so busybox version of ls they have included the color info information also this is useful okay let's see two important commands very quickly adb shell busybox vi we know busybox vi is available we also know that there is a readme.rst file we have copied okay so open it you can see you can't do proper editing is it can you know I try to do down arrow I am pressing down arrow but it is not working well there so this is a limitation of executing android commands from your Linux terminal because there is a vi editor on my Linux also which has some configuration file which is getting which is getting used here so what I will do I will go adb shell you go inside the adb busybox vi slash mount slash hd card slash readme i for insert mode now I can navigate properly to edit any file probably if you do some big applications you might have to edit some shell script or some script inside your file to do so you can do just adb shell vi your file name you can edit them escape to go back to command mode wq to write and quit that's it see I am typing control l but control l is not supported with shell because android environment works with shell not with bash there is one more last command before we break for discussion let me get out of the busybox adb shell busybox top top is a very popular commonly used Linux process Linux command which prints cpu and memory users of top 10 applications so you can see busybox top is using most now system server using 1% cpu and 67% of memory is used by say this is a handy tool to debug your application suppose you have an apk you want to know how much RAM it is using or you want to debug someone else apk and you want to report and you are a tester you can do like this this is one of the way give you one two more important commands df will print the all partitions on your android system so you can see these many partitions are available how much space is available and how much total size you can easily find out from here the dev block nan d has this much out of this this is good for admin to know how much memory he is using suppose you have a data file of 500 MB you want to know where you want to copy it so this is an external SD card of 8 GB and this is my internal storage of 2 GB so out of 8 GB 5.9 GB is free so probably I will use this space for my application is a good tool to know and this is also important but you can easily practice that not a problem so this is a practical example which we use at IIT in I means logistic department we need to log all the MAC addresses of aakash tablets which we receive okay so it is practically impossible to go through the graphical way so by graphical way how you will find the MAC address you will enable the MAC here you will enable the Wi-Fi you will go to advanced settings you will copy the MAC address I am not showing that you can manually you have to copy each and every letter which which leads to chances for error and it takes time also so what we have done we used ADB there so ADB shell SVC Wi-Fi enable will enable the Wi-Fi without getting into graphical mode and this command will print my MAC address that simple unless you enable your Wi-Fi you cannot get the information from MAC MAC address so this I can easily redirect to a text file I can write a script whatever I wish so as my task is done I should disable the Wi-Fi done fine we have finished almost so there is a another tool last tool for today's this topic monitor so monitor is a graphical tool which list all the system process threads data available you can copy you can take screen shots most importantly because let us invoke monitor so it will start in a so this is a graphical tool let me make it full screen so you can see this is almost similar to my top it says how many what are applications are online I can see the heap users of particular application this is very good tool to debug your application etc etc I am interested in taking a screenshot here it is this small camera icon will allow you to take the capture the screen of that moment so suppose I will do refresh it will show my the present version and save will save the file on my local machine that's all here for Android debug a lot of thing you can do with scripting I guess you will try and let me know if at all any help is required you can contact me later now so if you have any questions please ask 1025 when I do I have two questions yes first question is suppose we have two collaborators a and b okay and collaborator a has created a file file a dot txv okay and now he has written in the file a bc the content of the file a is a bc and it is created by collaborator a now he pushed this file to the repository remote repository now the other collaborator b is pulling this file and reading the content as a bc now he is modifying the content with the cba and again push it back to the remote repository okay now once again the collaborator a is pulling back the file a dot txt now he found the content is cba yes so what about the content that is a bc which he has written before I mean means the content is overrided right so an IT war angle has a question that there is a user a and user b two collaborators a has created a file a bc and he has committed and pushed back to the server meanwhile b has opened that file again and he's changed the content to a bc to suppose c ab whatever then he pushed back to the server now again when a downloads or pulls up changes what will happen the changes of a so this is a very good question this is a conflict this is a conflict with a single file so ad get will not merge the file because a doesn't have doesn't or we can say a has a bc in his local in local repository and he doesn't have changes of b which is cba what will happen when you pulled it there will be a conflict merge conflict because on the same line both have them have modified okay so it will ask user to choose which version you want to choose so as an admin or as an collaborator a will decide whether cba is correct or the previous version a bc is correct he will modify it commit it and push back my second question sir yes my second question is an owner can add a collaborator right sir correct now a owner whenever he is adding a collaborator now the collaborator has a read and write access to the remote repository now if an owner wants that a collaborator can only have a read access to that repository then how should he provide there is no need of read access see if he's not a collaborator that's a read access anyone can clone a repository it's it's not required that he or she has to be collaborator only to get the clone of the repository suppose I am not the what I am trying to do suppose I take one project and I copy this URL I do get clone to this URL I am not the collaborator to this project okay someone else has created that by default gives me the read only access I can't do editing to that I can do editing but it will be local to my machine I don't have push access to repository what I can do is I can send a pull request to the developer telling that see I have cloned your repository and I made some significant changes which are I suppose relevant for community will you be ready to merge those request I will send the pull request so pull request will tell that okay someone has cloned your repository it who doesn't have write access to your repository but his changes may be relevant you do like to review those changes I will review those changes then I will merge thank you this is very good question 1 2 6 0 SKNC younger college of engineering ponderpur Maharashtra word my question is that sir can I do all the things on windows yes you can all you need to explore by yourself because just google the term how to do adb shell on windows you have to download windows version of adb and with the command plan prompt you can do on windows also even the git also you can download the windows version of git we are connected to Bansal college of engineering Bhopal please ask your question sir my question is that if a contributor make corrupt changes then how can we recognize it as a project admin when you pull back the changes from your contributor you will review it first you will see whether those changes are relevant to the project or not suppose in our case Akash contributor instead of hello world program he has would have been written a hello India program then I said an admin I will not accept the change I will revert back the change by git reset hyphen hyphen had to previous commit and I will push back the previous version and I will send a mail or I will put a comment that please follow the process that was a my question is what is splitting task and collaborator site mention that splitting task means I have means I assume that I I communicated with the collaborator and splitting split our task that I will write the read me and he will write the logic that is hello world dot c so that is what I mean by splitting task for collaborator it is need not to be true I may not know the collaborator also one to one to Kalyani government engineering college West Bengal I want to know when we start activity how to close the activity when we returning from that activity we returning from the activity it uses the resources we want to stop that using our resources anymore so you can execute all command which we have mentioned adb shell pm am kill all that will kill all the resources when you get back from any activity and to get back from activity itself you can use your tablet and hit the back arrow to remove get back from the activity or there can be an equivalent command which will kill the activity you need to explore that there are many such coming using the back button of android it is not fully stop that activity correct you you can use that kill all command which we have seen am kill all that will kill all the activities or you can search for an equivalent command which I do not know exactly there are many such commands so it is difficult to know all the commands unless you actually need them so as you need that kind of command right now so you can explore and tell in the moodle for everyone else thank you.