Coder Social home page Coder Social logo

android_manifest's Introduction

ProtonAOSP

ProtonAOSP is a minimal custom Android ROM focused on UI/UX and performance, with a touch of security and privacy. It is based on Android Open Source Project (AOSP).

Getting source code

First, make sure you have an Android build environment and the repo tool set up. After that, run the following commands:

repo init -u https://github.com/ProtonAOSP/android_manifest -b sc
repo sync

This is a large download that will take approximately 100 GB of disk space, so plan accordingly.

Building

You will need to create a device tree to build this ROM for your device. Below are some examples that have been customized to work well with ProtonAOSP:

Good luck!

android_manifest's People

Contributors

bdcgoogle avatar bsimonnet avatar cco3 avatar cferris1000 avatar colincross avatar danalbert avatar danw avatar delphij avatar deymo avatar enh-google avatar freeinfra avatar gauravsh-google avatar ghartman17022 avatar iam avatar kdrag0n avatar kruton avatar lhchavez avatar liutikas avatar miaowang14 avatar mkayyash avatar mnissler avatar nfuller avatar nickkral avatar paulduffin avatar pirama-arumuga-nainar avatar stephenhines avatar tornewuff avatar vapier avatar wileyatgoogle avatar zqiu-nest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android_manifest's Issues

Consider replacing the stock legacy and unmaintained AOSP camera app with GrapheneOS Secure Camera

I think it's pretty safe to say the stock camera app is way too barebones and is not as functional as other camera apps out there and plenty of people are downloading custom camera apps.

However as of Android 11 the system integrated camera app can only provide camera intents for IMAGE_CAPTURE, VIDEO_CAPTURE, and IMAGE_CAPTURE_SECURE.
https://developer.android.com/about/versions/11/behavior-changes-11#media-capture
Because of this, the quality of the stock camera is very important.

The stock camera has invasive permissions for no reason such as internet access, NFC access, ability to set wallpaper, etc.
https://github.com/ProtonAOSP/android_packages_apps_Camera2/blob/sc-qpr3/AndroidManifest.xml#L11-L29

The JPEG library in the AOSP camera app hasn't been updated for many years and is in a memory unsafe language and has other legacy target SDKs and libraries.
It's a largely unportable pure Camera2 app when the more modern and easier equivalent is CameraX.

GrapheneOS Secure Camera is currently in use as a default camera app in DivestOS without any issues and their users are largely happy with it. It's made in pure Kotlin, it uses the CameraX library, it's extremely fast and has comparable if not better quality than GCam.
The app doesn't request invasive permissions. It only uses Sensors (GrapheneOS permission) and Camera permission. It will only request Microphone and Location if you actually record a video or enable geotagging. Our geotagging also supports both approximate (coarse) and precise location access for geotagging. We enable EXIF removal by default and we use the MediaStore properly as well.

It's also a QR code scanner that actually shows you what you scanned before you decide to open it instead of immediately opening it and/or not showing you the raw data which is surprisingly a security feature.

Our camera app has over 10,000 downloads on Play Store and a very high positive rating (4.5+ stars average) with builds also being available on our GitHub and custom secure app store. Future CameraX vendor extensions are coming which will add support for HDR, Auto, Night Sight, etc.

There is no evidence that the stock camera supports the Camera2 vendor extensions of these (besides maybe a generic implementation of HDR that doesn't come close to proper Pixel HDR+) as they are highly complex to integrate (like all of Camera2 itself) once the extensions are available. CameraX makes integrating these extensions very simple and easy.

Our repo is here: https://github.com/GrapheneOS/Camera
Our documentation on the app is here: https://grapheneos.org/usage#grapheneos-camera-app
Integrating it is simple as shown by the two relevant repos here:
https://github.com/GrapheneOS/platform_external_Camera (which has the prebuilts and makefile)
https://github.com/GrapheneOS/platform_manifest/blob/12.1/default.xml#L146 (adding a new remote and path)

Phone call hangs up byitself on pixel 5

Having a weird issue with my pixel 5.

When i am on a call with the gapps installed.

If i lock my phone (or screen turns off automatically), the phone call hangs up by itself without me doing anything.

Using verizon on my pixel 5.

Any ideas?

Request: Please make ProtonAOSP manifest more suitable for automated builds

To preface, I am not trying to use this issue as a means to complain, nor to degrade ProtonAOSP. I think this is a very exciting project, and I only seek to improve the build process for other users, so that they may benefit. I am not trying to be negative here.

At the moment, the current manifest is not very suitable for automated builds, or custom builds in general. My goal is to set up my own private build server for ProtonAOSP, that will automatically produce builds once per month, signed with my own keys and with my own private additions. However, there are obstacles in the way of this goal:

(I am not known for my conciseness, TL;DR below)

adevtool

While adevtool is inherently required to build ProtonAOSP for its officially supported devices, adevtool is not included in your manifest. I could, of course, clone it myself, but then there is the issue of the "state file" system; state files for adevtool+ProtonAOSP are not posted publicly, meaning it is up to the user to generate them. However, to generate a single state file requires one to compile an entire ROM, which takes several hours. I could reuse this state file, but as you warn, it will need to be re-generated after major Pixel feature drops. This makes it rather cumbersome to set up an automatic build system that simply pulls your manifest and "gets to building." The state file will need to be regenerated eventually, so some amount of manual intervention will be required at some point. And, if a Pixel feature drop arrives, it would become necessary to compile an entire "dummy" ROM, which would take several hours, for its state file alone. Personally, I do not think 3 hours to produce a .json file is an efficient use of build time.

In other ROM projects, it is customary to include everything needed to build the ROM for its supported devices, right there in the build tree. For ProtonAOSP, this would mean including in the manifest all of the state files you use to create your officially supported modules, a copy of adevtool, and a script to generate the correct module based on $DEVICE and the correct Google build number (more on that below).

An ideal alternative to this would be to simply have users clone your officially supported modules directly, but the size limit makes this unusable for recent devices, thus the need for automatically-reproducible vendor modules. They are also not tagged by ProtonAOSP version or Google build numbers, meaning using them would not result in reproducible builds. Speaking of...

Reproducible Builds

This is mostly an adevtool issue, but I thought it was worth bringing to light in its own section.

Ideally, I would like to produce my own builds that are more or less identical to ProtonAOSP's public builds. However, since there is no published list of corresponding versions to Google build numbers, I can only guess which versions were used. For example, I can guess that ProtonAOSP v12.2.3 uses SQ1D.220205.004, but I cannot be sure. As using the "latest" version is the only current way to automate this, there is a chance I create a build "mismatched" to the Google build number used officially for that ProtonAOSP version.

I believe this can be solved by providing an environment variable in the adevtool script I proposed above - when I pull a manifest tagged with a specific version of ProtonAOSP (i.e. refs/tags/12.2.3), an included script somewhere in tools automatically chooses the correct Google factory image with which to create the vendor module, which would result in a 1:1 reproducible build to the public builds. If you used SQ1D.220205.003, then so should I.

Apart from Google factory image versions, adevtool seems to produce different state files depending on whether or not you specify WITH_GMS=true. A state file generated with this specified seems to include many more Google-specific items. I will not know the ins and outs of adevtool better than you, but does this mean that two state files must be maintained for each release? One for Google-enabled builds and one without?

Releasing

At the moment, the process to sign and release ProtonAOSP seems to be incomplete, or at the very least not fully documented. Your instructions to create factory images do not make any mention of creating signed releases, and the generate-factory-images-package.sh script actually doesn't work as-is; it is a sh script but it attempts to use source (which is undefined behavior, and on my Ubuntu system it simply produces an error), there are no zips prefixed with signed- by this point in the build process, and the RADIO line attempts to run the latter part of the variable as a command, due to the pipe | character. Due to these issues, I am guessing you don't actually use this script for your releases.

CalyxOS and GrapheneOS both provide a release.sh script to automate the process of creating factory images and signing them. As you are maintaining your own releases, I'm guessing you have your own similar script. Could it be incorporated officially into the ProtonAOSP manifest, thus allowing people following your instructions to create their own builds with minimal friction?

TL;DR and closing thoughts:

I don't intend to dump all of this on you as though I'm saying "work for me please;" I know things take time and effort. For as much as I can, I am willing to assist in getting these items included, however some of them are out of my control to provide (maintaining the manifest, generating state files, etc).

With that said, I believe these things could be added rather quickly, and of great benefit to you and those wanting to build ProtonAOSP. You are already publishing your own signed builds, and you already maintain public vendor modules. In theory, this means you already have the state files and scripts I am suggesting you add to the manifest, but are currently manually doing the releasing and signing. I believe that adding these scripts to the manifest will simplify the release process for future builds, perhaps saving you time.

If these things were added, I will absolutely volunteer to update your documentation to reflect the changes, and help you test any changes to the build system along the way.

(TL;DR)

To summarize, here are my suggestions:

  • Include adevtool directly into the manifest, especially including the config folder with the .yml files required to create vendor modules
  • Include a repository containing pre-generated adevtool state files for each device, on a per-release basis, for adevtool to use
    • Ideally, this would be supplemented by a script, tagged in its own repo by ProtonAOSP version (i.e. refs/tags/12.2.3), that produces the exact same vendor module used for that official build of ProtonAOSP (i.e., if your vendor module was generated with SQ1D.220205.004, then so will mine).
    • If there is a meaningful difference in build output between state files generated with and without WITH_GMS=true, then I suggest to also include one of each for each device, so the build system can use the correct one based on that environment variable.
  • Include scripts to automatically handle creating factory images and signing them; the customary name for this in other projects is release.sh

New "SIMon mobile" operator doesn't have proper carrier id?

Hi guys.

It seems that the pretty new (launched in June/July?) German operator "->SIMon mobile" doesn't have a carrier id defined in ProtonAOSP for the Pixel 2. It just shows up as "Welcome" (actually it is "Willkommen", because the phone is switched to "German").

Is my interpretation why the carrier id doesn't show up properly correct? The phone previous had a SIM from "LIDL-Connect," and that did show up properly on the phone. Both brands are operated "in the back" by Vodafone, so I'm pretty sure they know what they are doing, and the SIM has been properly manufactured, so it must be the phone methinks?

Can I somehow help shedding some light on this? I'm pretty technical, "adb" and command-line is easy for me, so please let me know what I can do to investigate...

Many thanks in advance for looking into this.

Kind regards,

Ralf

community other then telegram

Not everyone wants to have to sign up to telegram just to read about proton aosp.
Many many people want a custom ROM to avoid google and their services and don't want to give telegram a phone number or use their app to be part of the community.

Top speaker issues

On my pixel 6 sound comes from the bottom speaker but the top one doesn't. ProtonAOSP 12.4.0 instal with gapps

Update on device with bootloader that has been relocked

Hello, I apologise if this is meant to be easy to resolve, but I cannot find a way to update the device if its bootloader has been relocked after installing ProtonAOSP. Is this intentional? Having to wipe data every time to update isn't a particularly user-friendly experience. If it is possible to produce OTA files like Google's, which seem to be signed with the secure boot key to allow them to be installed without unlocking, that would be ideal.

Android Auto keeps crashing

Whenever I try and launch Android Auto, it apparently keeps crashing with the update. it also refuses to connect via USB. Completely unusable on android 12.

More devices? Pixel 3a...

I would love to see this available for the 3a. Nice device, but there are not a lot of options for it.

New face unlock enroll process on Pixel 4 is buggy and different from stock

Primarily:

  • First two screens have missing explanation text
  • Enrollment itself shows the complete raw camera image with rotating dots on a white square, as well as the number of steps required and remaining (I tried this with stock android 12.0.0 and the UI is completely different from this)
  • It can occasionally get stuck in a bad state where it asks for the user to directly face the camera and never respond afterwards. I was still able to succeed with enrollment but it took many tries.

Version: ProtonAOSP 12.1.0

Lockscreen clock off-center again (Pixel 6, 12.4.0)

According to the Changelog, the position of the 2-row lockscreen clock has been fixed in 12.2. The issue has come back for me in version 12.4 (clean install). The clock overlaps with the fingerprint sensor.

Others in the Telegram group have also confirmed to face the issue.

Quick Step Launcher (12.3.0)

  • the grid options (other than the 5x5) display incorrect icons sizes and spacing...
  • at a glance is displayed properly, but the one on the widgets drawer is displayed in an odd 5x2 size, reverting to the default at a glance after removal requires a wipe of the launcher data

[raven] 12.4.1 fails to build: Rust dependency error on DnsResolver

A clean build of ProtonAOSP 12.4.1 for Pixel 6 Pro (raven) is failing with this error:

[ 99% 247/249] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
cd "$(dirname "out/soong/.bootstrap/bin/soong_build")" && BUILDER="$PWD/$(basename "out/soong/.bootstrap/bin/soong_build")" && cd / && env -i "$BUILDER"     --top "$TOP"     --out "out/soong"     -n "out"     -d "out/soong/build.ninja.d"     -t -l out/.module_paths/Android.bp.list -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja --available_env out/soong/soong.environment.available --used_env out/soong/soong.environment.used Android.bp
error: packages/modules/DnsResolver/Android.bp:377:1: "libdoh_ffi_for_test" depends on undefined module "libbase64_rust"
04:03:02 soong bootstrap failed with: exit status 1

#### failed to build some targets (42 seconds) ####

It looks like ProtonAOSP's DnsResolver module now includes some Rust build components as of this update. Additionally, proton.xml was recently updated to also include some Rust crates. However, it seems like the base64 crate may not have been added? Based on the above error, it seems like it's the one that is missing.

Building from source fails with error

Apologies if this is not the right place to report this -- where can I get help with this otherwise?

Steps to reproduce:

# find commit for v12.0.0 tag: c22533...
repo init -u https://github.com/ProtonAOSP/android_manifest -b c22533b76af3a367d987c47ff19625434f74ad59
repo sync -q -j8
# download google blobs corresponding to build_id
tar xvzf ../google_devices-redfin-sp1a.210812.016.a1-8813b219.tgz
./extract-google_devices-redfin.sh
tar xvzf ../qcom-redfin-sp1a.210812.016.a1-8d32b5b1.tgz
./extract-qcom-redfin.sh

cd vendor
# how does the build system choose between minimal and gapps?
mv gapps gapps.disable

source build/envsetup.sh

lunch redfin-userdebug
make -j4

fails with

[ 83% 399/477] including hardware/qcom/sm8150/display/Android.mk ...
FAILED:
In file included from hardware/qcom/sm8150/data/ipacfg-mgr/ipanat/test/Android.mk:2:
In file included from hardware/qcom/sm8150/display/Android.mk:13:
In file included from hardware/qcom/sm8150/display/sdm/libs/utils/Android.mk:21:
In file included from build/make/core/shared_library.mk:32:
In file included from build/make/core/shared_library_internal.mk:34:
In file included from build/make/core/dynamic_binary.mk:39:
In file included from build/make/core/binary.mk:9:
build/make/core/base_rules.mk:335: error: hardware/qcom/sm8150/display/sdm/libs/utils: MODULE.TARGET.SHARED_LIBRARIES.libsdmutils already defined by hardware/qcom/sm7250/display/sdm/libs/utils.
23:05:19 ckati failed with: exit status 1

(Redfin) Build from source boots ok once, but on subsequent boots many errors

I'm building Proton from source for Pixel 5 (redfin). No changes to the source, other than setting WITH_GMS to true for Gapps, and replacing the radio.img file that's not included in the NeutronBlobs repo due to size restrictions.

For the initial first boot, everything seems fine. I go through the pixel setup wizard with no problems, and everything seems normal.
But when I reboot, wifi/mobile/bluetooth all fail to connect. And then I start getting a flood of " has stopped working" messages. I've never seen anything like this, where things start to fail only on the 2nd boot and thereafter.

Checking the logcat shows a flood of "SELinux AVC denied" errors, so clear ly there is some reason the OS is prevented from accessing certain things, but I'm not sure why.

Any suggestions?

Most Apps Closing/Crashing to Homescreen

For about a month now I have had somewhat intermittent issues with most apps closing to the home screen seconds after opening. The apps are still open in the apps window. Through trial and error found that most if not all apps start doing this after I turn on WiFi. I must turn WiFi off AND restart the phone to make them stop closing. I have been able to "trick" it into working by turning it on without WiFi and starting 1 or more apps known to have the issue and run them while I turn WiFi back on, and then most if not all of the apps will work. However, this "trick" stopped working today, may be intermittent.

Running Proton 12.4.0

Android 13 plans

What are the plans for ProtonAOSP on Android 13? Is there a timeline/expected date?

Dark Theme Switch (12.3.0)

the dark theme switch on the notification panel is buggy, as shown on the screenshot, this glitch happens if you got the switch on anything other than the first or second page of the pills (pills of 8, where the internet tile is on the first page) on every click on the switch
the functionality of the switch is untouched
Screenshot_20220423-205946

Location Acesss from Privacy Dashboard pops up every thirty seconds

I am getting nonstop location polling requests that keep causing that annoying green popup in the top right corner. I've verified with my wife who has Android 12 but not proton, and no where near as many popups. I mean it's roughly every 20 seconds. These are for apps like maps, play services, and a widget that have always access for seeing my location, which as far as I understand Android should not show the popup for. Any help?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.