Init foss repo
* update.sh was adapted from phhusson's version. JNI is now supported properly by extracting them into the app's own lib directory, and apks are prohibited from being modified by the AOSP build scripts. * Bromite SystemWebView is currently disabled due to its lack of Android T support.
This commit is contained in:
commit
03d92c9143
|
@ -0,0 +1,4 @@
|
|||
Android.mk
|
||||
apps.mk
|
||||
bin/
|
||||
lib/
|
|
@ -0,0 +1,3 @@
|
|||
-include vendor/foss/apps.mk
|
||||
PRODUCT_PACKAGE_OVERLAYS += vendor/foss/overlay
|
||||
PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS+= vendor/foss/overlay
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2015 The Android Open Source Project
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<webviewproviders>
|
||||
<!-- Bromite -->
|
||||
<webviewprovider availableByDefault="true" description="Bromite SystemWebView" packageName="org.bromite.webview">
|
||||
<signature>MIIDbTCCAlWgAwIBAgIEHcsmjjANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJERTEQMA4GA1UECBMHVW5rbm93bjEPMA0GA1UEBxMGQmVybGluMRAwDgYDVQQKEwdCcm9taXRlMRAwDgYDVQQLEwdCcm9taXRlMRAwDgYDVQQDEwdjc2FnYW41MCAXDTE4MDExOTA3MjE1N1oYDzIwNjgwMTA3MDcyMTU3WjBmMQswCQYDVQQGEwJERTEQMA4GA1UECBMHVW5rbm93bjEPMA0GA1UEBxMGQmVybGluMRAwDgYDVQQKEwdCcm9taXRlMRAwDgYDVQQLEwdCcm9taXRlMRAwDgYDVQQDEwdjc2FnYW41MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtakjGj0eTavbBB2vWXj8KBixWn4zgXAKc+yGFu3SLEGF1VB5aJWwcMHxVI55yH/8M2eNnJP0BkSidfKgPVcm1sk/GrNEs9uk5sWod9byO5M5QWQmGP2REeTd6J0BVVVaMp2MZnqeR3Su3pwFzrSwTqIGyf8dkPSEz7ifj792+EeRNrov4oRQK7lIfqInzwc4d34wU069Lrw6m7J7HM0KbRYISsWMiYj025Qg+dTrtdWt7jbdcj7htW0eYyJoLd90+s43RWnOpENmWpcWv1EVPxUD4mCdV9idYwoHRIESpSu9IWvqDZp1VoRc43nLgsNfNBwmYdTkIaPiz1m7TBcr7QIDAQABoyEwHzAdBgNVHQ4EFgQUuWoGd7W7wMyQ1pOdjiMv10YHTR0wDQYJKoZIhvcNAQELBQADggEBAA7iw6eKz+T8HIpKDoDcX1Ywjn9JUzuCFu20LnsLzreO/Pog1xErYjdLAS7LTZokfbAnitBskO9QhV9BYkDiM0Qr5v2/HsJTtxa1mz9ywCcI36jblMyuXFj8tuwQI9/t9i+Fc3+bOFBV3t7djPo9qX1dIK0lZ6s8HcIhaCNdqm65fH+nWhC/H9djqC6qOtrkTiACKEcHQ4a/5dfROU0q0M4bS4YuiaAQWgjiGbik4LrZ8wZX1aqJCLt0Hs7MzXyyf0cRSO11FIOViHwzh6WTZGufq2J3YBFXPond8kLxkKL3LNezbi5yTcecxsbKQ6OS46CnIKcy/M8asSreLpoCDvw=</signature>
|
||||
</webviewprovider>
|
||||
<webviewprovider description="Chrome Stable" packageName="com.android.chrome" availableByDefault="true">
|
||||
<signature>MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK</signature>
|
||||
</webviewprovider>
|
||||
<webviewprovider description="Chrome Beta" packageName="com.chrome.beta">
|
||||
<signature>MIIDwzCCAqugAwIBAgIJAOoj9MXoVhH6MA0GCSqGSIb3DQEBBQUAMHgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEUMBIGA1UEAwwLY2hyb21lX2JldGEwHhcNMTYwMjI5MTUxNTIzWhcNNDMwNzE3MTUxNTIzWjB4MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEUMBIGA1UECgwLR29vZ2xlIEluYy4xEDAOBgNVBAsMB0FuZHJvaWQxFDASBgNVBAMMC2Nocm9tZV9iZXRhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo/wW27nRxVqGbFOyXr8jtv2pc2Ke8XMr6Sfs+3JK2licVaAljGFpLtWH4wUdb50w/QQSPALNLSSyuK/94rtp5Jjs4RSJI+whuewV/R6El+mFXBO3Ek5/op4UrOsR91IM4emvS67Ji2u8gp5EmttVgJtllFZCbtZLPmKuTaOkOB+EdWIxrYiHVEEaAcQpEHa9UgWUZ0bMfPj8j3F0w+Ak2ttmTjoFGLaZjuBAYwfdctN1b0sdLT9Lif45kMCb8QwPp0F9/ozs0rrTc+I6vnTS8kfFQfk7GIE4Hgm+cYQEHkIA6gLJxUVWvPZGdulAZw7wPt/neOkazHNZPcV4pYuNLQIDAQABo1AwTjAdBgNVHQ4EFgQU5t7dhcZfOSixRsiJ1E46JhzPlwowHwYDVR0jBBgwFoAU5t7dhcZfOSixRsiJ1E46JhzPlwowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZO2jB8P1d8ki3KZILvp27a2VM3DInlp8I8UgG3gh7nBQfTrnZr5M1PL8eFHqX7MEvAiGCMTcrPklEhjtcHK/c7BcdeCWq6oL56UK3JTl33RxJcjmjrz3e3VI6ehRSm1feNAkMD0Nr2RWr2LCYheAEmwTPtluLOJS+i7WhnXJzBtg5UpUFEbdFYenqUbDzya+cUVp0197k7hUTs8/Hxs0wf79o/TZXzTBq9eYQkiITonRN8+5QCBl1XmZKV0IHkzGFES1RP+fTiZpIjZT+W4tasHgs9QTTks4CCpyHBAy+uy7tApe1AxCzihgecCfUN1hWIltKwGZS6EE0bu0OXPzaQ==</signature>
|
||||
</webviewprovider>
|
||||
<webviewprovider description="Chrome Dev" packageName="com.chrome.dev">
|
||||
<signature>MIIDwTCCAqmgAwIBAgIJAOSN+O0cdii5MA0GCSqGSIb3DQEBBQUAMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDETMBEGA1UEAwwKY2hyb21lX2RldjAeFw0xNjAyMjkxNzUwMDdaFw00MzA3MTcxNzUwMDdaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDETMBEGA1UEAwwKY2hyb21lX2RldjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOYPj6Y9rVt8xizSHDYjDEkDfFZAgSiZ9T6tevkQXsFyfaq3Gk3h2qssi29G6cTPJ2VXFKlVB71wSXv5p9/LEcDQPWQiO3Q2cLmgUXxyhJWXI3g96tPAhZQX2q6SC37ZQdiBR/raMO70DAkvCyBGtNplsvutzSE3oZ7LYfzB8vTbe7zCh3fDYSS/7xb3ZVvFqydHS40uVq1qqg1S80Pge7tW3pDGsPMZN7yA4yfmsvA1rbHm9N8t3Rc9hqzh6OxNAAgRB535YcsWL7iF+mpdFILXk3jLYT0nMvMnB83rsdgnRREjlGQYHl2mh8+6CqujsW/eICDq/LR6BYDyqHhk0ECAwEAAaNQME4wHQYDVR0OBBYEFKzsl07JglgpbeYDYGqsgqRDo+01MB8GA1UdIwQYMBaAFKzsl07JglgpbeYDYGqsgqRDo+01MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBACka6SFF6xAcj8L8O6R36++E09DTiGZEjvKT8eIycgcQQ+p1WUmPb6M2EJpN6zvvSE62ussmXdzf8rIyc0JXA8jbViZt62Y39epNENFxPTLN9QzXlT+w8AW73Ka3cnbOuL5EgoDl8fM79WVlARY3X+wB/jGNrkiGIdRm2IZIeAodWgC2mtXMiferyYBKz2/F2bhnU6DwgCbegS8trFjEWviijWdJ+lBdobn7LRc3orZCtHl8UyvRDi7cye3sK9y3BM39k0g20F21wTNHAonnvL6zbuNgpd+UEsVxDpOeWrEdBFN7Md0CI2wnu8eA8ljJD45v0WWMEoxsIi131g5piNM=</signature>
|
||||
</webviewprovider>
|
||||
<webviewprovider description="Chrome Canary" packageName="com.chrome.canary">
|
||||
<signature>MIIDxzCCAq+gAwIBAgIJAML7APITsgV7MA0GCSqGSIb3DQEBBQUAMHoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEWMBQGA1UEAwwNY2hyb21lX2NhbmFyeTAeFw0xNjAyMjkxOTA5MDdaFw00MzA3MTcxOTA5MDdaMHoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEWMBQGA1UEAwwNY2hyb21lX2NhbmFyeTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANXfeAoZlr0ya1HBzIfAz/nLLjpPJeAPvuX5dueaxmiQgv2hNG22acriFuiiJI6TU0t8AIVJD5Ifbc4OOuA0zeFhdzWWGnmTRH6x27WI7bzOKnAqOvv21ZBmE9i8Vo++K13xWdTs3qVn1bn9oUONxFu0wKDzXYZhoj1Jom0RZGjXm16xuPlEuOzMcjiNBDoYuxPAXkMcK/G1gP4P4nAV8Rd/GGIjKRS/SUtcShhoAMOQhs4WIEkUrvEVRwhBDIbpM87oFbCVdBH38r0XS6F6CdhPJsKFhoEfq4c01HZqNmDpCPA8AAcCuSWqmXoTIqs7OqkWgduE2bInbWU7WMaTl+kCAwEAAaNQME4wHQYDVR0OBBYEFB/AsC4iPAqaLoNytNSx29qByI7+MB8GA1UdIwQYMBaAFB/AsC4iPAqaLoNytNSx29qByI7+MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAMb2Td3ro/+MGVnCPAbwBSOZMVLUKGqt6zr8CShW9mtFHnmy29EaWSYYAj1M4+6Vpkq85NsgBEck7rnUjV8A3Q0NKdTys1KRKJqVvQRBN6SwqQenSf/abxQCa8Z+69rh+3BkIU1HLtu5lrMDZwon5H91L5mpORn6vItd20uW132lwSDeUEW2CHslTrodoFuTUcSUlRiq/URfUH3baO1QHXkxpQwrBPKL5deJfcZnxh5MAtAGSQL7gHvayEFlDppETXdDO7vgGTH2dEK2TjKWALbGiKkxSqjRyTNt4/FOj10TqNRdUamj+ydVJgzGQ8bki4Vc6NnKm/r4asusxapkVR4=</signature>
|
||||
</webviewprovider>
|
||||
<webviewprovider description="Google WebView" packageName="com.google.android.webview" availableByDefault="true">
|
||||
<signature>MIIDuzCCAqOgAwIBAgIJANi6DgBQG4ZTMA0GCSqGSIb3DQEBBQUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEQMA4GA1UEAwwHd2VidmlldzAeFw0xNDA4MDgyMzIwMjBaFw00MTEyMjQyMzIwMjBaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEQMA4GA1UEAwwHd2VidmlldzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbtaFX0r5aZJMAbPVMAgK1ZZ29dTn91VsGxXv2hqrQo7IpqEy2JmPvPnoMsSiuTAe+UcQy8oKDQ2aYVSAd1DGIy+nSRyFTt3LSIAdwSBkB1qT4a+OqkpsR6bSNXQXQ18lCQu9gREY3h3QlYBQAyzRxw4hRGlrXAzuSz1Ec4W+6x4nLG5DG61MAMR8ClF9XSqbmGB3kyZ70A0X9OPYYxiMWP1ExaYvpaVqjyZZcrPwr+vtW8oCuGBUtHpBUH3OoG+9s2YMcgLG7vCK9awKDqlPcJSpIAAj6uGs4gORmkqxZRMskLSTWbhP4p+3Ap8jYzTVB6Y1/DMVmYTWRMcPW0macCAwEAAaNQME4wHQYDVR0OBBYEFJ6bAR6/QVm4w9LRSGQiaR5Rhp3TMB8GA1UdIwQYMBaAFJ6bAR6/QVm4w9LRSGQiaR5Rhp3TMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAEQu8QiVxax7/diEiJrgKE1LwdXsIygJK/KnaKdnYEkAQpeu/QmrLiycm+OFbL1qHJIB7OuI/PQBUtcaNSiJSCVgtwtEbZWWIdsynqG/Nf4aGOndXegSQNRH54M05sRHLoeRycPrY7xQlEwGikNFR76+5UdwFBQI3Gn22g6puJnVukQm/wXQ+ajoiS4QclrNlixoDQsZ4STLH4+Wju2wIWKFFArIhVEIlbamq+p6BghuzH3aIz/Fy0YTQKi7SA+0fuNeCaqlSm5pYSt6p5CH89y1Fr+wFc5r3iLRnUwRcy08ESC7bZJnxV3d/YQ5valTxBbzku/dQbXVj/xg69H8l8M=</signature>
|
||||
</webviewprovider>
|
||||
<!-- The default WebView implementation -->
|
||||
<webviewprovider description="AOSP WebView" packageName="com.android.webview" availableByDefault="true" isFallback="true" />
|
||||
</webviewproviders>
|
|
@ -0,0 +1,185 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
repo="https://f-droid.org/repo/"
|
||||
prebuilt_libs=()
|
||||
|
||||
contains() {
|
||||
local e match="$1"
|
||||
shift
|
||||
for e; do [[ "$e" == "$match" ]] && return 0; done
|
||||
return 1
|
||||
}
|
||||
|
||||
addPrebuiltJniModules() {
|
||||
local lib=""
|
||||
local app_mod=""
|
||||
for lib_mod_name in "${prebuilt_libs[@]}"; do
|
||||
lib="$(awk -F'__' '{ print $2 }' <<< "$lib_mod_name")"
|
||||
app_mod="$(awk -F'__' '{ print $1 }' <<< "$lib_mod_name")"
|
||||
cat >> Android.mk <<EOF
|
||||
include \$(CLEAR_VARS)
|
||||
LOCAL_MODULE := $lib_mod_name
|
||||
LOCAL_MODULE_STEM := $lib
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_SRC_FILES_arm := lib/armeabi-v7a/$lib
|
||||
LOCAL_SRC_FILES_arm64 := lib/arm64-v8a/$lib
|
||||
LOCAL_SRC_FILES_x86 := lib/x86/$lib
|
||||
LOCAL_SRC_FILES_x86_64 := lib/x86_64/$lib
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_CHECK_ELF_FILES := false
|
||||
LOCAL_PRODUCT_MODULE := true
|
||||
LOCAL_MODULE_PATH := \$(TARGET_OUT_PRODUCT)/app/$app_mod/lib/\$(TARGET_ARCH)/
|
||||
include \$(BUILD_PREBUILT)
|
||||
EOF
|
||||
done
|
||||
}
|
||||
|
||||
addJNI() {
|
||||
unzip -o bin/$1 'lib/*' || return 0
|
||||
local local_prebuilt_libs=()
|
||||
local libname=""
|
||||
while IFS= read -r line; do
|
||||
libname=$(echo -e "$line" | awk '{print $4}' | sed -E 's@lib/[^/]+/(.*)@\1@')
|
||||
[ -z "$libname" ] && continue
|
||||
# Prepend the app module name in the JNI libary module name
|
||||
# This will be used in addPrebuiltJniModules to install the JNI
|
||||
# to the app's private lib directory
|
||||
libname="$2__$libname"
|
||||
contains "$libname" "${local_prebuilt_libs[@]}" && continue
|
||||
local_prebuilt_libs+=("${libname}")
|
||||
done <<< "$(unzip -l -qq bin/$1 'lib/*')"
|
||||
if [[ ! -z "$local_prebuilt_libs" ]]; then
|
||||
addition+="LOCAL_REQUIRED_MODULES := ${local_prebuilt_libs[@]}"
|
||||
prebuilt_libs+=("${local_prebuilt_libs[@]}")
|
||||
fi
|
||||
}
|
||||
|
||||
addCopy() {
|
||||
addition=""
|
||||
if [ "$2" == com.google.android.gms ] || [ "$2" == com.android.vending ] ;then
|
||||
addition="LOCAL_PRIVILEGED_MODULE := true"
|
||||
else
|
||||
# Only add JNI for non-priv-apps (because addJNI and addPrebuiltJniModules do not support priv-app properly)
|
||||
addJNI $1 $2
|
||||
fi
|
||||
|
||||
cat >> Android.mk <<EOF
|
||||
include \$(CLEAR_VARS)
|
||||
LOCAL_MODULE := $2
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_SRC_FILES := bin/$1
|
||||
LOCAL_MODULE_CLASS := APPS
|
||||
LOCAL_CERTIFICATE := PRESIGNED
|
||||
LOCAL_OVERRIDES_PACKAGES := $3
|
||||
LOCAL_PRODUCT_MODULE := true
|
||||
LOCAL_REPLACE_PREBUILT_APK_INSTALLED := \$(LOCAL_PATH)/bin/$1
|
||||
$addition
|
||||
$(aapt d badging "bin/$1" |sed -nE "s/uses-library-not-required:'(.*)'/LOCAL_OPTIONAL_USES_LIBRARIES += \1/p")
|
||||
$(aapt d badging "bin/$1" |sed -nE "s/uses-library:'(.*)'/LOCAL_USES_LIBRARIES += \1/p")
|
||||
include \$(BUILD_PREBUILT)
|
||||
EOF
|
||||
echo -e "\t$2 \\" >> apps.mk
|
||||
}
|
||||
|
||||
addMultiarch() {
|
||||
addition=""
|
||||
# Use the arm64 apk as an example to generate LOCAL_PREBUILT_JNI_LIBS only
|
||||
addJNI $1_$2_arm64.apk $1
|
||||
# Extract JNIs for all the other architectures as well
|
||||
for apk in bin/$1_$2_*.apk; do
|
||||
[[ "$apk" == bin/$1_$2_arm64.apk ]] && continue
|
||||
unzip -o $apk 'lib/*' || continue
|
||||
done
|
||||
cat >> Android.mk <<EOF
|
||||
include \$(CLEAR_VARS)
|
||||
LOCAL_MODULE := $1
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_CLASS := APPS
|
||||
LOCAL_CERTIFICATE := PRESIGNED
|
||||
LOCAL_OVERRIDES_PACKAGES := $3
|
||||
LOCAL_PRODUCT_MODULE := true
|
||||
LOCAL_SRC_FILES := bin/\$(LOCAL_MODULE)_$2_\$(my_src_arch).apk
|
||||
LOCAL_REPLACE_PREBUILT_APK_INSTALLED := \$(LOCAL_PATH)/bin/\$(LOCAL_MODULE)_$2_\$(my_src_arch).apk
|
||||
$addition
|
||||
$(aapt d badging "bin/$1_$2_arm64.apk" |sed -nE "s/uses-library-not-required:'(.*)'/LOCAL_OPTIONAL_USES_LIBRARIES += \1/p")
|
||||
$(aapt d badging "bin/$1_$2_arm64.apk" |sed -nE "s/uses-library:'(.*)'/LOCAL_USES_LIBRARIES += \1/p")
|
||||
include \$(BUILD_PREBUILT)
|
||||
EOF
|
||||
echo -e "\t$1 \\" >> apps.mk
|
||||
}
|
||||
|
||||
rm -Rf apps.mk lib
|
||||
cat > Android.mk <<EOF
|
||||
LOCAL_PATH := \$(my-dir)
|
||||
my_archs := arm arm64 x86 x86_64
|
||||
my_src_arch := \$(call get-prebuilt-src-arch, \$(my_archs))
|
||||
EOF
|
||||
echo -e 'PRODUCT_PACKAGES += \\' > apps.mk
|
||||
|
||||
mkdir -p bin
|
||||
|
||||
#downloadFromFdroid packageName overrides
|
||||
downloadFromFdroid() {
|
||||
mkdir -p tmp
|
||||
[ "$oldRepo" != "$repo" ] && rm -f tmp/index.xml
|
||||
oldRepo="$repo"
|
||||
if [ ! -f tmp/index.xml ];then
|
||||
#TODO: Check security keys
|
||||
wget --connect-timeout=10 $repo/index.jar -O tmp/index.jar
|
||||
unzip -p tmp/index.jar index.xml > tmp/index.xml
|
||||
fi
|
||||
marketversion="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]' -v ./marketversion tmp/index.xml || true)"
|
||||
nativecodes="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[version="'"$marketversion"'"]' -v nativecode -o ' ' tmp/index.xml || true)"
|
||||
|
||||
# If packages have separate nativecodes
|
||||
if echo "$nativecodes" |grep -q arm && ! echo "$nativecodes" |grep -q ',' ;then
|
||||
for native in $nativecodes;do
|
||||
newNative="$(echo $native |sed -e s/arm64-v8a/arm64/g -e s/armeabi-v7a/arm/g)"
|
||||
apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[version="'"$marketversion"'" and nativecode="'"$native"'"]' -v ./apkname tmp/index.xml)"
|
||||
localName="${1}_${marketversion}_${newNative}.apk"
|
||||
if [ ! -f bin/$localName ];then
|
||||
while ! wget --connect-timeout=10 $repo/$apk -O bin/$localName;do sleep 1;done
|
||||
fi
|
||||
done
|
||||
addMultiarch $1 $marketversion "$2"
|
||||
else
|
||||
apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[version="'"$marketversion"'"]' -v ./apkname tmp/index.xml || xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[1]' -v ./apkname tmp/index.xml)"
|
||||
if [ ! -f bin/$apk ];then
|
||||
while ! wget --connect-timeout=10 $repo/$apk -O bin/$apk;do sleep 1;done
|
||||
fi
|
||||
addCopy $apk $1 "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
# Web browser
|
||||
downloadFromFdroid org.mozilla.fennec_fdroid "Browser2 QuickSearchBox"
|
||||
# Calendar
|
||||
downloadFromFdroid ws.xsoh.etar Calendar
|
||||
# Pdf viewer
|
||||
downloadFromFdroid com.artifex.mupdf.viewer.app
|
||||
# Play Store download
|
||||
downloadFromFdroid com.aurora.store
|
||||
# Mail client
|
||||
downloadFromFdroid com.fsck.k9 "Email"
|
||||
|
||||
downloadFromFdroid com.simplemobiletools.gallery.pro "Photos Gallery Gallery2"
|
||||
|
||||
downloadFromFdroid com.aurora.adroid
|
||||
|
||||
repo=https://microg.org/fdroid/repo/
|
||||
downloadFromFdroid com.google.android.gms
|
||||
downloadFromFdroid com.google.android.gsf
|
||||
downloadFromFdroid com.android.vending
|
||||
|
||||
repo=https://fdroid.bromite.org/fdroid/repo/
|
||||
downloadFromFdroid org.bromite.bromite "Browser2 QuickSearchBox"
|
||||
# Bromite SystemWebview temporarily disabled due to low targetSDK
|
||||
# TODO: Re-enable when they upgrade to API 33
|
||||
#downloadFromFdroid org.bromite.webview "WebView webview"
|
||||
|
||||
addPrebuiltJniModules
|
||||
|
||||
echo >> apps.mk
|
||||
|
||||
rm -Rf tmp
|
Loading…
Reference in New Issue