[MOD][4.1.2 or 4.2.1][GPL] OpenPDroid [v1.0, 2013-01-14]

Search This thread

Px80

Senior Member
Feb 19, 2012
654
106
Is this a standalone APP or must it be used with pdroid 2.0?

I like the idea of an opensource security APP! Keep going



Sent from my Desire S using xda app-developers app
 

Mika83AC

Senior Member
Apr 5, 2012
715
304
Is this a standalone APP or must it be used with pdroid 2.0?

I like the idea of an opensource security APP! Keep going



Sent from my Desire S using xda app-developers app

It is stand alone. Both apps do nearly the same job.

So in my opinnion, they should be merged to one big, powerful project :angel:
 

nsmart

Senior Member
Sep 3, 2011
490
220
First of all, thank you guys for all your efforts to bring pdroid to our devices.
Since I changed my device to Nexus 4 one month ago I am running cm10.1 and I works very good and fast. But I was missing pdroid functionality and so your openpdroid-implementation was a great announcement and I just gave it a try. I patched cm-10.1-20130111-NIGHTLY-mako.zip with auto_patcher v2.50 without errors.

EDIT: some corrections
I installed openpdroid-patch (without installing Manager-app). After reboot I started the app "GPS Status" from play store -> compass rotation very slow, unable to acquire gps location, phone becomes slow.
 
Last edited:

M66B

Recognized Developer
Aug 1, 2010
26,751
57,998
This is the way I have integrated PDroid manager into the CM10 build process:

~/android/system/vendor/cm:
Code:
diff --git a/config/common.mk b/config/common.mk
index 56cd33d..6892f44 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -102,6 +102,10 @@ PRODUCT_COPY_FILES +=  \
     vendor/cm/proprietary/Term.apk:system/app/Term.apk \
     vendor/cm/proprietary/lib/armeabi/libjackpal-androidterm4.so:system/lib/libjackpal-androidterm4.so
 
+# PDroid manager
+PRODUCT_COPY_FILES +=  \
+    vendor/cm/proprietary/pdroidalternative.apk:system/app/pdroidalternative.apk
+
 # Bring in camera effects
 PRODUCT_COPY_FILES +=  \
     vendor/cm/prebuilt/common/media/LMprec_508.emd:system/media/LMprec_508.emd \
diff --git a/get-prebuilts b/get-prebuilts
index 1d2b6df..4125ce3 100755
--- a/get-prebuilts
+++ b/get-prebuilts
@@ -7,3 +7,4 @@ mkdir -p $BASEDIR/proprietary
 curl -L -o $BASEDIR/proprietary/Term.apk -O -L http://jackpal.github.com/Android-Terminal-Emulator/downloads/Term.apk
 unzip -o -d $BASEDIR/proprietary $BASEDIR/proprietary/Term.apk lib/*
 
+curl -L -o $BASEDIR/proprietary/pdroidalternative.apk -O -L https://github.com/wsot/pdroid_manager_build/blob/master/PDroid_Manager_latest.apk?raw=true

Shouldn't

Code:
out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates

be

Code:
out/target/common/obj/APPS/TelephonyProvider_intermediates

for CM10?

The patch to fix video recording still fits, so for your convenience:

Code:
--- frameworks/base/media/java/android/media/MediaRecorder.java	2012-12-08 13:10:55.000000000 +0100
+++ frameworks/base/media/java/android/media/MediaRecorder.java	2012-12-08 13:11:19.000000000 +0100
@@ -1128,6 +1128,7 @@ public class MediaRecorder
 				pSetMan.notification(packageName[0], 0, PrivacySettings.REAL, PrivacySettings.DATA_CAMERA, null, null);
 			else if(packageName != null && packageName.length > 0)
 				pSetMan.notification(packageName[0], 0, PrivacySettings.REAL, PrivacySettings.DATA_RECORD_AUDIO, null, null);
+			deletedFile = true;
 		}
 
         if (mPath != null) {

I am building right now on my cheap, slow PC.
I will let you know if everything works later this evening.
 
  • Like
Reactions: jb789

mateorod

Inactive Recognized Developer
Nov 16, 2011
1,981
3,503
New Orleans
www.gigmasters.com
I've compiled successful OpenPDroid and booted up fine. So far so good.

I'm letting my users of CM10.1 i9300 Unofficial BUILD to try your wonderful work.

This is my changelog for my CM10.1 Unofficial build V34 for i9300
http://xdaforums.com/showpost.php?p=36697391&postcount=6919

Again, thanks for your good work. :)

Hey, cool! There is a temasek build for my device (tilapia) and that is pretty much what people are using from what I can tell. Temasek was there waaay back when pastime1971 and I first started working on porting this thing...
 

M66B

Recognized Developer
Aug 1, 2010
26,751
57,998
Does it matter how the integrated apk is called?
I have now for example

Code:
/system/app/pdroidalternative.apk

I guess the matching will be on signature, but maybe I am wrong.
 

M66B

Recognized Developer
Aug 1, 2010
26,751
57,998
I have built a ROM from source, using the provided patches, including PDroid manager as outlined earlier and everything seems to work okay.

I have tested with only PDroid manager in the ROM and also flashing a ROM containing PDroid manager while PDroid manager was already installed as user app and both were okay.

It seems that the settings get lost when you uninstall the app (which I did to test with PDroid manager only in the ROM).

I guess it will go wrong when installing a ROM containing PDroid manager, while the PDroid 2.0 app is installed.

One little request: after saving app settings in PDroid manager, the list moves to the start.
Could this be changed in such a way that for example the visible list head is the just saved app?
 

FFU5y

Senior Member
Feb 3, 2011
173
423
It seems that the settings get lost when you uninstall the app (which I did to test with PDroid manager only in the ROM).
The settings should be retained unless the /data/system/privacy.db (and a few other related files) is modified: once the app in reinstalled and refreshed the previous settings should be retrieved. If a new ROM is installed, that file will be removed if the user data is wiped (I believe - I've never specifically check) and that would lead to losing all the settings.
There is a 'backup' feature in Pdroid Manager so all the settings can be backed up, and then restored.
If I've misunderstood, let me know.

I guess it will go wrong when installing a ROM containing PDroid manager, while the PDroid 2.0 app is installed.
In that case, PDroid Manager should provide the user with a message letting them know that they shouldn't both be installed (that is, if it can't get the necessary permissions because both are installed.

One little request: after saving app settings in PDroid manager, the list moves to the start.
Could this be changed in such a way that for example the visible list head is the just saved app?
You're not the first to ask for this, and I've actually done a little bit of work trying to get it happening but haven't gotten there yet. I'll be doing some more work on it soon.
Edit: I thought this has already been lodged as an issue against PDroid Manager, but it hadn't. Sorry about that. Anyway, for reference the issue # for the 'jumping to the top of the list is' https://github.com/wsot/pdroid-manager/issues/37
 
Last edited:

FFU5y

Senior Member
Feb 3, 2011
173
423
Does it matter how the integrated apk is called?
I have now for example

Code:
/system/app/pdroidalternative.apk

I guess the matching will be on signature, but maybe I am wrong.

I've never actually integrated an app into a ROM, but my understanding is that the filename is not important.
 

FFU5y

Senior Member
Feb 3, 2011
173
423
This is the way I have integrated PDroid manager into the CM10 build process:
...
Thanks for posting that - hopefully others can use it too.

Shouldn't
Code:
out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates
be
Code:
out/target/common/obj/APPS/TelephonyProvider_intermediates
for CM10?
Yes, for any 4.1.2-based ROMs you are absolutely correct.
 

M66B

Recognized Developer
Aug 1, 2010
26,751
57,998
The settings should be retained unless the /data/system/privacy.db (and a few other related files) is modified: once the app in reinstalled and refreshed the previous settings should be retrieved. If a new ROM is installed, that file will be removed if the user data is wiped (I believe - I've never specifically check) and that would lead to losing all the settings.
What I did was this: I deleted the PDroid Manager installed from the market using the standard Android app manager, flashed the ROM with PDroid Manager. After that the app from the ROM worked, but the settings from the app from the market were gone.

I've never actually integrated an app into a ROM, but my understanding is that the filename is not important.
It appears that you are right, because the app in the ROM was named a little bit differently than the one from the market.
(market: /data/app/net.digitalfeed.pdroidalternative-1.apk; ROM: /system/app/pdroidalternative.apk)
 
Last edited:
  • Like
Reactions: FFU5y

FFU5y

Senior Member
Feb 3, 2011
173
423
Is this a standalone APP or must it be used with pdroid 2.0?
I like the idea of an opensource security APP! Keep going
Sent from my Desire S using xda app-developers app
It is stand alone. Both apps do nearly the same job.
As Mika83AC said, it is stand-alone: basically OpenPDroid and PDroid 2.0 are alternative versions of the underlying PDroid framework.
So in my opinnion, they should be merged to one big, powerful project :angel:
I can understand why you think this, and it is possible that in the longer run this may happen (but I wouldn't hold my breath).
I'll just very briefly explain why:
  • Right now there is no clear way of submitting code (or even issues, in any structured way) to PDroid 2.0, whereas in OpenPDroid you can fork on github and then add a push request. You can lodge issues in github along with details, and that allows feedback to be provided. If people post suggestions in here, then we can add them to github as 'enhancements', they can be discussed there, and those discussions can be entirely visible to users. The basic idea is that the whole process is 'open' and visible - and open to further discussion.
  • The development life-cycle for PDroid 2.0 is that CollegeDev does a bunch of development, then releases a monolithic patch with all those changes and without anyone seeing the code before. This pattern means that code review is not possible before release, that compatibility changes can not be made in other apps (e.g. PDroid Manager, and any other pdroid-interfacing apps that may appear) prior to release, so compatibility will inevitably be broken at time of release.
  • There are aspects of the direction of PDroid 2.0 which are not consistent with what we have in mind for OpenPDroid. For example, the current PDroid 2.0 App suggests that 'task killing' will be integrated into the framework changes for PDroid 2.0. Currently (acknowledging we have not seen the framework code changes), we have no desire to include this functionality in OpenPDroid. There are very good task killer apps out there, and it doesn't really fit in the purview of a privacy management mod. Similarly, there has been discussion of incorporating encryption/authentication of manager apps, and of the data. This may seem like a good idea, and may even be a good idea - but it may have side-effects which outweigh the benefits, and without having an alternative like OpenPDroid no-one has any option but to accept it.
Because both OpenPDroid and PDroid 2.0 are GPL v3 (as a result of being derived from PDroid, which is GPL v3 licensed) good ideas and code can move between them. I like to think of it like CyanogenMod and AOKP - there is a lot of cross-over but some differences; good ideas and code can be ported from one to the other, and the variants suit different people's needs.

First of all, thank you guys for all your efforts to bring pdroid to our devices.
Since I changed my device to Nexus 4 one month ago I am running cm10.1 and I works very good and fast. But I was missing pdroid functionality and so your openpdroid-implementation was a great announcement and I just gave it a try. I patched cm-10.1-20130111-NIGHTLY-mako.zip with auto_patcher v2.50 without errors. After reboot I installed PDroid Manager ALPHA [2013-01-12 v0.2.9.8] and my phone became highly unresponsive. It became so slow, it took me 2 minutes to initiate a reboot. After second reboot still unresposive. By now I restored my nandroid backup, so my device ist fine again. Anyone else with this issue ?

EDIT: second test: I installed openpdroid-patch (without installing Manager-app). After reboot I started the app "GPS Status" from play store -> compass rotation very slow, unable to acquire gps location, phone becomes slow.
Hi nsmart: thanks for the feedback. I'm not sure why your phone would become so unresponsive, but if you could post a logcat that would be helpful. That way, we can see what is going on under the covers.
If anyone else is trying this same ROM, it would be really helpful to hear if they are having the same problems.
Mateor may also have some more insight into this.

ToALL
If I have hybrid ROM (CM10+AOKP) what patch should i use ?
I'll leave this one to mateor.
 

FFU5y

Senior Member
Feb 3, 2011
173
423
What I did was this: I deleted the PDroid Manager installed from the market using the standard Android app manager, flashed the ROM with PDroid Manager. After that the app from the ROM worked, but the settings from the app from the market were gone.
Ok. Well, the safest thing a user can do at this stage is to use the backup and restore features from PDroid Manager to take a backup of their settings prior to flashing.
I'll have a look to try to work out why the settings would be toasted, but it will probably take a couple of days (lots going on)

Thanks for letting us know. Clear feedback is great.
 

mateorod

Inactive Recognized Developer
Nov 16, 2011
1,981
3,503
New Orleans
www.gigmasters.com
ToALL
If I have hybrid ROM (CM10+AOKP) what patch should i use ?

The answer...frustrating as it may seem...is always going to have to be try and see. If you get an update.zip, then it worked with no worries. If not, try the other ROM type. I know that may seem vague, but I try to make running the program as painless as possible. All ROM devs do and add things differently. I know less about it than you do.

Good luck, I do known that people have been able to patch these combo Roms, so it is possible.
 

temasek

Senior Member
Feb 2, 2010
23,624
85,271
Singapore
Feedback

Device: i9300 / Nexus 7 Tilapia / LG Optimus 2x (p990)
ROM: CM10.1 Unofficial Build
OpenPDroid: 1.51


1. Triggering power widget on notification drawer causes slight freeze, eg turning on/off WIFI.

2. Installing apps via Play Store causes lag/freeze. At times Play Store frozen, prompted to kill it.

Easily reproduced by all my 3 devices as stated above.

As I'm providing builds for mass users, I've to temporary revert it as the above issues isn't acceptable to many users. Overall I find it very useful feature you provided. I was using PDroid port by pastime1971 during my times in CM7 and was a wonderful experience.

I hope in very near future I shall use this nice piece of work again.

Regards,
temasek
 
Last edited:
  • Like
Reactions: FFU5y

FFU5y

Senior Member
Feb 3, 2011
173
423
Feedback

Device: i9300 / Nexus 7 Tilapia / LG Optimus 2x (p990)
ROM: CM10.1 Unofficial Build
OpenPDroid: 1.51


1. Triggering power widget on notification drawer causes slight freeze, eg turning on/off WIFI.

2. Installing apps via Play Store causes lag/freeze. At times Play Store frozen, prompted to kill it.

Easily reproduced by all my 3 devices as stated above.

As I'm providing builds for mass users, I've to temporary revert it as the above issues isn't acceptable to many users. Overall I find it very useful feature you provided. I was using PDroid port by pastime1971 during my times in CM7 and was a wonderful experience.

I hope in very near future I shall use this nice piece of work again.

Regards,
temasek

That's really useful feedback, thanks! Unfortunately I don't have any of those devices (got a Nexus 7 grouper, but it is probably too different) but I think one of the team does. If you have a build of the ROM you used and noticed the problem on and could post it, that would be great - then we may be able to run up exactly what you were using and check it out.
 

mateorod

Inactive Recognized Developer
Nov 16, 2011
1,981
3,503
New Orleans
www.gigmasters.com
That's really useful feedback, thanks! Unfortunately I don't have any of those devices (got a Nexus 7 grouper, but it is probably too different) but I think one of the team does. If you have a build of the ROM you used and noticed the problem on and could post it, that would be great - then we may be able to run up exactly what you were using and check it out.

I have experienced the problem with Google Play, but I have been flashing so much I chalked it up to my Internet. I can probably reproduce it and get a log.
 
  • Like
Reactions: FFU5y

MindCrawler

Member
May 31, 2007
7
0
Vienna
Hi

First of all let me thank you for the work on OpenPDroid

But now to my problem

i'm using CM10.1 on a Galaxy Nexus (maguro) and i'm experiencing two problems with the camera.

The first one is, that the camera is lagging pretty bad since OPD, and the second is that the camera isn't listed in the "PDroid Manager" app list
 

FFU5y

Senior Member
Feb 3, 2011
173
423
Hi

First of all let me thank you for the work on OpenPDroid

But now to my problem

i'm using CM10.1 on a Galaxy Nexus (maguro) and i'm experiencing two problems with the camera.

The first one is, that the camera is lagging pretty bad since OPD, and the second is that the camera isn't listed in the "PDroid Manager" app list

Ok, first the PDroid Manager issue: the 'Camera' app is actually part of the 'Gallery' app, so the settings are dictated by the 'Gallery' app. That is weird, I know, and I'm trying to work out a way to have both items appear (but point to the same thing). I've lodged this as issue #39 in github for PDroid Manager.
About the lag:
A quick question - were you previously using PDroid 2.0, and if so has there been any change in the transition to OpenPDroid?
A quick explanation: when you have the camera running, OpenPDroid (and PDroid 2.0) is continually re-checking the permissions from the Privacy service. This is unfortunately very slow, and I believe responsible for the lag you are seeing. I am in the process of doing some work to try to optimise this.

Edit: I've added an issues to github for this, so you can keep track of it: https://github.com/wsot/openpdroid_support/issues/3
 
Last edited:
  • Like
Reactions: avalakvista

Top Liked Posts

  • There are no posts matching your filters.
  • 113
    What is OpenPDroid?
    OpenPDroid is a set of modifications to the Android framework and libraries which allows fine-tuning of the data which applications are able to retrieve about your device, your account, your messages, and more. Specifically, it is a Privacy service provider (using the PDroid 1.51 interface) forked from CollegeDev's PDroid 2.0, which is itself an extension of Syvat's PDroid.

    A word to the wise
    I'm just adding this for those who are just looking at OpenPDroid, or are trying to work out how to get involved.
    Mateor, wbedard and I are currently in the process of moving repositories etc to a github 'organisation' in order to make it much easier for users to know which are the latest patches, where to report issues, etc. I expect this will be done soon (in the next day or so), and I'll post more information then.
    Thanks for your suggestions on ways of managing repositories, patches, etc.


    What does it do?
    When configured using either FFU5y's PDroid Manager or CollegeDev's PDroid 2.0 App (up to v1.52), OpenPDroid intervenes in API interactions by apps (e.g. when an app attempts to retrieve your location, phone number, or contacts) and provides either real data, empty data, fake data, or random data, depending on the user setting. Unlike apps which actually remove permissions, OpenPDroid does not actually modify the permissions that an app has and so is much less likely to cause the app to crash as a result of data access being denied.
    Note that CollegeDev's PDroid 2.0 App does not officially support OpenPDroid, so please don't contact CollegeDev for support if you're having problems with PDroid 2.0 App with OpenPDroid. You can post here, and we may be able to help you.
    PDroid Manager does officially support OpenPDroid.
    The complete list of data and functions controlled by OpenPDroid can be found at the end of this post, in What (specifically) can I control with OpenPDroid?, but at present it is identical to that offered by PDroid 2.0
    For a list of issues which have been identified, please see below the Known Issues.

    What makes OpenPDroid different to CollegeDev's PDroid 2.0 or Syvat's PDroid
    There are a few differentiators, some technical, and some are philosophical or pragmatic. Both are important
    Technical
    • Two major security issues are fixed, which allow apps to bypass many or all PDroid or PDroid 2.0 settings. (We are in the process of notifying CollegeDev of these issues, and sample code will not be released for at least a week to give him a chance to fix the problems in PDroid 2.0. Fixes have been added to PDroid in auto-patcher, so if you are using PDroid please consider re-patching your ROM).
    • It is available for Android 4.2.1
    • Database access threading has been rewritten, as the implementation actually caused bottlenecks and didn't protect from simultaneous read-writes (which is generally the goal of this type of code)
    • A bug which was causing 'null pointer exceptions' to occur (but not a crash) is fixed.
    • Other code tidy-up or restructuring which doesn't change functionality
    Non-technical
    • The intention of OpenPDroid is to have a PDroid version which is developed in the open, and which welcomes (although doesn't necessarily always adopt) user input - especially code. This means that the source for OpenPDroid versions in progress is on a public repository (Github at the moment), that changes are put into the Github as they are made, and that other people can contribute code to it. We also hope that by having engaging people more in the development process, there will be more eyes trying to understand the code, and so security-related issues will be identified and address more efficiently.
    • We also want to make the discussion/decision making processes for what is in and what is out transparent, so that users can understand why some things are included and others are not, and actually influence the decision-making process.

    How do I install it?
    There are two 'supported' ways to install OpenPDroid:
    • mateor's auto-patcher (available for OS X, Linux and Windows) is the recommended way if you are not familiar with building from source, and have a supported ROM (CM10, CM10.1, AOKP Jellybean 4.1.2, AOKP Jellybean 4.2.1, AOSP 4.1.2, and AOSP 4.2.1).
    • Patch and build a ROM from source (see How do I compile a ROM with OpenPDroid). Patches are provided for: CM10, CM10.1, AOKP jb, AOKP jb-mr1, AOSP 4.1.2, AOSP 4.2.1
    If you are using a stock ROM, then someone may have implemented OpenPDroid into that ROM - and if they have, they deserve huge credit because it is a difficult and unpleasant job.
    Currently we are not aware of any ROMs which include OpenPDroid: if you are aware of one, please notify us and we'll list it here.
    There are several reasons your preferred ROM may not currently be supported. First, adding support for a ROM in auto-patcher requires building the ROM with the OpenPDroid patches. We are only able to do this if the source is available for the ROM. (Note: strictly speaking, it is possible to build patches for ROMs where source is not available, as for stock ROMs. However, for non-stock ROMs the rate of change makes this fairly unmaintainable).
    Second, there are a great many ROMs out there and it is not possible for us to build for all these ROMs. However, if you are able to patch source and build, then you may be able to build a version of your preferred ROM with OpenPDroid support - and even better, contribute patches for your preferred ROM to auto-patcher. For more details about contributing patches to auto-patcher, please contact Mateor.

    How do I get the source?
    The source is available as patches, or in complete form, from the OpenPDroid repositories
    • The source-code patches from the OpenPDroidPatches repository: . Note that there are two branches: 4.2.1 and 4.1.2. These source patches presently work against numerous roms (including CM 10/10.1, AOKP 4.1.2/4.2.1, AOSP 4.1.2/4.2.1, and potentially others)
      [*] Complete repositories for the modified sections of the system are likewise located in the [URL=https://github.com/OpenPDroid/]OpenPDroid github
      . There are several repositories and branches; see the section 'What are all these repos and branches?' for more details about the content of the github.

      What is the licence?
      PDroid was under under the GPL v3 licence (as shown on the Google Code page), and as a result all derivative works (e.g. OpenPDroid) are likewise under the GPL v3 (or later) licence. Thus, OpenPDroid is under the GPL v3 licence, with no additional special conditions. The only way a PDroid derivative can be under any other licence is if the author contacts Syvat, gets him to agree provide PDroid under another licence, and then the author extends it.

      Who's work is it?
      PDroid was original developed by Syvat (with contributions and ports from others such as Pastime1971 and Mateor), and then CollegeDev extended it to created PDroid 2.0 (previously called PDroid Addon, then PDroid Extension). PDroid 2.0 has been forked by FFU5y, Mateor and wbedard to create OpenPDroid. Thus, OpenPDroid is the product of the work of many.
      The following list includes all the contributors I know of for any of these version of the core (in alphabetical order):
      • CollegeDev (PDroid 2.0)
      • FFU5y (OpenPDroid)
      • Mateor (Porting PDroid to 4.x, porting PDroid 2.0 to 4.1.2, OpenPDroid)
      • Pastime1971 (Porting PDroid to 4.x, porting PDroid 2.0 to 4.1.2)
      • Syvat (PDroid)
      • Wbedard (OpenPDroid)

      How do I report issues?
      The best way to report an issue is to lodge it in github, although you may want to also post in this thread to let others know that the issue exists (and has been lodged). Please ensure you provide details of the issue you are experiencing (i.e. under what circumstances does it happen, what do you observe, etc) and please include a logcat: see how to get a logcat.
      If you don't have a Github account, you can post the issue here (and note that you haven't lodged it in Github) so one of the team can add the issue to Github.

      I want to contribute
      Great! The whole point of OpenPDroid is to encourage community contribution in the form of ideas, testing, code, etc.
      Presently, there isn't really a lot (read: any) documentation about how OpenPDroid works. However, this will be forthcoming, as will an API specification for the Privacy service, which will allow you to write your own management application (like PDroid Manager or the PDroid 2.0 App) if you so desire.
      Right now, these are the particular areas of the service which would benefit from developer/code contributions.
      • Transient caching of privacy settings read from the database, ideally with destruction of cache entries when they are too old or memory conditions are low
      • Refining the locking code to ensure that reads are not unduly held up by write locks (note: this isn't a problem *yet*, but will be with the inclusion of batch support. More details soon).
      • Other performance optimisations
      • Adding good quality code comments - mainly function descriptions, etc
      • Back-porting of OpenPDroid to pre-4.1.2, so users currently only able to use PDroid can move to OpenPDroid and get the new features.
      There are many other things you can work on, including adding whole new options (i.e. security features). If you are planning on creating new security features, however, please lodge the enhancement in github first so it can be discussed. Not every feature which seems like a good idea will be a good fit for OpenPDroid, and it may save some time if a prospective feature can be refined before it is fully coded.

      How do I compile a ROM with OpenPDroid
      To build a ROM with OpenPDroid, you will need to patch the source code using the provided patches, and then build as you normally would.
      To patch the source:
      • Download the most relevant of the source code patch packages attached to this post
      • Extract the patch files from the package
      • On the command line, go to the root of your Android source code: it will contain folders such as 'build', 'frameworks', 'vendor', etc.
      • Patch the source code with each patch file using the following command
        Code:
        patch -p1 < <patch_filename>
      You can then build your ROM as you would normally.
      If you have previously built the ROM in the folder you are using, or you have previously built PDroid 2.0, Syvat's original PDroid, etc it can be helpful to delete the following directories:
      • out/target/common/obj/JAVA_LIBRARIES/framework_intermediates
      • out/target/common/obj/JAVA_LIBRARIES/framework2_intermediates
      • out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates
      Not all of these directories will exist for all ROMs, so if you try to delete one and it is missing that is not cause for concern.

      What (specifically) can I control with OpenPDroid?
      Currently, access to the following data and functions can be controlled (note this list exactly matches PDroid 2.0):
      Code:
      [b]Data access:[/b]
      Device ID (IMEI/MEID/ESN)
      Phone/voicemail number
      Sim Card Serial (ICCID)
      Subscriber ID (IMSI)
      Source number of incoming calls
      Destination number of outgoing calls
      Network location
      GPS location
      Authentication credentials
      List of accounts, including identifiers (e.g. gmail e-mail address)
      Contact list and details
      Call log
      Calendar
      Read and send SMS
      Read and send MMS
      Record audio (not phone calls)
      Camera
      Browser bookmarks and history
      System logs
      Wifi Info, such as current access point, IP address
      Network information (detailed network information such as connection state, IP address, etc)
      Android ID (a unique installation ID for your Android installation)
      SIM information (your phone operator and country)
      Restrict access to iptables command
      ICC Access (reading or writing SMS on the SIM or R-UIM)
      
      [b]Actions:[/b]
      Make phone calls
      Start on Boot (or more accurately, get notified when the boot is complete)
      Switch Wifi State (turn wifi on and off, change access points)
      Switch network state (turn off or on mobile data)
      
      [b]Other[/b]
      Force online state (always tell the app that the device is online: only needed if denying Wifi info and/or Network info)

      Known Issues
      Thanks to those users who have posted bug details, we now have a list of known issues. I have tried to indicate which will be fixed in the next release, but it is tentative. These issues can also be found (and discussed) on the github issues list
      What are all these repos and branches?
      In the github account containing the OpenPDroid repositories, there are numerous repositories. Many of these are OpenPdroid related: but not quite all of them. In addition, not all of them are relevant to each ROM.
      The main repositories to be aware of are:
      platform_frameworks_base
      This contains the framework/base/* code, which constitutes the most important guts of OpenPDroid in 4.1.2 and 4.2.1. Other projects sometimes use the name android_frameworks_base for this.
      platform_frameworks_opt_telephony
      This contains the framework/opt/telephony code, which was split out from framework/base/* in 4.2.1.
      platform_build
      This contains the build code, mostly makefiles, and is present in 4.1.2 and 4.2.1.
      platform_libcore
      This contains core operational code outside of the framework (e.g. executing shell tasks, etc).
      platform_packages_apps_mms
      This contains the code for the Mms app, for 4.1.2 and 4.2.1.
      platform_packages_apps_mms
      This contains the code for the Mms app, which is modified to affect the ability of apps to send and receive MMS.
      platform_packages_apps_videoeditor
      This contais the code for the VideoEditor app. The only change here is including 'framework2', which is only required for AOSP 4.1.2.
      platform_system_core
      This contais a range of important core code, and is modified only for AOSP 4.1.2 to include 'framework2.jar' in the paths included at boot time.

      The branches used include two key naming components. First, the rom:
      e.g.
      cm-10.1* = CyanogenMod 10.1
      cm-jellybean* = CyanogenMod 10, cutting edge
      cm-jellybean-stable* = CyanogenMod 10, stable release
      aokp-jb-mr1* = AOKP 4.2.1-based
      aokp-jb* (without the mr1) = AOKP 4.1.2-based
      jb-mr0* = AOSP 4.1.2
      jb-mr1* = AOSP 4.2.1
      pa-jellybean* = ParanoidAndroid (currently buggy)

      then the OpenPDroid version:
      -openpdroid = the current stable release of OpenPDroid
      -openpdroid-devel = the current development line of OpenPDroid

      For development, the jb-mr1-release-openpdroid-devel is where I do my initial development, and I think expand it to be on the other -devel branches once I've tested it a bit.

      FAQ
      How do I include PDroid Manager in the ROM I am building so it can update from Google Play: see here
      How do I include PDroid Manager in the ROM I am building so it is compiled during build: see here: TamCore provided a fix for the problem he mentioned, and it has been merged.
      How do I build using the bleeding-edge (devel) code: see here, although there is a bit more to it than that. I'll provide extra details when time permits, but the important stuff is in this thread.


      I have a question or issue not covered in this post
      We'll be adding more to this post in the next day or two. Please be patient =)

      Note to mods
      I wasn't sure if this belonged in this forum, or in 'Apps and Games' but since it is not trivial to install I figured this was a safer bet.
    56
    As some of you have reported, OpenPDroid has been broken for the last week or so. Unfortunately, I am posting here to say that this will be the end of support ( at least with me as maintainer).

    This has been long coming. Android moves so quickly, and it has been a year since we did anything but simply maintain the project. I almost didn't port it to Android 4.4, but the lack of better options convinced me at the time. I did what I could to maintain functionallity, but as more time passses, it became more and more likely that things might be leaking behind the scenes. I would rather end it now as opposed to watching it become less and less reliable.

    I have implemented a EXPIRATION date function to the auto-patcher. Essentially, it will refuse to patch Android 4.4 builds older than 20140120. Earlier builds will continue to work as always while you decide your next step.

    Privacy and security has jumped to the forefront of the national discussion, it has felt good to be a part of the fight. I have heard from revolutionaries in the Ukraine and student activists from China who have used the project to secure their mobile phones. It has been a humbling experience.

    We know that data collection is cheap and easy. The only effective solution is to make the data more expensive to collect. This best done by applying technical subversion and limiting the required technical know-how. OpenPDroid was great at the first, we never quite got there with the second, my big regret. Still, I believe the net result of the project to be a huge positive. It has inspired similar implementations from CyanogenMod and Google itself, among several others.

    I am sorry that I am ending this now, I wanted to give you guys a little more lead time to migrate to another solution. But I can't give the time to audit the current problem, just to shut it down for good again in a couple months whenever 4.5 drops.

    Consider donating to the EFF or hosting a Tor relay. Tor brings pain, Tails brings them pain.

    Thanks to everyone. I especially need to thank Svyat, CollegeDev, FFU5Y, kobik77 and pastime1971. Hug 'em if you see 'em. A special thanks to @inportb who gave so much of his time to me personally.

    I am working on a replacement router firmware project in my spare time as well as something reducing noise from rotorcopters. I am very infrequently on XDA these days. I can be contacted at github or on twitter.

    We fought hard to keep everything in this project completely open source. OpenPDroid patches are available, the source code for the PDroid Manager app is available. The auto-patcher is of course available. My hope is that they were of use.
    23
    Full OpenPdroid project history

    Well, I am here to let any interested party know that I finally finished a pretty huge archival project for OpenPdroid.



    • In the OpenPDroid github page, you can now find build patches for all the iterations of Pdroid/OpenPdroid. The patches go from 2.3 to 4.2.2, and all have been reformatted so as to be applied in the same manner as recommended for the 4.2 patches in the first post.
      • You can see all the build patches here.
      • The patches were originally worked on by svyat, but have been contributed to by CollegeDev, FFU5y, pastime1971, me and wbedard among several others.
    • I have also finished converting and moving the original PDroid project tree I have from Svyat. I consider this something worth rescuing and representing, the full commit history of the Pdroid project is preserved. I also pushed that to the OpenPDroid page, you can see the PDroidHistory here.

    The whole thing was incredibly tedious. I had to convert the repos and checkout and remake every patch by hand to have it fit our current structure...plus custom READMEs for each branch...I expect at least one person here to care, if only for a second. I don't think many people have ever seen the commit history for PDroid, so hopefully there is something to be learned there.
    12
    Announcement: OpenPDroid build patches, as well as the entire history of the PDroid framework, have been rebuilt and restructured and pushed to our github page. There are build patches for all Android versions from 2.3 to current. You can also take a look at the commit history of the original PDroid framework by svyat, from initial commit to the point where he halted development, 1.32 for gingerbread.


    OpenPdroid for Android 4.2.1/4.2.2

    These are the current build patches for Android 4.2.1 and 4.2.2 and should generally reflect the current state of the jb-mr1-release-openpdroid branch. The latest commist are not always reflected in the build patches, bleeding-edge development is in the -devel branches.

    We realize that the patch/branch situation is not perfect, it is work in progress.

    These build patches should work for most roms. As of their creation (1/17/13) they applied cleanly to AOKP, AOSP, Cyanogenmod, ParanoidAndroid and others.

    The current best advice as to how to apply/remove them is below. Some easier application methods are being discussed.
    To Apply

    Code:
    cd ~/android/system/build; git checkout -b pdroid; patch -p1 < ~/openpdroid_4.2.1_build.patch
    cd ~/android/system/libcore; git checkout -b pdroid; patch -p1 < openpdroid_4.2.1_libcore.patch
    cd ~/android/system/packages/apps/Mms; git checkout -b pdroid; patch -p1 < openpdroid_4.2.1_Mms.patch
    cd ~/android/system/frameworks/base; git checkout -b pdroid; patch -p1 < openpdroid_4.2.1_frameworks_base.patch
    cd ~/android/system/frameworks/opt/telephony; git checkout -b pdroid; patch -p1 < ~/openpdroid_4.2.1_frameworks_opt_telephony.patch
    cd ~/android/system; . build/envsetup.sh; brunch <DEVICE_TARGET>
    To Remove
    Code:
    cd ~/android/system
    rm -rf out/target/common/obj/JAVA_LIBRARIES/framework_intermediates \
    out/host/common/obj/JAVA_LIBRARIES/layoutlib_intermediates \
    out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates \
    out/target/common/obj/APPS/Mms_intermediates
    [OR]
    Code:
    cd ~/android; make clobber
    and to reset your source tree**

    Code:
    cd ~/android/system/build; git checkout . ; git clean -df
    cd ~/android/system/libcore; git checkout . ; git clean -df
    cd ~/android/system/frameworks/base; git checkout . ; git clean -df
    cd ~/android/system/frameworks/opt/telephony; git checkout . ; git clean -df
    cd ~/android/system/packages/apps/Mms; git checkout . ; git clean -df
    cd ~/android/system; repo abandon pdroid

    If OpenPDroid intrigues you, yet the thought of applying all these patches gives you pause, there is a tool that can attempt to patch the framework of an already compiled rom called The Auto-Patcher.

    OpenPDroid is an open source fork of the PDroid framework, as written by Svyat and expanded by CollegeDev. We are always looking for contributors, come see us on XDA or submit a pull request.
    11
    Hey mateorod. How does the issue with GPS/openpdroid look? Would you need a tester of some sort?

    Hey thanks for the offer, that time is coming and I will add you to the testers list, since I know you have been using the program for a long time now.

    I know we are behind schedule, guys, I apologize for that. The workflow issues from our end have been solved for now, and I am putting in regular hours on the update. It is by far our most ambitious update since PDroid2.0 came out, so it has taken me some work. But the outcome will be the merging of the OpenPdroid and PDroid2.0 forks as we add CollegeDev as an official full member. He is responsible for most of the improvements since PDroid for gingerbread, so getting everyone on the same page is a great feeling.

    I have all of the code I need, but organizing and committing it in a sane and debuggable manner is a task. You can see my progress at our github page in the openpdroid-pdroid2-merge branch. It is moving along finally, and you can see that. I know that the number of branches is intimidating, I am planning on nuking all branches without original development on them when we release the next update.

    Thanks go out to people like autopatcher team members karamelos , Caldair and wbedard along with all the various people offering help to users in the threads. I had to step back from the day to day support or else this update would never get released. I do my best to monitor from a distance.

    I will be adding features to the branch tonight. We will get there.