Code Monkey home page Code Monkey logo

opengapps's Introduction

Open GApps

Getting the latest pre-built Open GApps

The latest version of pre-built Open GApps can be found at https://opengapps.org, hosted on SourceForge.

Support Project Donate
Q&A Forum XDA Q&A
Development Forum XDA Development
Support Chat Gitter
Download OpenGApps Download OpenGApps

Support for the pre-built packages from OpenGApps.org

If you have any questions, check out the Open GApps Wiki, especially the FAQ since it'd answer most of the questions. If you can't find the answer to your question use the XDA Q&A Thread or join us on Gitter to receive support. Don't forget to add at least the Open GApps installer debug log and if experiencing Force Closures also include a logcat.

If you did find a bug in the Pre-built OpenGApps.org packages you can report it at the XDA Open GApps Development Thread. Remember to include at minimum the Open GApps installer debug log and if applicable a logcat.

Please don't file directly any GitHub issues to file problems with the Pre-built packages. The GitHub issues tracker is only used for issues concerning the Open GApps Project scripts themselves.

Build your own Open GApps

The example git commands assume you have a GitHub account and have set-up SSH authentication.

If you want to build your own version of Open GApps, you'll need to fetch the git sources:

To initialize your local repository using the Open GApps source tree, clone the main repository with the command:

git clone [email protected]:opengapps/opengapps.git

Then sync the submodules to get the original APK sources as provided by Google. Take note that these repositories are very large (in the order of GiBs). You can also use this command to update the sources at a later moment to their most recent version:

./download_sources.sh [--shallow] [arch]
  • --shallow will order to fetch only the latest snapshot of the APKs (reduces space used and amount of data to be retrieved by git, by not fetching the APKs' history)
  • arch can be one of the following "arm, arm64, x86, x86_64" to fetch only data required for specified architecture (note that fallback architectures will be fetched too)

To build Open GApps you'll need the Android build tools installed and set-up in your $PATH. If you use Ubuntu you can check out @mfonville's Android build tools for Ubuntu.

To build Open GApps for all platforms and all Android releases:

make

To build Open GApps for a specific Android release on a specific platform, define both the platform and the API level of that release, seperated by a dash and optionally add the variant with another dash.

Two examples (for building for Android 6.0 on ARM):

make arm-23

or

make arm-23-stock

To add updated source APKs to the sources archive (you can add more than one at once):

./add_sourceapp.sh [/path/to/the/files/you/want/to/add.apk]* [beta] [/apps/that/should/be/marked/as/beta.apk...]*

For contributors, updated sources can be uploaded. Either without an argument for every architecture, or with one or more arguments for a subset of architectures:

./upload_sources.sh [archs]*

If you want an overview of the locally available sources:

./report_sources.sh

You can add extra arguments to report_sources to do your more advanced bidding too:

./report_sources.sh ( ([sdk] [archs]*) || [arch-sdk] ) && [hash] || [max*mb] || [min*mb] || [nobeta] || [nohelp] || [noleanback] || [nosig]

License

The Open GApps Project itself is licensed under the GPLv3 with an addendum called the Open GApps installable zip exception.

A short explanation of these license terms and the terms used by the pre-built OpenGApps.org packages:

  • The license and its exception are very comparable to the GNU Compiler Collection.
  • The Open GApps Project itself is like a "compiler" that is licensed under the GPLv3.
  • The "Installable zips" produced by the Open GApps Project is a assorted product of which its components adhere to various different licenses. E.g. the Open GApps installer scripts are still GPLv3 licensed.
  • The author of an "installable zip" can choose the license for this assorted end-product themselves, as long as any changes to the version of The Open GApps Project compiler used during the creation of the "installable zip" are published under the GPLv3 with the "installable zip" too. Also the individual components within the "installable zip" are still licensed under their respective terms.
  • The pre-built packages from OpenGApps.org are made available under the terms that they can be freely used for personal use only, and are not allowed to be mirrored to the public other than OpenGApps.org

opengapps's People

Contributors

acris avatar bgiesing avatar chinmaykunkikar avatar dd3boh avatar dobragab avatar eugenesan avatar gdsouza avatar gentoo-root avatar invisiblek avatar ipdev99 avatar kreach3r avatar luca020400 avatar mc1100 avatar mdmower avatar merothh avatar mfonville avatar msf-jarvis avatar nezorflame avatar nicholasbuse avatar osm0sis avatar rapperskull avatar raulpetru avatar razorloves avatar rhansen avatar robin-vandaele avatar spasilliumnexus avatar strazzere avatar tenzap avatar webgeek1234 avatar yashdsaraf 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  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  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  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

opengapps's Issues

addon.d script generation bug?

I usually flash all of my zips (cm caf nightly, opengapps nightly, personal system mods).

  1. Wipe System
  2. Install CM
  3. Install OpenGapps
  4. Install personal zip
  5. Wipe dalvik/cache

Today for the first time in a while I just used cmupdater to flash only the new nightly. Upon reboot, all Gapps were gone. I have attached my logs, but it seems that 70-gapps.sh has any empty list in list_files() in both cases.

https://www.dropbox.com/s/97nocqxk2nedt7m/open_gapps_debug_logs20150708.tar.gz?dl=0

open_gapps-arm-4.4-XXX can't work on CM11

Device: Nexus 7 2013 WIFI(Flo)
Rom: cm-11-20141115-SNAPSHOT-M12-flo
Kernel: ElementalX-N7-2.15-cm

open_gapps-arm-4.4-XXX doesn't work on CM11. After first reboot, while executing the setup wizard, I get a FC and can't continue...
Here is the exception message from Logcat:
06-10 07:39:40.315 23240-23240/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.google.android.setupwizard, PID: 23240
java.lang.NoSuchMethodError: android.net.wifi.IWifiManager.setWifiEnabled
at com.google.android.setupwizard.BaseActivity.tryEnablingWifi(BaseActivity.java:1526)
at com.google.android.setupwizard.WelcomeActivity$2.run(WelcomeActivity.java:129)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)

Google Webview logic/integration

Since CM has announced they will not work on CM12.0 anymore, the Google Webview fix will never be put in that branch.
Meanwhile, we can assume by now that all CM12.1 spins will have adopted the Google Webview patch.

So we can/should remove the hacky code from update-binary.sh.
All 5.0 builds with the exception of 'fornexus' will not get google webview anymore
All 5.1+ builds will receive google webview.

Get 5.0 working

Apparently at first boot, the user is spammed with a FC of
com.google.process.gapps

Multi-architecture / 64 bit support

Update-binary and installer.data have to be updated to support multiple architectures.

Also the library paths at 64 bit systems have to be studied. Because
64 bit android seems to have a /system/lib64/ and a /system/lib/.
And it can run 'normal' 32bit apps (it seems).

The script should therefore also support (when finding sources/versions) implement a fallback from arm64 to arm and from x86_64 to x86.

Maybe we can study current GApps that support 64 bit to compare?

Build more variants than just stock

Plan:

Put the build-funtions in several subfunctions.
Start by only calling the most minimal package-size its function. Then calculate sizes etc, and package it.
Then call the next, a bit bigger package function, recalculate sizes, repackage it. etc...
End with the stock package.

7/7 arm build does not install with CWM

Just flashed the 7/7 stock build and it mad the phone completely unusable: the launcher doesn't come on, every app crashes. Reverting back to the 7/2 build that I had on my SD card to hopefully get back in business

Android TV/Leanback GApps

Since the Nexus Player is apart of our devices, we should consider a TV/Leanback variant.

Todo

Inital Setup

  • Prepare add_source.sh to process leanback packages.
  • Gather Core from Nexus Player (fugu) factory image.
  • Gather initial x86 and ARM leanback versions if possible.
  • Update script to support building leanback variant

Package Considerations

  • Decide on the various flavours -> what should be in tvstock; what could be the set of apps for e.g. a tvpico or tvnano?
  • Identify application dependencies -> Make rules what include/excludes are implied
  • Identify removable applications -> Which apps from AOSP/CM should be removable on AndroidTV?
  • Identify application replacements -> Make rules what AOSP/CM applications should be removed/replaced when installing their Google equivalent

App Gathering

  • Fetch updated APKs for the packages (especially Google Play Services)
  • After oat2dex fixes their bug, we should import the last missing APKs for Marshmallow
  • Fetch more versions of the arm-libs for AndroidTV (the one currently found is from the AndroidTV ARM SDK, but I am not sure if its API compatibility level)

Testing

  • Find people with Android TV devices (or maybe we can ask people to donate one to @mfonville)
  • Test the current draft packages (see below)

Website Todos

  • How about an MDL-on/off switch for the variants (or a slider?) to switch between the 'regular' and the AndroidTV-variant flavours?
  • Hotlink (& autodownload) should work als switch this slider/switch if the variantname variable implies so
  • Need to update the wiki and other various sets of documentation
  • Update site with new variant

Draft Builds

5.1 ARM: https://dl.dropboxusercontent.com/u/7278254/TVStock/open_gapps-arm-5.1-tvstock-20160914-UNOFFICIAL.zip
5.1 x86: https://dl.dropboxusercontent.com/u/7278254/TVStock/open_gapps-x86-5.1-tvstock-20160914-UNOFFICIAL.zip
6.0 ARM: https://dl.dropboxusercontent.com/u/7278254/TVStock/open_gapps-arm-6.0-tvstock-20160914-UNOFFICIAL.zip
6.0 x86: https://dl.dropboxusercontent.com/u/7278254/TVStock/open_gapps-x86-6.0-tvstock-20160914-UNOFFICIAL.zip

Per Device Config File Changes

I have been thinking about this for a while...

Some devices that are still supported by companies (like 2013 Nexus 7), can't fit the whole stock GApps package anymore. Even with a config file, if you have multiple devices, it's really hard to decide what you want to remove or add as maybe you want something to be installed but you can't put it into the config cause one of your devices doesn't have enough space. Ideally, you would still want to install those on the device that does have space.

My idea is to allow device specific configs. This could be done two ways:

  • Use an IF block in your existing file.

This would be the preferred solution. It would use all the file entries but prefer changes made in the block based on device. A config might like like this (not real code):

Include
Chrome
etc.

if [ $device_name = flo ]; then
    Exclude
    Chrome
endif
  • Allow people to make .gapps-config-$device_name files

This would use a normal config file first but look at the device one to modify. This would probably be worse. A way to look for one in the build script could be where it finds the config file, add an option for one with the device name using the $device_name variable.

talkback has moved to /app

On Android 5.1 talkback has moved from /priv-app to /app.
This change has been incorporated into all versions, but has to be tested if it works on versions lower than 5.1.

report_sources.sh errors

Couple of things I noticed when I run ./report_sources.sh arm-22
For com.google.android.syncadapter.contacts it reports version 4.4.4-1227136
If you run without arguments it reports properly that verison for api 19,21, and 22 are available

The other issue I see if you run it with any arguments at first it throws a ton of errors such as:
awk: run time error: negative field index $-2
FILENAME="-" FNR=1 NR=1

Hangouts has moved to priv-app/

Hangouts has moved on Android 5.1 to priv-app. This change has been incorporated into all platforms. Testing is necessary whether this does not give any problems.

Google Messenger Multiple DPI versions

For Google Messenger multiple variants for various DPI variations seem to be released. Will have to be packaged just like Google Play Games.

there is also an xx9 version, but no idea why

let installer.data have again gms_base info

I earlier removed gms_base info from installer.data, since that information was not available.
But with aapt actually we now have this info (and even more) so add back this information, together with info of play games (and/or even other package versions!?)

Create automagic changelog/version report

Since all package revisions are known to the script anyhow, we could automatically generate a log of which packages+versions where used for a build. This would be useful for tagging on GitHub and the OP on XDA.

Beautify the code

The code is ugly spaghetti sometimes at the moment, and not everywhere fail-safe concerning spaces, unicode etc. Try to refactor, improve and revise.

The mysterious stories of SetupWizard

A plan about how/what about SetupWizard has to be done.
SetupWizard differs per phone and tablet nexus image.
Their versioncode, api level etc are the same, even their supported DPIs are (almost?) the same. Just within the package different DPI resources are available.
Maybe we can make a unified package from the resources of both??? Or some other creative solution?

stable branch

After the multi dpi is in place, I would want to branch of stable builds, which will only include tested code. And should reduce the amount of necessary 'daily' releases to the point of 'only' when Google updates an app. And a branch where the experimental development will continue and later be backported.
This should make the gapps more stable and attractive to a larger community.

What are the thoughts of the other developers on this?

TODO:

  • Let report_sources create a hash per architecture's packages that are used for a build
  • Change buildbot to look for report_sources hash per architecture
  • Trigger build per architecture if hash has changed
  • Upload builds to an architecture's own releases
  • Let the website check the architecture's release pages for the latest builds, not the global one
  • Aggegrate the RSS feeds of each architecture's release page into one stream to be used for PushBullet and Twitter (and also RSS itself, to be integrated on the website)
  • Mark the releases as stable

4.4: Google Play Music: no covers in its notification & errors in logcat

Clean install with open_gapps-arm-4.4-stock-20150702.zip on Omni 4.4.
Starting Google Play Music gives the following error in logcat

E/dalvikvm( 2631): dlopen("/data/app-lib/PrebuiltGmsCore/libgmscore.so") failed: dlopen failed: library "/data/app-lib/PrebuiltGmsCore/libgmscore.so" not found

Should look in /system where PrebuildGMSCore exists.
Google Play Music otherwise still seems to work, tho there's a blank black song cover in the Google Play Music notification (other covers in the app/widget aren't blank)

open_gapps_log.txt

# Begin Open GApps Install Log
-----------------------------------------------------------------------------
           ROM Android Version | 4.4.4
                        ROM ID | omni_maguro-userdebug 4.4.4 KTU84P 560 test-keys
                   ROM Version | OmniROM-4.4.4-20150520-maguro-FINAL
               Device Recovery | TWRP 2.8.7.0
                   Device Name | maguro
                  Device Model | Galaxy Nexus
                   Device Type | phone
                    Device CPU | armeabi-v7a
armeabi
               getprop Density | 320
          default.prop Density | 320
            build.prop Density | 320
          Display Density Used | 320ppi
                  Install Type | Clean[Data Wiped]
     Google Camera Installed¹ | Clean
      Google Clock Installed¹ | Clean
   Google Keyboard Installed¹ | Clean
         FaceUnlock Compatible | true
      Google Camera Compatible | true
         Current GApps Version | NO GApps Installed
    Current Open GApps Package | NO GApps Installed
      Installing GApps Version | 20150703
         Installing GApps Type | stock
                   Config Type | include
            Using gapps-config | /sdcard/.gapps-config
     Remove Stock/AOSP Browser | true[gapps-config]
       Remove Stock/AOSP Email | true[gapps-config]
     Remove Stock/AOSP Gallery | true[gapps-config]
    Remove Stock/AOSP Launcher | false[NO_GoogleNow]
     Remove Stock/AOSP MMS App | false[NO_Hangouts]
    Remove Stock/AOSP Pico TTS | true[gapps-config]
     Remove Stock/AOSP WebView | false[NO_GoogleWebView]
        Total System Size (KB) | 659152
        Used System Space (KB) | 292144
       Current Free Space (KB) | 367008
  Post Install Free Space (KB) | 53614       << See Calculations Below
-----------------------------------------------------------------------------
                  ¹ Previously installed with Open GApps
# End Open GApps Install Log

!!! WARNING !!! - Duplicate files were found between your ROM and this GApps
package. This is likely due to your ROM's dev including Google proprietary
files in the ROM. The duplicate files are shown in the log portion below.

# Begin GApps <> ROM Duplicate File List
/system/usr/srec
# End GApps <> ROM Duplicate File List

# Begin GApps Size Calculations
-----------------------------------------------------------------------------
  TYPE  |         DESCRIPTION        |      SIZE |   TOTAL
        |         Current Free Space |    367008 |  367008
 Remove |             Existing GApps | +    1952 |  368960
 Remove |             Obsolete Files | +     360 |  369320
 Remove |                    browser | +    2536 |  371856
 Remove |              calendarstock | +    1872 |  373728
 Remove |                camerastock | +    3984 |  377712
 Remove |                      email | +    4724 |  382436
 Remove |              exchangestock | +    1136 |  383572
 Remove |                    gallery | +    5184 |  388756
 Remove |                    picotts | +    6556 |  395312
 Remove |                     studio | +    5244 |  400556
Install |                     Core² | -   58145 |  342411
Install |           calendargoogle³ | -   22862 |  319549
Install |             cameragoogle³ | -   29918 |  289631
Install |                   chrome³ | -   45023 |  244608
Install |                     docs³ | -   30377 |  214231
Install |                    drive³ | -   15415 |  198816
Install |           exchangegoogle³ | -    1220 |  197596
Install |                googletts³ | -   18735 |  178861
Install |                     keep³ | -   12963 |  165898
Install |                     maps³ | -   19766 |  146132
Install |                    music³ | -   16687 |  129445
Install |                   photos³ | -       0 |  129445
Install |                   sheets³ | -   33496 |   95949
Install |                   slides³ | -   32861 |   63088
Install |                   street³ | -     258 |   62830
        |             Buffer Space² | -    9216 |   53614
-----------------------------------------------------------------------------
                        Post Install Free Space |   53614
-----------------------------------------------------------------------------
              ² Required (ALWAYS Installed)
              ³ Optional (may be removed)

# End GApps Size Calculations

# Begin User's gapps-config
Include
CalendarGoogle
CameraGoogle
Chrome
Docs
Drive
ExchangeGoogle
GoogleTTS
Keep
Maps
Music
Photos
Sheets
Slides
Street
Browser
Email
Gallery
PicoTTS
Studio

# End User's gapps-config

Refactor update-binary

We don't need to have update-binary dependend on installer.data anymore, we can put it all together in one file when the result is being generated.

But the current inc.update-binary.sh is way too large, so a proposal would be to label and split out the logic that is found in update-binary into several seperate files that create coherent logic blocks.

Currently identified blocks within update-binary are:

  • a header, containing the LICENSE, zip extraction and static variables
  • functions that are used by the script
  • loading of config and compatability data
  • dependency logic (processing the config/chosen packages)
  • space calculation
  • removals and installation of packages
  • addon.d generation
  • permisisons and cleanup (footer)

Apps are integrated but not deleted after update

I had this issue both on a install of fornexus on a dirty flash (formatted system but not data and installed) and a completely fresh install of CyanogenMod with stock package.

After apps are updated though Google Play, they remain in data even after installing a new GApps package. They do get updated in system, but it's still in data as the same file.

This picture shows what apps are still in data as of July 3rd's build: https://goo.gl/photos/xhvbb7Lh7HxswEFf7

Logs and packages.xml are here: https://goo.gl/l2y2HP

Various GApps have multiple DPI versions

@rapperskull has found out that many more GApps have various DPI variants, he compiled a list at http://pastebin.com/cJQcBm9g

We should think about if and how we should maybe package these variations.
aapt dump badging xxxx.apk gives output like:
compatible-screens:'200/400','300/400','400/400','500/400','200/480','300/480','400/480','500/480','200/560','300/560','400/560','500/560','200/640','300/640','400/640','500/640'

The first number says something about the screensize (a classification with 200=small, 300=normal, 400=large, 500=xlarge ???)
And the second number is the dpi.

Docs/Drives/Sheets/Slides uses the most coherent naming scheme:
30: Universal
31: ldpi (120) (Never seen)
32: mdpi (160) (Never seen)
33: hdpi (240)
34: xhdpi (320)
35: xxhdpi (480)
36: xxxhdpi (640)
37: xxxxhdpi (Doesn't exist yet)

Current tasks:

  • Study what is going on and what has to be done
  • Rewrite the apk-sources add and report tools to support multidpi
  • Restructure the format of the produced ZIP archive
  • Rewrite the buildtarget tools to support multidpi
  • Rewrite the buildtarget tools to build the new ZIP archive structure
  • Rewrite the installscripts to handle the new ZIP archive structure
  • Rewrite the installscripts to handle multidpi
  • Add all the packages to the new source-repository structure
  • Add all dpi variants of the packages to the new source-repository structure

Wrong Google Play Services in GMSCore 0 folder. -438 instead of -430.

I noticed that in the gmscore folder, folder 0 it has the wrong google play services. It has google play services -438 instead of the universal -430 version. I have also checked to see what's installed in my system and it says -438 after installing open gapps. I'm on a Nexus 6 which would require/install -430 on its own.

Trusted Face has stopped

Just updated to the latest files and I am getting Unfortunately Trusted Face has stopped.

Samsung Galaxy S3 T-Mobile
CM12.1 nightly 6/11
OpenGapps 6/11 Stock personal built.

AOSP Build system

Would you be open to working this into the AOSP/CM build system?

Such that I could use this script to to put GApps into my AOSP ROM manually and they be 100% up to date as of the download time?

This si something I'd be happy to try myself if you guys would accept any pull requests on the subject

Unable to upload updated source

I am getting the following error when trying to upload the latest source. I followed exact commands listed on the front page for adding sources

~/opengapps/sources/arm$ git push
ERROR: Permission to opengapps/arm.git denied to DJAlik.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Some devices have no TWRP available

Some devices only have CWM available, this are often relatively old devices.
Maybe we could consider to also publish builds of micro, pico and nano without the .xz compression for the 'arm' platforms and keep a 'compatibility' mode for them.

We could also use that compatability code for the aroma builds of issue #56

@rapperskull do you think that would be maintainable, code-wise?

Update: another solution could be to bundle an arm build of xz in a special cwm-compatibility version of those builds.

ShellCheck linter issues

I ran ShellCheck 0.3.8 against 133c884 and figured I'd post the output here in case anyone was interested in going through it. If no one is interested, I'll see what I can do and then open a PR for review.

Going by a quick glance, it looks like there's possibly quite a few false positives, so I've split up the output into errors, warnings and notes so that it's easier to go though all of them.

shellcheck-plaintext
shellcheck-errors
shellcheck-warnings
shellcheck-notes

shellcheck --format=gcc --shell=sh

add_sourceapp.sh:33:10: note: Use $(..) instead of legacy `..`. [SC2006]
add_sourceapp.sh:33:16: note: Double quote to prevent globbing and word splitting. [SC2086]
add_sourceapp.sh:58:85: note: tr replaces sets of chars, not words (mentioned due to duplicates). [SC2020]
add_sourceapp.sh:59:86: note: tr replaces sets of chars, not words (mentioned due to duplicates). [SC2020]
add_sourceapp.sh:60:66: note: tr replaces sets of chars, not words (mentioned due to duplicates). [SC2020]
add_sourceapp.sh:73:12: note: Use $(..) instead of legacy `..`. [SC2006]
add_sourceapp.sh:75:19: note: Use $(..) instead of legacy `..`. [SC2006]
add_sourceapp.sh:89:12: note: Use $(..) instead of legacy `..`. [SC2006]
add_sourceapp.sh:89:23: note: $/${} is unnecessary on arithmetic variables. [SC2004]
add_sourceapp.sh:104:19: note: Double quote to prevent globbing and word splitting. [SC2086]
add_sourceapp.sh:105:17: warning: The surrounding quotes actually unquote this. Remove or escape them. [SC2027]
add_sourceapp.sh:105:17: note: Double quote to prevent globbing and word splitting. [SC2086]
add_sourceapp.sh:105:42: warning: The surrounding quotes actually unquote this. Remove or escape them. [SC2027]
add_sourceapp.sh:105:42: note: Double quote to prevent globbing and word splitting. [SC2086]
add_sourceapp.sh:105:71: warning: The surrounding quotes actually unquote this. Remove or escape them. [SC2027]
add_sourceapp.sh:105:71: note: Double quote to prevent globbing and word splitting. [SC2086]
add_sourceapp.sh:105:98: note: Double quote to prevent globbing and word splitting. [SC2086]
add_sourceapp.sh:112:17: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
add_sourceapp.sh:113:41: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
report_sources.sh:79:22: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
report_sources.sh:84:21: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
report_sources.sh:89:23: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
report_sources.sh:93:118: note: tr replaces sets of chars, not words (mentioned due to duplicates). [SC2020]
report_sources.sh:109:7: note: Useless echo? Instead of 'echo $(cmd)', just use 'cmd'. [SC2005]
report_sources.sh:109:15: warning: In POSIX sh, echo flags are not supported. [SC2039]
scripts/bkup_tail.sh:2:1: error: Parsing stopped here. Is this keyword correctly matched up? [SC1089]
scripts/build_gapps.sh:20:1: warning: DATE appears unused. Verify it or export it. [SC2034]
scripts/build_gapps.sh:22:1: warning: ARCH appears unused. Verify it or export it. [SC2034]
scripts/build_gapps.sh:25:1: warning: BUILD appears unused. Verify it or export it. [SC2034]
scripts/build_gapps.sh:26:1: warning: OUT appears unused. Verify it or export it. [SC2034]
scripts/build_gapps.sh:27:1: warning: SOURCES appears unused. Verify it or export it. [SC2034]
scripts/build_gapps.sh:53:6: warning: PLATFORM appears unused. Verify it or export it. [SC2034]
scripts/build_gapps.sh:59:20: warning: supported_variants is referenced but not assigned. [SC2154]
scripts/inc.aromadata.sh:14:6: warning: build is referenced but not assigned. [SC2154]
scripts/inc.buildhelper.sh:15:9: warning: Possible misspelling: BUILD may not be assigned, but build is. [SC2153]
scripts/inc.buildhelper.sh:68:109: note: tr replaces sets of chars, not words (mentioned due to duplicates). [SC2020]
scripts/inc.buildhelper.sh:80:12: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.buildhelper.sh:120:29: note: This word is outside of quotes. Did you intend to 'nest '"'single quotes'"' instead'?  [SC2026]
scripts/inc.buildhelper.sh:130:29: note: This word is outside of quotes. Did you intend to 'nest '"'single quotes'"' instead'?  [SC2026]
scripts/inc.buildtarget.sh:27:1: warning: gappsstock appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:30:1: warning: gappsfull appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:50:1: warning: gappsmini appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:58:1: warning: gappsmicro appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:65:1: warning: gappsnano appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:68:1: warning: gappspico appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:70:1: warning: stockremove appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:95:6: warning: supported_variants appears unused. Verify it or export it. [SC2034]
scripts/inc.buildtarget.sh:104:27: warning: addtogapps is referenced but not assigned. [SC2154]
scripts/inc.buildtarget.sh:118:19: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.compatibility.sh:16:130: warning: build is referenced but not assigned. [SC2154]
scripts/inc.compatibility.sh:26:26: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:28:34: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:28:80: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:30:34: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:30:92: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:31:34: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:31:92: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:34:104: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:34:162: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:35:104: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:35:162: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:36:116: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:37:104: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:37:150: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:40:9: warning: REQDLIST appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:45:9: warning: KEYBDLIBS appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:46:9: warning: KEYBDINSTALLCODE appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:52:23: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:56:25: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.compatibility.sh:115:9: warning: DATASIZESCODE appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:116:9: warning: DATAINSTALLCODE appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:132:3: warning: REMOVALSUFFIX appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:133:3: warning: REMOVALBYPASS appears unused. Verify it or export it. [SC2034]
scripts/inc.compatibility.sh:150:11: warning: package is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:19:28: warning: build is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:24:18: warning: supported_variants is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:25:14: warning: gapps_list is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:27:11: error: Always true because you failed to quote. Use [[ ]] instead. [SC2070]
scripts/inc.installdata.sh:27:11: warning: packagename is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:27:11: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.installdata.sh:28:26: warning: packagetarget is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:31:15: warning: packagefiles is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:44:9: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.installdata.sh:94:3: warning: gappscore is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:98:3: warning: gappsstock is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:102:3: warning: gappsfull is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:106:3: warning: gappsmini is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:110:3: warning: gappsmicro is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:114:3: warning: gappsnano is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:118:3: warning: gappspico is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:123:3: warning: stockremove is referenced but not assigned. [SC2154]
scripts/inc.installdata.sh:403:43: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.packagetarget.sh:15:11: warning: For loops over find output are fragile. Use find -exec or a while read loop. [SC2044]
scripts/inc.packagetarget.sh:15:19: warning: build is referenced but not assigned. [SC2154]
scripts/inc.packagetarget.sh:59:13: warning: Don't use ls | grep. Use a glob or a for loop with a condition to allow non-alphanumeric filenames. [SC2010]
scripts/inc.packagetarget.sh:59:19: note: Use ./*/ so names with dashes won't become options. [SC2035]
scripts/inc.packagetarget.sh:61:12: error: Iterating over ls output is fragile. Use globs. [SC2045]
scripts/inc.packagetarget.sh:62:13: error: Iterating over ls output is fragile. Use globs. [SC2045]
scripts/inc.packagetarget.sh:62:18: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.packagetarget.sh:64:13: note: echo won't expand escape sequences. Consider printf. [SC2028]
scripts/inc.packagetarget.sh:64:17: note: echo won't expand escape sequences. Consider printf. [SC2028]
scripts/inc.signapk.sh:37:5: warning: In POSIX sh, string indexing is not supported. [SC2039]
scripts/inc.signapk.sh:43:8: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:50:10: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:51:12: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:58:12: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:65:10: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:101:9: warning: Declare and assign separately to avoid masking return values. [SC2155]
scripts/inc.signapk.sh:104:14: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:104:22: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:105:3: warning: In POSIX sh, arithmetic for loops are not supported. [SC2039]
scripts/inc.signapk.sh:105:14: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:105:17: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:105:32: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:107:7: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:107:8: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:108:15: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:108:23: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:108:46: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:115:14: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:115:22: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:116:3: warning: In POSIX sh, arithmetic for loops are not supported. [SC2039]
scripts/inc.signapk.sh:116:14: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:116:17: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:116:32: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:118:7: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:118:8: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:119:15: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:119:23: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:119:46: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:130:9: warning: Declare and assign separately to avoid masking return values. [SC2155]
scripts/inc.signapk.sh:133:14: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:133:22: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:134:3: warning: In POSIX sh, arithmetic for loops are not supported. [SC2039]
scripts/inc.signapk.sh:134:14: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:134:17: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:134:32: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:136:7: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:136:8: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:137:15: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:137:23: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:137:46: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:144:14: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:144:22: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:145:3: warning: In POSIX sh, arithmetic for loops are not supported. [SC2039]
scripts/inc.signapk.sh:145:14: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:145:17: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:145:32: note: $/${} is unnecessary on arithmetic variables. [SC2004]
scripts/inc.signapk.sh:147:7: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:147:8: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:148:15: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:148:23: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:148:46: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:174:8: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:232:14: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:237:9: warning: OPTtmp appears unused. Verify it or export it. [SC2034]
scripts/inc.signapk.sh:266:8: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:325:3: warning: Consider using ( subshell ) or 'cd foo||exit' instead. [SC2103]
scripts/inc.signapk.sh:332:10: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:335:15: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:335:23: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059]
scripts/inc.signapk.sh:336:14: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:337:13: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:337:14: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:337:19: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:339:12: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:339:13: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:339:18: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:339:31: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:340:12: note: Use $(..) instead of legacy `..`. [SC2006]
scripts/inc.signapk.sh:340:13: note: expr is antiquated. Consider rewriting this using $((..)), ${} or [[ ]]. [SC2003]
scripts/inc.signapk.sh:340:18: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:342:17: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:342:57: note: Consider using { cmd1; cmd2; } >> file instead of individual redirects. [SC2129]
scripts/inc.signapk.sh:344:17: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:346:17: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:359:5: warning: Quote this to prevent word splitting. [SC2046]
scripts/inc.signapk.sh:360:12: warning: Use "$@" (with quotes) to prevent whitespace problems. [SC2048]
scripts/inc.signapk.sh:370:16: warning: Quote this to prevent word splitting. [SC2046]
scripts/inc.signapk.sh:384:18: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:385:20: warning: Use "$@" (with quotes) to prevent whitespace problems. [SC2048]
scripts/inc.signapk.sh:387:20: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.signapk.sh:389:21: warning: name appears unused. Verify it or export it. [SC2034]
scripts/inc.signapk.sh:390:25: warning: codepath appears unused. Verify it or export it. [SC2034]
scripts/inc.signapk.sh:391:23: warning: system appears unused. Verify it or export it. [SC2034]
scripts/inc.signapk.sh:392:19: warning: ts appears unused. Verify it or export it. [SC2034]
scripts/inc.signapk.sh:393:24: warning: version appears unused. Verify it or export it. [SC2034]
scripts/inc.signapk.sh:403:14: warning: In POSIX sh, string indexing is not supported. [SC2039]
scripts/inc.signapk.sh:404:14: warning: In POSIX sh, string indexing is not supported. [SC2039]
scripts/inc.signapk.sh:405:18: warning: In POSIX sh, string indexing is not supported. [SC2039]
scripts/inc.signapk.sh:407:18: warning: In POSIX sh, string indexing is not supported. [SC2039]
scripts/inc.signapk.sh:424:15: note: Double quote to prevent globbing and word splitting. [SC2086]
scripts/inc.updatebinary.sh:2:6: warning: build is referenced but not assigned. [SC2154]
scripts/inc.updatebinary.sh:426:8: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:575:10: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:585:60: note: echo won't expand escape sequences. Consider printf. [SC2028]
scripts/inc.updatebinary.sh:585:65: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:853:10: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1075:6: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1078:34: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1078:95: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1079:34: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1079:95: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1081:104: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1081:167: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1082:104: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]
scripts/inc.updatebinary.sh:1082:167: note: Expressions don't expand in single quotes, use double quotes for that. [SC2016]

Reduce GApps packages size

With the introduction of multiple versions of the same app to support multiple screen densities the size of the packages grew a lot.
As already discussed we'll use the XZ compression algorithm to store the apps in the zip file as save a lot of space.

domain and changing projectpage to organizationpage

One thing I noticed is how long the URL for the download site is... We could register something like opengapps.cf for free and then forward the GitHub page to it.

Three things about this:

  1. Old domain would still redirect!
  2. Does require DNS but that can be free also (aka ClouDNS)
  3. Not as memorable as a .com but would still be a lot shorter and easier to remember than opengapps.github.io/opengapps

Any thoughts guys? @opengapps/general

Task List

  • Get Free Domain
  • Forward free domain to GitHub Pages
  • Look into a "Paid" domain like .com.org
  • Forward "Paid" domain to GitHub Pages
  • Update README to point to new domain
  • Move Project page to Organization Page
  • Redirect http://opengapps.org/opengapps to http://opengapps.org
  • Close 'OLD' gh-pages branch -> there are too many links to this old URL. We cannot abandon it for a long time.

Open GApps for Stock - merge with @RapperSkull's GApps for Stock

When TKruzze decided to leave the scene for a while, a lot of GApps packages rose, all very similar to the original PA GApps. Since I'm contributing (a little bit) to the Open GApps project, I thought that would be nice to merge two GApps packages with two different aims but very similar code.
To merge the two projects there are some steps to perform:

  1. Rewrite the makefile to make it more dynamic: replace the single parameter with multiple parameters specifying the GApps type (normal, for stock, or all), the api version (19, 21, 22 or all), the packages to build (stock, full, mini, micro, nano, pico, aroma and all) and the architectures (arm, arm64, x86, x86_64 or all).
  2. Introduce the new "for stock" modifier, similar to the API version one (a lot of changes happen when building for KitKat).
  3. Merge some more removals (found in some ROMs that also includes GApps).

Some of the changes that should be made when building "for stock" consist in:

  1. Remove the already installed GApps check, or better allow the installation only if GApps are already installed but no g.prop file is found or it's Open GApps
  2. Remove the check for potential ROM conflicts
  3. Always install WebViewGoogle by default
  4. Remove /system/lib/libchrome.*.so when installing Chrome

Automate more keyword selection, and processing multi-dpi packages

Best would be to remove the special folders for GMSCore, PlayGames and Messenger, and move everyting to GApps/appname/[dpi/]...

Then the packaging scripts could be simplified (since the first part of the folder will always be known), packaging multi dpi apps could be simplified. Also generating the gapps-remove.txt would become more easy.

Also the content generation of update-binary and install.data related to dpi information could be simplified.
And the scripts itself in update-binary and install.data could be simplified, since keywords would be more easy to identify all the 'appname' folder by themselves (like it already is for the regular apps at this moment)

Architecture detection

In a2a00c3, device architecture detection changed to
device_architecture=$(file_getprop $b_prop ro.product.cpu.abilist)
from
devarch=$(file_getprop $b_prop ro.product.cpu.abi).
This change results in Incompatible Device Detected on devices that were compatible before.
I do think that ro.product.cpu.abi is much more common, or that additional check for empty value should be added, something like:
device_architecture="${device_architecture:-$((file_getprop $b_prop ro.product.cpu.abi)}:"

Get 4.4 working

Conflicts between libraries have been identified.
Biggest clash is between Google Search App, Hangouts, Google+, Photos and YouTube.
Chosen is to put Search then on /system and all the other apps (for now) on /data with some ugly hacks.

Google Plus and Hangouts conflict

Vi: "Trên android kitkat, google plus và hangouts xung đột thư viện khiến cho khi cài đặt cùng lúc 2 ứng dụng này. ứng dụng sau cùng sẽ không thể hoạt động."

En: on android kitkat, google plus and hangouts library conflict caused when install 2 applications at the same time, g+ or hangouts will be force close.

P/s: Sorry for my bad english

Add extra (optional) packages:

/system/app/FitnessPrebuilt -> Should be put in Full+Stock already

Add extra options (but not enabled by default)
as found on Nexus:
/system/priv-app/AndroidForWork
/system/app/DMAgent (=Device Policy)
/system/priv-app/GoogleDialer (unsure, and only if we can get it to work)
/system/priv-app/TagGoogle (google NFC, com.google.android.tag)

possibly useful, but not part of the stock Nexus:
Translate
Inbox
Photos -> /system/app/Photos
Googles Goggles
Hangouts Dialer

keyboards (are normally found on Nexus):
/system/app/GoogleHindiIME
/system/app/GoogleJapaneseInput
/system/app/GooglePinyinIME
/system/app/iWnnIME
/system/app/KoreanIME

For the future in Android M:
com.google.android.apps.gcs - > /system/priv-app/GCS (google connectivity services)
com.google.android.apps.tycho -> /system/app/Tycho (project fi)

Collecting a big set of DeviceIDs to download APKs

Since the Google Play Store only allows us to download APKs of architectures and DPIs of which we have a device, I have the following proposal:
NEW STRATEGY:

  • We will use a Google Account (not a Gmail account) per device
  • Being able to keep control of the mailbox associated with the account, the deviceID supplier cannot hijack it
  • A user with a new device to be added willl be given the details to log in and associate the device with the Google Account
  • After logging in, the user will can send us the GSF ID using https://play.google.com/store/apps/details?id=com.redphx.deviceid
  • The Google Account will be changed to two-factor authentication, an app-password will be supplied to all Packagers.
  • The app-password and deviceID information will be shared to the Packagers via Google Sheets spreadsheet.
  • This deviceID can now be used when using the APK download utility by the Packagers @ https://chrome.google.com/webstore/detail/apk-downloader/cgihflhdpokeobcfimliamffejfnmfii/related?hl=en&gl=VN in combination with the authentication token

Advantages:

  • Nobody needs to know someone's password
  • Packagers can download for all architectures/DPIs (and SDKs) using the extension.
  • The accounts stay after initialisation in our (read: my) hands to ensure integrity and safety.

OLD STRATEGY:

Advantages:

  • Nobody needs to know someone's password
  • Packagers can download for all architectures/DPIs (and SDKs) using the extension.
  • A DeviceID in itself is worthless, so is no problem to share via the repository.

AROMA is broken

Aroma build is broken since we have implemented the compression method.

Suspicion is that there might be lack of RAM because AROMA also needs some memory, while extracting whole gmscore to /tmp/ (which is also fully in RAM) takes e.g. 150MiB.

so, you get a big pressure on RAM, which might even be the problem for some people who are having trouble installing the current 'stock' package:

  • Aroma takes RAM
  • TWRP takes RAM
  • a .xz file gets unzipped into /tmp/ which takes RAM
  • the .xz gets further extracted (150MiB) into /tmp/ which takes RAM
  • the extraction process of the xz-file also takes RAM

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.