The package manager always re-writes the file after reading it for the first time, since it does a full scan of all packages at that point and may have updated some of its state.
2009/5/7 倪旭东 <[email protected]> > Hi, > There's something interesting of the /data/system/packages.xml, I find > that its last modified time is always the time of the phone power on. It > means that everytime I trun on my phone and the packages.xml file will be > created, so how the system to get all the information of packages to create > the packages.xml file? > Thanks. > > regards, > xudong > > > 2009/5/7 Dianne Hackborn <[email protected]> > > PackageManagerService implements IPackageManager; the activity manager and >> package manager run in the same process, so ths ends up being a direct >> function call. The package manager keeps track of which permissions have >> been assigned and does the check. >> >> 2009/5/7 倪旭东 <[email protected]> >> >> Hi, >>> After reading the PackageManagerService.java and >>> ActivityManagerService.java, I had a question; >>> In the ActivityManagerService.java, in the* >>> checkComponentPermission()*method, >>> it calls the >>> *ActivityThread.getPackageManager().checkUidPermission(permission,uid)*, >>> However, the ActivityThread.getPackageManager() is a IPackmanager >>> Interface, and I cannot understand its *checkPermission method or >>> checkUidPermission method*, does it finish checking by communicating >>> with PackageManagerService via IPC? Since I didn't find some detail >>> implementation of checking permission method.Or it may relay parameters to >>> the PackageManagerService to do the job and get result? In such case, the >>> packages.xml files has effect on checking permission procedure. Is my >>> understanding correct? >>> Thanks. >>> >>> >>> regards, >>> Xudong >>> >>> 2009/5/6 Dianne Hackborn <[email protected]> >>> >>> packages.xml is the package manager's persistent state. Only the package >>>> manager should write it, and you are likely to break the system if you >>>> modify it yourself (or have your changes wiped away the next time the >>>> package manager writes it). If you want to know more about it, you can >>>> look >>>> at PackageManagerService.java. >>>> >>>> 2009/5/6 倪旭东 <[email protected]> >>>> >>>> Hi, >>>>> Still some questions: >>>>> 1. Does packages.xml (in /data/system ) has real effect in the check >>>>> procedure of "reference monitor"? I do some experiment on the emulator: >>>>> Modify some App's permissions' profile, it does not have effect of >>>>> app's execute. It is the problem of emulator or the acctual effect file is >>>>> not this one. >>>>> >>>>> 2. In the packages.xml file, the user-developed app's permissions are >>>>> list in every packages, >>>>> but for the system bulid-in app, such as phone, it does not provide the >>>>> related permissions, >>>>> How the system to determine its permissions. >>>>> >>>>> 3. Form the packmanager() we can get some information about >>>>> permissions, what is relationship between packages.xml. It reads it from >>>>> this file? >>>>> >>>>> Thanks. >>>>> >>>>> regards, >>>>> xudong >>>>> >>>>> >>>>> >>>>> 2009/5/5 William Enck <[email protected]> >>>>> >>>>>> Xudong, >>>>>> >>>>>> On May 5, 2009, at 12:59 PM, 倪旭东 wrote: >>>>>> >>>>>> Thank you. I still have some questions: >>>>>> 1. After the installation, the app's related permissions files is >>>>>> saved in the same .apk file or saved in a system central file? >>>>>> >>>>>> >>>>>> Take a look at /data/system/packages.xml >>>>>> >>>>>> 2. At runtime, I learned that there is a "reference monitor" from the >>>>>> paper Understanding Android >>>>>> Security<http://ieeexplore.ieee.org/xpls/abs_all.jsp?isnumber=4768640&arnumber=4768655>to >>>>>> check the permission lable. Which is the source code for this >>>>>> "reference >>>>>> monitor", or it's a vitual concept. I wonder to know which parts of >>>>>> source >>>>>> code dealing with this function. Thanks. >>>>>> >>>>>> >>>>>> We described it more as a "virtual concept". There isn't code >>>>>> directly corresponding to a reference monitor, but the Activity Manager >>>>>> (frameworks/base/services/java/com/android/server/am/ActivityManagerService.java) >>>>>> is >>>>>> a good place to start looking. >>>>>> >>>>>> -Will >>>>>> >>>>>> -- >>>>>> William Enck >>>>>> PhD Candidate >>>>>> Department of Computer Science and Engineering >>>>>> The Pennsylvania State University >>>>>> [email protected] >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Dianne Hackborn >>>> Android framework engineer >>>> [email protected] >>>> >>>> Note: please don't send private questions to me, as I don't have time to >>>> provide private support, and so won't reply to such e-mails. All such >>>> questions should be posted on public forums, where I and others can see and >>>> answer them. >>>> >>>> >>> >> >> >> -- >> Dianne Hackborn >> Android framework engineer >> [email protected] >> >> Note: please don't send private questions to me, as I don't have time to >> provide private support, and so won't reply to such e-mails. All such >> questions should be posted on public forums, where I and others can see and >> answer them. >> >> > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them.
