Merge remote-tracking branch 'github/cm-13.0' into replicant-6.0

remove prebuilt terminal (built-in terminal app can be activated in dev settings)

Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>

Conflicts:
	CHANGELOG.mkdn
	CONTRIBUTORS.mkdn
	config/cdma.mk
	config/cm_audio.mk
	config/common.mk
	config/common_full.mk
	config/common_full_phone.mk
	config/gsm.mk
	config/themes_common.mk
	get-prebuilts
	overlay/common/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg
	overlay/common/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.jpg
	overlay/common/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.jpg
	overlay/common/frameworks/base/core/res/res/drawable-xhdpi/default_wallpaper.jpg
	overlay/common/frameworks/base/core/res/res/values/config.xml
	overlay/common/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
	prebuilt/common/bootanimation/1080.zip
	prebuilt/common/bootanimation/1200.zip
	prebuilt/common/bootanimation/240.zip
	prebuilt/common/bootanimation/320.zip
	prebuilt/common/bootanimation/360.zip
	prebuilt/common/bootanimation/480.zip
	prebuilt/common/bootanimation/540.zip
	prebuilt/common/bootanimation/600.zip
	prebuilt/common/bootanimation/720.zip
	prebuilt/common/bootanimation/768.zip
	prebuilt/common/bootanimation/800.zip
	prebuilt/common/etc/apns-conf.xml
	sepolicy/mac_permissions.xml
	sepolicy/sepolicy.mk
	vendorsetup.sh

Change-Id: I4fc2a5b00721cae8b3a36f33c36f006142bad44f
This commit is contained in:
Wolfgang Wiedmeyer 2015-12-17 18:24:03 +01:00
commit 71a01dce17
179 changed files with 23812 additions and 2245 deletions

View File

@ -183,6 +183,7 @@ CHANGELOG (notable new features)
---------
### 10.1.3
* Common: CyanogenMod Account
* Common: Privacy Guard
* Common: Dialer blacklists
* Common: Wake-on-Home
@ -190,6 +191,12 @@ CHANGELOG (notable new features)
* Common: Profile improvements
* Various small bugfixes, global and device-specific
### 10.1.2
* Master Key #2 fix
### 10.1.1
* Master Key #1 fix
### 10.1.0
* Common: Android 4.2.2 (Google)
* Common: cLock Lockscreen and Homescreen Widget
@ -377,7 +384,7 @@ CHANGELOG (notable new features)
* Common: TI wl12xx FM radio reverse engineering - Michael A. Reid
* Common: Tablet tweaks - Sven Dawitz
* Common: Revamped CMStats - Chris Soyars
* Common: Improved RTL text support and fonts - Eyad Aboulouz, Eran Mizrahi,
* Common: Improved RTL text support and fonts - Eyad Aboulouz, Eran Mizrahi,
* Espresso/Legend: Enabled native WiFi tethering - Cyanogen, OMAPZoom.org
* Legend/Liberty/Buzz/Click: Enabled FM Radio - Alexander Hofbauer (libaudio patch)
* Z71: Enabled MPEG4/AAC video recording - arcee
@ -392,164 +399,3 @@ CHANGELOG (notable new features)
* Supersonic: WiMAX support - HTC, Shinzul, toastcfh, shift, #teamwin, Cyanogen, Joey Conway
* Supersonic: HDMI mirror support: #teamwin
* ONE: Enabled native WiFi tethering - arcee
### 6.1.3
* Ace: Fix issue with some BT Headset
### 6.1.2
* Ace: Kernel to 2.6.32.27 and some performance tweaks
### 6.1.1
* Common: Add rotary lockscreen - Kmobs/Robert Burns
* Common: Updated translations - (everyone)
* Common: Push update notificatiosn - Chris Soyars
* Common: Fix camera sounds - CAF/Cyanogen/mtwebster
* N1/DS/Supersonic/Bravo(c): Kernel performance tweaks and fixes (various)
* N1: Update build fingerprint
* Vision: Fix MMS over WiFi calling - Zinx
* Vision: Add console=null to kernel command line - Adam Tygart
* Vision: Kernel to 2.6.32.27 and some performance tweaks
* Droid: FRG83D fingerprint, translations, camera, torch fixes
### 6.1.0
* Common: Update to Android 2.2.1
* Common: Various bugfixes from AOSP and CodeAurora
* Common: ADWLauncher 1.3.3 - Ander Webbs
* Common: Configurable audio focus for music app - Jonas Larsson
* Common: APN cleanup (fixes many issues with GPS and MMS) - Cyanogen
* Common: Use ARMv6 optimizations for DS/Hero targets - Ninpo
* Common: AudioDSP updates - Antti S. Lankila
* Common: Status bar themes - Michael Webster
* Common: Email app updates** - Michael Webster
* Common: Selected kernel optimizations - Kernelzilla
* Common: EMMC support - Koush
* Common: Camcorder touch-to-focus - Cyanogen
* Common: Notification "quiet hours" - Evan Charlton
* Common; Superuser 2.3.6 - Adam Shanks (ChainsDD)
* Common: Camera/camcorder continuous autofocus - Cyanogen
* Common: Camera option sliders - Cyanogen
* Common: Control locking of MMS app in memory - Julian J. M
* Common: Kill foreground app by long-pressing back - Evan Charlton
* Common: New AppWidgetPicker dialog - boombuler@XDA
* Common: FileManager app - OpenIntents (graphics update from Fitsnugly)
* Common: Anonymous install statistics gathering - Chris Soyars
* Common: Stable shot camera mode - Cyanogen
* Common: Dual-mode snooze (long press dismiss) - Evan Charlton
* Common: Compose SMS/MMS via search button long press - Wes Garner
* Common: Notification category support - Pedlar
* Common: Galaxy S style power widget in notification bar - Pedlar
* Common: Autodetect if we should use /cache for system dex files - Kali-
* Common: Quick PIN unlock - gsarrica
* Common: Increase performance of Gallery3D caching system - Androbot
* Common: Gallery3D bugfixes and improvements - CodeAurora
* Common: Gallery3D highres patches - Petar Šegina
* Common: Skia performance enhancements - CodeAurora
* Common: APN list update - Paul Weiss
* Common: Fix AGPS issues on all platforms
* Common: Ability to customize location to save attachments in MMS - Wes Garner
* Common: Dismiss notifications by swiping - Evan Charlton
* Common: Enabled Sound Recorder app
* Common: Bluetooth OBEX performance boost - Sony
* Common: Updated Terminal Emulator app - Jack Palevich
* Common: Updated headset drawables - blunden
* Common: Optional overscrolling - Google, arcee, Robert Burns
* Common: Messaging/Phone sliders on lockscreen - Rodolfo Hurtado
* Common: Lockscreen gestures - Michael Webster
* Common: Camera bugfixes (mostly for Droid) - Michael Webster
* Common: Bluetooth FTP server profile - CodeAurora
* Common: New wallpapers - Prash
* Common: Super duper unified flashlights - Michael Webster
* Common: Launch applications via DeskClock - Evan Charlton
* N1/Bravo/Incredible/Supersonic/Vision/Ace: FM Radio support - MIUI - http://miui.com (graphics from Fitsnugly, HaXzAmaTiC, and blunden - bugfixes and extra features from Cyanogen, Zinx, mtwebster, and Wysie))
* N1/DS/Bravo(c)/Supersonic - Unified kernel (Cyanogen, toastcfh, Kali-, defer, Zinx, ezterry, Pershoot, and others)
* N1: Increased camera performance - Charan Singh
* N1: Enhanced battery driver - Roger Podacter, theloginwithnoname
* DS: Updated hardware drivers from official release
* DS: CompCache sizes can be adjusted through CMParts - Wes Garner
* DS: Removed bootloader/radio asserts - GOOD LUCK
* Supersonic - Kernel 2.6.34 courtesy of Toast and Madcoder
* Supersonic - Use WiMAX LED for notifications - Cyanogen
* Bravo: Kernel merged with cm-kernel - Kali, Defer
* Espresso: Improve backlights - Wes Garner
* Espresso/Legend/Liberty: Kernel OC patch - dumfuq (no OC by default)
* Espresso/Legend/Liberty: Using media libs from 2.2
* Espresso: Fixed Bluetooth SCO
* Legend/Supersonic: Proper notification light support - Alex Hofbauer
* Incredible: Enable torch app
* Incredible: Better internal storage support - Josh Stone
* Sholes: Enable Torch app - mtwebster
* Vision: Kernel 2.6.32.26, many improvements, 1.4GHz capable (coolbho3k), new ganeth driver (zinx)
* Vision: Quickeys implementation - Optedoblivion
* Vision: Insane GPS fix - Zinx
* Vision: LED enhancement - Pershoot
* Droid: Kernel 2.6.32.9
### 6.0.0
* ANDROID: Google, HTC, Qualcomm, and everybody else. We <3 U
* Common: ADWLauncher 1.1.4 - Ander Webbs
* Common: Music app enhancements - Eliot Stocker
* Common: Phone mod V.30.1 - cytown
* Common: WyContacts 1.2 - Wysie (port to Froyo by Sileht)
* Common: Superuser 2.3.3 - Adam Shanks (ChainsDD)
* Common: Deskclock extra settings - cyanogen, Michael Webster
* Common: MMS enhancements from Ruqqq, Takuo Kitame, jeagoss, temporalshadows
* Common: Improved RTL text rendering - David Kohen, Omri Baumer
* Common: Themable user interface elements - Wysie, bcrook, jeagoss
* Common: FLAC playback support - Kenny Root, Cyanogen, Glenn Maynard
* Common: Lockscreen enhancements - Wysie
* Common: Long-press home options - Wysie, bcrook
* Common: OpenVPN support - James Bottomley, Takuo Kitame
* Common: Br0tips - Kmobs
* Common: Browser incognito mode - Optedoblivion
* Common: Zipalign on install (if needed) + system dex cache to /cache - Cyanogen/Chris Soyars
* Common: Customizable Nexus LWP - Chris Soyars/Cyanogen
* Common: JIT toggle, configurable heapsize, compcache supprt - Cyanogen
* Common: Adjustable haptic feedback - Michael Webster
* Common: Custom wallpapers - jairomeo, prash, SatanR1
* Common: Battery percentage display - canadiancow, jeagoss
* Common: Trackball wake, trackball unlock, menu unlock - Jon Boekenoogen/Kmobs
* Common: Surfaceflinger night mode and effects - Jeff Sharkey, widget from Wysie
* Common: Reflow webviews on pinch option - Jonas Larsson
* Common: Enhanced accelerometer settings - Jonas Larsson
* Common: A2DP bugfixes - Glenn Maynard
* Common: Browser fullscreen mode and other enhancements - Wysie
* Common: Major build system enhancements by Chris Soyars & Koush
* Common: Long press volume buttons to skip songs - Jon Boekenoogen
* Common: Accelerated ARMv7 JPEG and PNG decoding - Qualcomm
* Common: Skia acceleration on ARMv7 - Qualcomm
* Common: Patch wrangling - Cyanogen, Chris Soyars, Koush, Kmobs
* Common: Bluetooth HID support - Erin Yueh @ 0xlab
* Common: Mouse pointer support - Chih-Wei Huang (android-x86)
* Common: Configurable install location + allow move any app to external storage - Cyanogen
* Common: Busybox and rsync Android ports from Dylex
* Common: nano, and libncurses are now built from source. - cvpcs
* Common: Dual camera support - Cyanogen
* Common: Support for HTC camera firmware with extra features - Cyanogen, Qualcomm
* Common: Other camera enhancements - Cyanogen
* Common: Customizable status bar - Michael Webster
* Common: Lockscreen music controls - Kmobs
* Common: "Roam Only" mode - jrgutier
* Common: Mobile data toggle for power widget - Drakaz
* Common: Exchange support fixes and volume rocker selection - Michael Webster
* Common: Lock home app in memory option - Cyanogen
* Common: Audio DSP support (equalizer, virtual room, compressor effects) - Antti S. Lankila
* Common: Customizable trackball notifications - Pedlar
* Common: Fully customizable power widget - piafinho
* Common: Zoom (except in 720p), flash, and other camera parameters can be changed while recording - Cyanogen, Qualcomm
* Common: New boot animation by 73v1n: http://www.youtube.com/watch?v=LnweaNTtb1k
* Common: Arabic language support - Aziz Huss, David Kohen
* Common: Torch app - Ben Buxton, Cyanogen
* Common: Browser color invert (save battery on AMOLED screens) - Qualcomm
* Common: Configurable brightness sensor - Jonas Larsson
* Common: Ad-Hoc wifi support - Petr Havlena
* Common: Audio focus enhancements - Jonas Larsson
* Common: Mail folder sync settings - Michael Webster
* N1/DS/Desire: Kernel 2.6.34.4 with Pershoot/Kmobs clock settings
* D/S: Camera reverse engineering by NCommander, Eddie Ringle, & Cyanogen
* D/S: Kernel patches for stability from Zinx Verituse
* D/S: MT3G Fender/1.2 support from Zinx Verituse
* D/S: Better media profiles - Charan Singh
* EVO: Kernel base from toastcfh, display patches from AssassinsLament and netarchy, backport of various features from Cyanogen (2.6.32)
* EVO: Sprint MMS fixes - Darchstar, toastcfh
* N1/Desire: True 720P encoding support - HTC, Cyanogen, Charan Singh, Enomther
* Desire: Kernel base from Kali- & Defer

View File

@ -6,109 +6,232 @@ A non-exhaustive list of people involved in Replicant is available at: http://re
CyanogenMod
===========
Maintainers (CyanogenMod 10.1):
Maintainers (CyanogenMod 13.0):
-----------------------------
* __Acer A700:__ pawitp
* __Amazon Kindle Fire 1st Edition:__ Hashcode
* __Amazon Kindle Fire 2nd Edition:__ Hashcode
* __Amazon Kindle Fire 1st Edition:__ Hashcode, FuZZ__
* __Amazon Kindle Fire 2nd Edition:__ Hashcode, FuZZ__
* __Asus EeePad Transformer (TF101):__ Bumble-Bee, EnJens
* __Asus EeePad Transformer Prime (TF201):__ Bumble-Bee, EnJens
* __Asus EeePad Transformer Pad TF300T:__ xplodwild
* __Asus EeePad Transformer Pad TF300T:__ chrmhoffmann
* __Asus EeePad Transformer Pad Infinity TF700T:__ dasunsrule32
* __Asus EeePad Transformer Pad TF701T:__ pershoot
* __B&N NookColor (encore):__ eyeballer, fattire, keyodi, krylon360, sluo (NookieDevs)
* __Google Galaxy Nexus:__ , bekit, Bumble-Bee, burnsra, KalimochoAz
* __Google Nexus S:__ burnsra, KalimochoAz
* __B&N Nook Tablet (acclaim):__ chrmhoffmann
* __Google Android One:__ varunchitre15
* __Google Galaxy Nexus:__ bekit, Bumble-Bee, burnsra, KalimochoAz, something15525
* __Google Nexus S:__ burnsra, KalimochoAz, klusark
* __Google Nexus 4:__ rmcc
* __Google Nexus 7:__ burnsra, fattire, nemith (GSM)
* __Google Nexus 5:__ fluxi
* __Google Nexus 6:__ dhacker29
* __Google Nexus 7:__ burnsra, fattire, Thömy, nemith, JoeyRizzoli (GSM)
* __Google Nexus 10:__ atinm, dalingrin, kornyone, gweedo767
* __Google Nexus Player:__ dhacker29, bmc08gt
* __HTC Desire 601(zara/zaracl):__ uberlaggydarwin, PatrikKT
* __HTC Desire 816:__ Grarak, v_superuser
* __HTC Desire Eye:__ uberlaggydarwin
* __HTC Droid DNA:__ crpalmer, invisiblek
* __HTC Droid Incredible 4G LTE:__ intervigil, mdmower
* __HTC Evo 4G LTE:__ kushdeck, toastcfh
* __HTC One (GSM):__ codeworkx, h8rift
* __HTC One (GSM):__ h8rift
* __HTC One M8:__ deck, h8rift, invisblek, toastcfh, u-ra, uberlaggydarwin
* __HTC One M8 Dual SIM (m8dug):__ bgcngm
* __HTC One M9 (hima):__ cyanogen, Rashed97, varunchitre15
* __HTC One Max (T6):__ flyhalf205, sbrissen
* __HTC One (Sprint):__ kushdeck, toastcfh
* __HTC One (Verizon):__ flyhalf205, mdmower
* __HTC One S:__ intervigil, xkonni
* __HTC One X:__ gorbi16, mdeejay, tbalden, Thömy
* __HTC One X+:__ Lloir, tombriden
* __HTC One XL:__ h8rift, intervigil
* __LG G2 (AT&T) (D800):__ arcee, Rashed97, Shelnutt2
* __LG G2 (T-Mobile) (D801):__ arcee, Rashed97, Shelnutt2
* __LG G2 (International) (D802):__ arcee, Rashed97, Shelnutt2
* __LG G2 (Canada) (D803):__ arcee, Rashed97, Shelnutt2
* __LG G2 (Sprint) (LS980):__ arcee, Rashed97, Shelnutt2
* __LG G2 (Verizon) (VS980):__ arcee, Rashed97, Shelnutt2
* __LG G3 (AT&T) (D850):__
* __LG G3 (T-Mobile) (D851):__ bryan2894
* __LG G3 (Canada) (D852):__ cuzz1369
* __LG G3 (International) (D855):__ finnq
* __LG G3 (Korea) (F400):__ TheNoFace
* __LG G3 (Sprint) (LS990):__
* __LG G3 (Verizon) (VS985):__ invisiblek
* __LG G4 (T-Mobile) (H811):__ codeworkx, genesixxbf3
* __LG G4 (International) (H815):__ codeworkx, genesixxbf3
* __LG Optimus LTE (P930) / LG Nitro HD {P935):__ arcee
* __LG Optimus LTE (SK Telecom) (SU640):__ arcee
* __Motorola Droid 3:__ dhacker29, Hashcode
* __Motorola Droid 4:__ dhacker29, Hashcode
* __Motorola Droid Bionic:__ dhacker29, Hashcode
* __Motorola Droid RAZR/RAZR Maxx (CDMA):__ dhacker29, Hashcode
* __Motorola RAZR/RAZR Maxx (GSM):__ dhacker29, Hashcode
* __Moto E 2014 (xt1021,xt1022,xt1023/condor):__ percy_g2, scritch007, ashwin007
* __Moto G 2014 (xt1063,xt1064,xt1068,xt1069/titan):__ LuK1337, luca020400
* __Moto G 4G (xt1039,xt1040,xt1042,xt1045/peregrine):__ somcom3x, intervigil
* __Moto G 4G 2014 (xt1072,xt1077,xt1078,xt1079/thea):__ LuK1337, luca020400
* __Moto X (xt1053,xt1055,xt1056,xt1058,xt1060/ghost):__ Hashcode, Skrilax_CZ
* __Moto X 2014 (victara):__ crpalmer, invisiblek
* __Motorola Moto MAXX(quark) :__ Skrilax_CZ
* __Motorola Atrix HD (MB886/qinara):__ epinter, Hashcode, Skrilax_CZ, nadlabak
* __Motorola Droid 3 (solana):__ Hashcode, stargo
* __Motorola Droid 4 (maserati):__ Hashcode, stargo
* __Motorola Droid Bionic (targa):__ Hashcode, stargo
* __Motorola Droid Maxx (obake-maxx):__ Skrilax_CZ
* __Motorola Droid RAZR/RAZR Maxx (spyder) (CDMA):__ Hashcode, stargo
* __Motorola Droid RAZR HD/HD Maxx (xt926/vanquish) (CDMA):__ Hashcode, epinter, Skrilax_CZ, nadlabak
* __Motorola Droid RAZR M (xt907/scorpion_mini):__ Hashcode, epinter, Skrilax_CZ, nadlabak
* __Motorola Photon Q (xt897/asanti) (GSM):__ Skrilax_CZ, nadlabak, epinter, Hashcode
* __Motorola Photon Q (xt897c/asanti_c) (CDMA):__ nadlabak, Skrilax_CZ, epinter, Hashcode
* __Motorola RAZR/RAZR Maxx (umts_spyder) (GSM):__ Hashcode, stargo
* __Motorola RAZR HD(xt925/vanquish) (GSM):__ epinter, Hashcode, Skrilax_CZ, nadlabak
* __Motorola Xoom (WiFi):__ bazar, SteadyHawkin, TDR (Team Rogue)
* __Motorola Xoom 3G (UMTS):__ bazar, SteadyHawkin, TDR (Team Rogue)
* __Motorola Xoom 4G LTE (Verizon):__ bazar, SteadyHawkin, TDR (Team Rogue)
* __OnePlus One:__ cyanogen, intervigil, inwotep, arcee
* __Oppo Find 5:__ intervigil, nebkat, raymanfx
* __Oppo Find 7:__ intervigil, tdm, inwotep, mikeioannina
* __Oppo N1:__ raymanfx
* __Oppo N3:__ invisiblek, maniac103
* __Oppo R7:__ maniac103, mikeioannina, Rashed97
* __Oppo R7 Plus:__ maniac103, mikeioannina, Rashed97
* __Samsung Captivate (SGH-I896 / SGH-I897):__ pawitp
* __Samsung Epic 4G (SPH-D700):__ bbelos
* __Samsung Exhilarate (SGH-I577):__ mikeyman77, carvsdriver
* __Samsung Fascinate / Mesmerize (SCH-I500):__ jt1134, sbrissen
* __Samsung Galaxy Note (GT-N7000):__ Entropy512, Espenfjo
* __Samsung Galaxy Note (GT-N7000):__ Espenfjo
* __Samsung Galaxy Note II (GT-N7100):__ nebkat
* __Samsung Galaxy Note II LTE (GT-N7105):__ codeworkx
* __Samsung Galaxy Note II LTE (AT&T) (SGH-I317):__ codeworkx, cyanogen
* __Samsung Galaxy Note II LTE (T-Mobile) (SGH-T889):__ codeworkx
* __Samsung Galaxy Note II LTE (SCH-I605 / SPH-L900):__ sbrissen
* __Samsung Galaxy Note 10.1 (GT-N80XX):__ Entropy512, Espenfjo
* __Samsung Galaxy Note II LTE (AT&T) (SGH-I317):__ cyanogen
* __Samsung Galaxy Note II LTE (Verizon) (SCH-I605):__ sbrissen
* __Samsung Galaxy Note II LTE (Sprint) (SPH-L900):__ sbrissen
* __Samsung Galaxy Note II LTE (USCC) (SCH-R950):__ sbrissen
* __Samsung Galaxy Note III (hlte):__ cyanogen, noobnl, slayher
* __Samsung Galaxy Note IV Exynos (trelte):__ raymanfx
* __Samsung Galaxy Note IV Exynos (trhplte):__ raymanfx
* __Samsung Galaxy Note 8.0 3G (GT-N5100):__ sbrissen
* __Samsung Galaxy Note 8.0 WiFi (GT-N5110):__ sbrissen
* __Samsung Galaxy Note 10.1 (GT-N80XX):__ Espenfjo
* __Samsung Galaxy Note 10.1 LTE (Verizon) (SCH-I925):__ sbrissen
* __Samsung Galaxy Premier (GT-I9260):__ ljzyal
* __Samsung Galaxy R (GT-I9103):__ Adam77Root, Epsylon3
* __Samsung Galaxy S Blaze 4G (SGH-T769):__ UberPinguin
* __Samsung Galaxy S (GT-I9000):__ pawitp
* __Samsung Galaxy S (GT-I9000B):__ helvio88
* __Samsung Galaxy S II (AT&T) (SGH-I777):__ Entropy512
* __Samsung Galaxy S II (intl) (GT-I9100):__ codeworkx, Espenfjo
* __Samsung Galaxy S II (intl) (GT-I9100G):__ codeworkx
* __Samsung Galaxy S III (AT&T) (SGH-I747):__ cyanogen
* __Samsung Galaxy S III (Cricket) (SCH-R530):__ noobnl
* __Samsung Galaxy S III (intl) (GT-I9300):__ xplodwild, codeworkx
* __Samsung Galaxy S III LTE (GT-I9305):__ mcampbellsmith, codeworkx
* __Samsung Galaxy S III (MetroPCS) (SCH-R530):__ noobnl
* __Samsung Galaxy S III (Sprint) (SPH-L710):__ mkasick, noobnl
* __Samsung Galaxy S III (T-Mobile) (SGH-T999):__ cyanogen
* __Samsung Galaxy S III (US Cellular) (SCH-R530):__ noobnl
* __Samsung Galaxy S II (GT-I9100):__ Caio Schnepper
* __Samsung Galaxy S II (intl) (GT-I9100G):__ Jiangyi, Ryuinferno
* __Samsung Galaxy S II (T-Mobile) (SGH-T989):__ mikeyman77
* __Samsung Galaxy S II (AT&T) (SGH-I727):__ topprospect
* __Samsung Galaxy S III (AT&T) (SGH-I747):__ nardholio
* __Samsung Galaxy S III (Sprint) (SPH-L710):__ noobnl
* __Samsung Galaxy S III (Verizon) (SCH-I535):__ invisiblek
* __Samsung Galaxy S IV (AT&T) (SGH-I337):__ attn1
* __Samsung Galaxy S IV (Canada) (SGH-I337M):__ DvTonder
* __Samsung Galaxy S IV (Sprint) (SPH-L720):__ mkasick, noobnl
* __Samsung Galaxy S IV (T-Mobile) (SGH-M919):__ cyanogen
* __Samsung Galaxy S IV (US Cellular) (SCH-R540):__ noobnl
* __Samsung Galaxy S III LTE (GT-I9305):__ mcampbellsmith
* __Samsung Galaxy S IV 3G (GT-I9500):__ intervigil, Alberto96
* __Samsung Galaxy S IV (AT&T) (SGH-I337):__ FarmGeek4Life
* __Samsung Galaxy S IV (Sprint) (SPH-L720):__ noobnl
* __Samsung Galaxy S IV (T-Mobile) (SGH-M919):__ dcd
* __Samsung Galaxy S IV (Verizon) (SCH-I545):__ invisiblek
* __Samsung Galaxy S IV Mini (Intl LTE) (GT-I9195):__arco
* __Samsung Galaxy S IV Mini (Intl 3G) (GT-I9190):__arco
* __Samsung Galaxy S IV LTE (GT-I9505):__ AntaresOne
* __Samsung Galaxy S IV LTE-A (GT-I9506):__ solk2
* __Samsung Galaxy S IV Mini 3G (GT-I9190):__ arco
* __Samsung Galaxy S IV Mini LTE (GT-I9195):__ arco
* __Samsung Galaxy S V (AU) (SCL23):__ scoty755
* __Samsung Galaxy S V (Vodafone) (SM-G900I):__ Regi24
* __Samsung Galaxy Tab 7" (GSM):__ cdesai, humberos
* __Samsung Galaxy Tab 7" (CDMA):__ jt1134
* __Samsung Galaxy Tab 2 7" (GT-P31xx):__ codeworkx
* __Samsung Galaxy Tab 2 10.1" (GT-P51xx):__ codeworkx
* __Samsung Galaxy Tab 2 7" (GT-P31xx):__ codyf86
* __Samsung Galaxy Tab 2 10.1" (GT-P51xx):__ codyf86
* __Samsung Galaxy Tab Pro 8.4" (SM-T320):__ crpalmer
* __Samsung Vibrant (SGH-T959):__ FaultException
* __Sony Xperia T (mint):__ jerpelea, Kali- (FreeXperia team), codeworkx, tilal6991
* __Sony Xperia V (tsubasa):__ jerpelea, Kali- (FreeXperia team), codeworkx, tilal6991
* __Sony Xperia Z (yuga):__ jerpelea, Kali- (FreeXperia team), cdesai, codeworkx, Entropy512
* __Sony Xperia ZL (odin):__ jerpelea, Kali- (FreeXperia team)
* __Sony Xperia E3 (flamingo):__ FreeXperia Team
* __Sony Xperia L (taoshan):__ olivieer, FreeXperia Team
* __Sony Xperia M (nicki):__ RonG, FreeXperia Team
* __Sony Xperia M2 (eagle):__ FreeXperia Team
* __Sony Xperia SP (huashan):__ Mrcl1450
* __Sony Xperia T (mint):__ FreeXperia Team, tilal6991, uberlaggydarwin
* __Sony Xperia T2 Ultra (tianchi):__ FreeXperia Team
* __Sony Xperia T3 (seagull):__ FreeXperia Team
* __Sony Xperia V (tsubasa):__ FreeXperia Team, tilal6991, championswimmer, uberlaggydarwin
* __Sony Xperia Z (yuga):__ FreeXperia Team, Turl, olivieer
* __Sony Xperia ZL (odin):__ FreeXperia Team
* __Sony Xperia ZR (dogo):__ FreeXperia Team
* __Sony Xperia Tablet Z LTE (pollux):__ FreeXperia Team, snc
* __Sony Xperia Tablet Z WiFi (pollux_windy):__ FreeXperia Team, snc
* __Sony Xperia Tablet Z2 LTE (castor):__ FreeXperia Team
* __Sony Xperia Tablet Z2 WiFi (castor_windy):__ FreeXperia Team
* __Sony Xperia Z3 Tablet Compact LTE (scorpion):__ FreeXperia Team
* __Sony Xperia Z Ultra (togari):__ FreeXperia Team
* __Sony Xperia Z1 (honami):__ FreeXperia Team
* __Sony Xperia Z1 compact (amami):__ FreeXperia Team, intervigil, championswimmer
* __Sony Xperia Z2 (sirius):__ FreeXperia Team
* __Sony Xperia Z3 (z3):__ FreeXperia Team
* __Sony Xperia Z3 Compact (z3c):__ FreeXperia Team
* __Sony Z Ultra GPE (togari_gpe):__ FreeXperia Team
* __Xiaomi Mi2(s) (aries):__ Michael Zimmermann
* __Xiaomi Mi3/4 (cancro):__ JoeyRizzoli
FreeXperia Team:
-------------------
Team: Jerpelea, Bin4ry, Kali-, codeworkx, Bumble-Bee, cdesai, AdFad666, tilal6991, kholk
General developers:
-------------------
* __UI Team:__ blunden, prash
* __UX Team:__ blunden, ciwrl, daneshm, DvTonder, mad-murdock, maniac103, Kaik541
* __UX Team:__ blunden, ciwrl, daneshm, DvTonder, jackmu95, maniac103, Kaik541
* __Other:__ jruesga
Translators:
------------
* __Afrikaans:__ Corrie Meyer, David van Tonder
* __Catalan:__ Oriol Pellicer
* __Croatian:__ Antonio Marin
* __Czech:__ Ondrej Zima, Radovan Kepak, Pavel Kucera, Jozka Jozin, Jiri Silvarich, Vaclav Moucha
* __Dutch:__ Marco Brohet, Kasper Hettinga, Sam Segers, Bart Tiemersma, Eddy Witkamp
* __Finnish:__ Antti Leukkunen, Niko Koivu
* __French:__ Sébastien Vaucher, David Girault, Tanguy Pruvot
* __German:__ Kim Lê, Jacob Müller, Patrick Schaaf, Christoph Quiter, Markus Hoeber, Matthias Büchner, Danny Baumann
* __Greek:__ Michael Bestas
* __Hungarian:__ Tamás Tóth, Dávid László, Dániel Buga
* __Italian:__ Francesco Foresta, Moreno Pojer, Eugenio Ziliotto, Giulio Cervera, Mauro Bazzano
* __Japanese:__ Takuo Kitame
* __Korean:__ Inseok Lee
* __Polish:__ Maciej Rozbicki
* __Portuguese-Brazil:__ Gustavo Rosa
* __Portuguese:__ Eduardo Martins, Ricardo Pinho
* __Russian:__ OlegKrikun, Pavel Volkov, Kir Kolyshkin
* __Simplified Chinese:__ comercy, Qian Zheng, Andrew Jiang, John Hsing
* __Slovak:__ Juraj Janecek
* __Spanish:__ PeRiJeY, KalimochoAz, Chuckycrx, Jorge Ruesga, djMesias
* __Swedish:__ Patrik Kullman
* __Traditional Chinese:__ Ladios Jonquil
* __Turkish:__ Ethem Evlice (androidmeda)
* __Afrikaans:__ David van Tonder (DvTonder), Corrie Meyer (isimobile)
* __Arabic:__ Umar Omar (uomar8)
* __Asturian:__ esbardu (esbardu), ivarela (malditoastur), Xandru Martino Ruz (Xandru), Xuacu Saturio (Xuacu)
* __Catalan:__ Arnau (Arnau), Pau Galindo (Pau_Galindo)
* __Chinese Simplified:__ Matthew Humphrey (775405984), Contactfront (Contactfront), Easeman Wang (easeman9), jiveking (jiveking), Yun Liu (liuyun97), Hexchain Tong (richard0053), Ryan Chan (smartryan), Thomas Wang (ts0516)
* __Chinese Traditional:__ Hsiang Jung, CHENG (HJCHENG), Kelvin Cheong (kelvincheong), Bing-Hua Wang (louiswpf), npes87184 (npes87184), Ryan Chan (smartryan)
* __Chinese Traditional, Hong Kong:__ Kelvin Cheong (kelvincheong), Ryan Chan (smartryan), Li Chi Tung (tonyli1357)
* __Croatian:__ David Boca (davidboca), markan (markan), Robert Rozić (Rox), Josip Volf (Wuk)
* __Czech:__ Radovan Kepák (bckp), Štěpán Dalecký (daleckystepan), engy (engy), Keltek (Keltek), ScArSVK (ScArSVK), Snoop05 (Snoop05)
* __Danish:__ Morten Jørgensen (Fidoble), Jacob_DK (Jacob_DK), Ole Ingeman Christensen (OIChristensen)
* __Dutch:__ Eddy Witkamp (eddywitkamp), Frank Baeten (frankbaeten), Tom Heisterkamp (HappyFlow), Martin Coulon (martinusbe), Timo Viveen (Nadermane), ray1618 (ray1618), Marco Brohet (therbom)
* __Estonian:__ Rudolf Tammekivi (rtammekivi)
* __Finnish:__ Eero Hyrsky (EnergySnail), Jani Kinnunen (jkinnunen), Niko Koivu (niko0o), Sasu Lehtonen (zazza)
* __French:__ DelPETER (DelPETER), humpf (humpf), Julien Stephan (julienstephan29), laddass (laddass), .... (lemachinbidule), math Matmutant (matmutant), Micks29 (Micks29), opengillou (opengillou), Alexandre Bertrand (trandbert)
* __Galician:__ Daniel (canu7), Isaac Álvarez Veiga (Erithrym)
* __Georgian:__ Alexander (alexander_9)
* __German:__ Sascha Schroeder (c1ph4), Kim Le (elektroschmock78), Jacob Müller (jackmu95), Kilian von Pflugk (kilianvonpflugk), Kilowatt.W (kilowatt), Benjamin Huschle (kolsms), Danny Baumann (maniac103), Mardon (markusmenzel), maxee (maxee), michelsberg (michelsberg), Roman Ettlinger (romanett98), Stefan O. (stefanao), Thomas Reinhardt (tarreas), unpublished (unpublished), Yannik (yanniks)
* __Greek:__ Vasilis Akritas (billak75), Michael Bestas (mikeioannina)
* __Hebrew:__ Arthur Zamarin (arthurzam), evyatark2 (evyatark2), Mr_Guy (Mr_Guy), Oren Cohen (orenc17), sagi232123 (sagi232123)
* __Hindi:__ c0d3ripp3r (c0d3ripp3r), Solomon Sunder (solomonsunder)
* __Hungarian:__ Bálint Czobor (balint), Buga Dániel (BugaDániel), fischerandris (fischerandris), lazajnd (lazajnd), Tamás Tóth (tothtamassyman)
* __Indonesian:__ Vicky Sofyan (Arch9), famihyypia (famihyypia), Ilham Ibrahim (iiibrahim89), Ruswan Efendi (RuswanWu7), tohenk (tohenk)
* __Italian:__ Alessandro Preti (alessandropreti), Francesco Foresta (francescoforesta), Joey Rizzoli (linuxx), Lorenzo Faccini (lo97), rheeze (rheeze), Valdevies (Valdevies)
* __Japanese:__ Black Zigong (blackzigong), jiveking (jiveking), おたっく (otack), Sena Endo (senaforandroid), stmay30 (stmay30)
* __Korean:__ 이승렬 (toy0605)
* __Kurdish:__ falah (Dylan2785)
* __Latvian:__ Māris Rēdmanis (maaris)
* __Lithuanian:__ Liudas Ališauskas (liudas.alisauskas), Edmundas Plentauskas (plentauskas1992), HardLight (polizplz), Saulius Vyšniauskas (SauliusVy)
* __Luxembourgish:__ Michel Weimerskirch (michel_weimerskirch), soued031 (soued031)
* __Malay:__ tanakwagu (tanakwagu)
* __Norwegian Bokmal:__ Vegard Fladby (Allram), Sten Eikrem (Storesteinen)
* __Persian:__ Ali Niki (alinik), Mehdi HosseinZade (Arshen) (Arshen-2014), Yaser Rajabi (yrajabi)
* __Polish:__ Dawid (dawidohs), Kamil Jarosław (devloz1996), Michał Gątkowski (IreuN), Andrzej Ressel (jereksel), Michał Kamień (kamykowsky), lozohcum M (lozohcum), Tomasz Popielarczyk (popielarczyktomasz), Michał Jakubowski (revanmj)
* __Portuguese:__ João Pedro Luís (joaopluis), Sergio Borges (sergioborges99), André Pinela (sheffzor), Tercio Carvalho (tercioc)
* __Portuguese, Brazilian:__ Carlos Henrique Brendler Cabral (carloshbcabral), Gafanhotz (Gafanhotz), Gustavo Rosa (gustavogyn), Tercio Carvalho (tercioc)
* __Romanian:__ apolodor (apolodor), azzureux (azzureux), Marian-Mina Mihai (bboylalu), mihaitaus (mihaitaus)
* __Russian:__ Vladislav Koldobskiy (NeverGone), Alexey Kuznetsov (eeepc1016p), Artem Leshchev (matshch), Maxim Perepelitsa (N0xFF), Yaroslav Yadrishnikov (MrYadro)
* __Serbian (Cyrillic):__ Dragan Milenkovic (gagy187), Sava Mikalački (mikalackis), Драган (WD40)
* __Sinhala:__ Rananga Suraweera (rananga)
* __Slovak:__ Martin (mato), Bohuslav Oršula (orsulab), Peter Malík (PeterM), pyler (pyler), Snoop05 (Snoop05)
* __Spanish:__ Isaac Álvarez Veiga (Erithrym), Jorge Ruesga (jruesga), Lorenzo M (Lorenzo_M), luchomacedo92 (LuchoMacedo), Pau Galindo (Pau_Galindo)
* __Swedish:__ Simon Bäck (backsimon), elelinux (elelinux), Simon Danielsson (sad_88), Ted Lundwall (TedLundwall)
* __Tamil:__ Kishore Sheik Ahamed (kishoreinme), Solomon Sunder (solomonsunder), Stars Soft (starssoft), அருண் குமார் - Arun Kumar (thangamani-arun)
* __Thai:__ pureexe (pureexe)
* __Turkish:__ Arif GÜLER (ArF), Mesut Öztürk (doktormesut), Murat KOŞAK (muratkosak), okirat (okirat), Şenol (senoleker)
* __Ukrainian:__ Andriy Poznakhovskyy (Andrulko), Nazar Sokolovsky (nazar_sokolovsky), Maks (probil), xalich (xalich)
* __Uyghur:__ jiveking (jiveking)
* __Vietnamese:__ Bảo Quân (quan221295), Triet Bui Minh (x3cafe)
Graphics and Assets:
--------------------
* __Wallpapers:__ Matthew Hanley, Henry Mason
* __Icons:__ Bjorn Lunden, Henry Mason
* __Bootanimation:__ Dima Skvarskyi
Former Contributors:
--------------------
* __Devices:__ Entropy512, xplodwild
* __Features:__ mad-murdock, wysie, Ander Webbs, ChainsDD, xplodwild

View File

@ -1,4 +1,4 @@
Copyright 2011-12 The CyanogenMod Project
Copyright 2011-15 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@ -32,7 +32,7 @@ You can do this by using these commands:
(Go to repo you are patching, make your changes and commit)
cmgerrit <for(new)/changes(patch set)> <branch/change-id>
repo start cm-10.1 .
repo start cm-13.0 .
(Make your changes and commit)
repo upload .
Note: "." meaning current directory
@ -52,7 +52,7 @@ familiar with [Repo](https://source.android.com/source/using-repo.html) and [Ver
To initialize your local repository using the CyanogenMod trees, use a command like this:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-13.0
Then to sync up:

View File

@ -587,6 +587,7 @@ _repo_sync() {
OPTIONS=(
"-h" "--help"
"-f" "--force-broken"
"--force-sync"
"-l" "--local-only"
"-n" "--network-only"
"-d" "--detach"

126
build/core/apicheck.mk Normal file
View File

@ -0,0 +1,126 @@
# Copyright (C) 2015 The CyanogenMod 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.
#
# Rules for running apicheck to confirm that you haven't broken
# api compatibility or added apis illegally.
#
# skip api check for PDK buid
ifeq (,$(filter true, $(WITHOUT_CHECK_API) $(TARGET_BUILD_PDK)))
.PHONY: checkapi-cm
# Run the checkapi rules by default.
droidcore: checkapi-cm
cm_last_released_sdk_version := $(lastword $(call numerically_sort, \
$(filter-out current, \
$(patsubst $(CM_SRC_API_DIR)/%.txt,%, $(wildcard $(CM_SRC_API_DIR)/*.txt)) \
)\
))
.PHONY: check-cm-public-api
checkapi-cm : check-cm-public-api
.PHONY: update-cm-api
# INTERNAL_CM_PLATFORM_API_FILE is the one build by droiddoc.
# Note that since INTERNAL_CM_PLATFORM_API_FILE is the byproduct of api-stubs module,
# (See vendor/cmsdk/Android.mk)
# we need to add api-stubs as additional dependency of the api check.
# Check that the API we're building hasn't broken the last-released
# SDK version.
$(eval $(call check-api, \
checkpublicapi-cm-last, \
$(CM_SRC_API_DIR)/$(cm_last_released_sdk_version).txt, \
$(INTERNAL_CM_PLATFORM_API_FILE), \
$(FRAMEWORK_CM_PLATFORM_REMOVED_API_FILE), \
$(INTERNAL_CM_PLATFORM_REMOVED_API_FILE), \
cat $(BUILD_SYSTEM)/apicheck_msg_last.txt, \
check-cm-public-api, \
$(call doc-timestamp-for, cm-api-stubs) \
))
# Check that the API we're building hasn't changed from the not-yet-released
# SDK version.
$(eval $(call check-api, \
checkpublicapi-cm-current, \
$(FRAMEWORK_CM_PLATFORM_API_FILE), \
$(INTERNAL_CM_PLATFORM_API_FILE), \
$(FRAMEWORK_CM_PLATFORM_REMOVED_API_FILE), \
$(INTERNAL_CM_PLATFORM_REMOVED_API_FILE), \
cat $(BUILD_SYSTEM)/apicheck_msg_current.txt, \
check-cm-public-api, \
$(call doc-timestamp-for, cm-api-stubs) \
))
.PHONY: update-cm-public-api
update-cm-public-api: $(INTERNAL_CM_PLATFORM_API_FILE) | $(ACP)
@echo -e ${CL_GRN}"Copying cm_current.txt"${CL_RST}
$(hide) $(ACP) $(INTERNAL_CM_PLATFORM_API_FILE) $(FRAMEWORK_CM_PLATFORM_API_FILE)
@echo -e ${CL_GRN}"Copying cm_removed.txt"${CL_RST}
$(hide) $(ACP) $(INTERNAL_CM_PLATFORM_REMOVED_API_FILE) $(FRAMEWORK_CM_PLATFORM_REMOVED_API_FILE)
update-cm-api : update-cm-public-api
#####################Check System API#####################
.PHONY: check-cm-system-api
checkapi-cm : check-cm-system-api
# Check that the Cyanogen System API we're building hasn't broken the last-released
# SDK version.
$(eval $(call check-api, \
checksystemapi-cm-last, \
$(CM_SRC_SYSTEM_API_DIR)/$(cm_last_released_sdk_version).txt, \
$(INTERNAL_CM_PLATFORM_SYSTEM_API_FILE), \
$(FRAMEWORK_CM_PLATFORM_SYSTEM_REMOVED_API_FILE), \
$(INTERNAL_CM_PLATFORM_SYSTEM_REMOVED_API_FILE), \
cat $(BUILD_SYSTEM)/apicheck_msg_last.txt, \
check-cm-system-api, \
$(call doc-timestamp-for, cm-system-api-stubs) \
))
# Check that the System API we're building hasn't changed from the not-yet-released
# SDK version.
$(eval $(call check-api, \
checksystemapi-cm-current, \
$(FRAMEWORK_CM_PLATFORM_SYSTEM_API_FILE), \
$(INTERNAL_CM_PLATFORM_SYSTEM_API_FILE), \
$(FRAMEWORK_CM_PLATFORM_SYSTEM_REMOVED_API_FILE), \
$(INTERNAL_CM_PLATFORM_SYSTEM_REMOVED_API_FILE), \
cat $(BUILD_SYSTEM)/apicheck_msg_current.txt, \
check-cm-system-api, \
$(call doc-timestamp-for, cm-system-api-stubs) \
))
.PHONY: update-cm-system-api
update-cm-api : update-cm-system-api
update-cm-system-api: $(INTERNAL_PLATFORM_CM_SYSTEM_API_FILE) | $(ACP)
@echo Copying cm_system-current.txt
$(hide) $(ACP) $(INTERNAL_CM_PLATFORM_SYSTEM_API_FILE) $(FRAMEWORK_CM_PLATFORM_SYSTEM_API_FILE)
@echo Copying cm_system-removed.txt
$(hide) $(ACP) $(INTERNAL_CM_PLATFORM_SYSTEM_REMOVED_API_FILE) $(FRAMEWORK_CM_PLATFORM_SYSTEM_REMOVED_API_FILE)
.PHONY: update-cm-prebuilts-latest-public-api
current_sdk_release_text_file := $(CM_SRC_API_DIR)/$(cm_last_released_sdk_version).txt
update-cm-prebuilts-latest-public-api: $(FRAMEWORK_CM_PLATFORM_API_FILE) | $(ACP)
@echo -e ${CL_GRN}"Publishing cm_current.txt as latest API release"${CL_RST}
$(hide) $(ACP) $(FRAMEWORK_CM_PLATFORM_API_FILE) $(current_sdk_release_text_file)
endif

11
build/core/clear_vars.mk Normal file
View File

@ -0,0 +1,11 @@
#
#CM-specific variable clears
#
LOCAL_IGNORE_SUBDIR :=
LOCAL_MAVEN_GROUP :=
LOCAL_MAVEN_ARTIFACT :=
LOCAL_MAVEN_VERSION :=
LOCAL_MAVEN_CLASSIFIER :=
LOCAL_MAVEN_PACKAGING :=
LOCAL_MAVEN_REPO :=

27
build/core/config.mk Normal file
View File

@ -0,0 +1,27 @@
# Copyright (C) 2015 The CyanogenMod 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.
CM_SRC_API_DIR := $(TOPDIR)prebuilts/cmsdk/api
CM_SRC_SYSTEM_API_DIR := $(TOPDIR)prebuilts/cmsdk/system-api
INTERNAL_CM_PLATFORM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/cm_public_api.txt
INTERNAL_CM_PLATFORM_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/cm_removed.txt
INTERNAL_CM_PLATFORM_SYSTEM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/cm_system-api.txt
INTERNAL_CM_PLATFORM_SYSTEM_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/cm_system-removed.txt
FRAMEWORK_CM_PLATFORM_API_FILE := $(TOPDIR)vendor/cmsdk/api/cm_current.txt
FRAMEWORK_CM_PLATFORM_REMOVED_API_FILE := $(TOPDIR)vendor/cmsdk/api/cm_removed.txt
FRAMEWORK_CM_PLATFORM_SYSTEM_API_FILE := $(TOPDIR)vendor/cmsdk/system-api/cm_system-current.txt
FRAMEWORK_CM_PLATFORM_SYSTEM_REMOVED_API_FILE := $(TOPDIR)vendor/cmsdk/system-api/cm_system-removed.txt
BUILD_MAVEN_PREBUILT := $(TOP)/vendor/replicant/build/core/maven_artifact.mk
PUBLISH_MAVEN_PREBUILT := $(TOP)/vendor/replicant/build/core/maven_artifact_publish.mk

View File

@ -0,0 +1,6 @@
#
# CM-specific macros
#
define uniq
$(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
endef

View File

@ -0,0 +1,56 @@
# Copyright (C) 2015 The CyanogenMod 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.
ifeq ($(strip $(LOCAL_MAVEN_GROUP)),)
$(error LOCAL_MAVEN_GROUP not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_ARTIFACT)),)
$(error LOCAL_MAVEN_ARTIFACT not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_VERSION)),)
$(error LOCAL_MAVEN_VERSION not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_REPO)),)
$(error LOCAL_MAVEN_REPO not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_PACKAGING)),)
LOCAL_MAVEN_PACKAGING := jar
endif
artifact_filename := $(LOCAL_MAVEN_GROUP).$(LOCAL_MAVEN_ARTIFACT)-$(LOCAL_MAVEN_VERSION)$(if $(LOCAL_MAVEN_CLASSIFIER),-$(LOCAL_MAVEN_CLASSIFIER)).$(LOCAL_MAVEN_PACKAGING)
LOCAL_PREBUILT_MODULE_FILE := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,COMMON)/$(artifact_filename)
$(LOCAL_PREBUILT_MODULE_FILE): repo := $(LOCAL_MAVEN_REPO)
$(LOCAL_PREBUILT_MODULE_FILE): group := $(LOCAL_MAVEN_GROUP)
$(LOCAL_PREBUILT_MODULE_FILE): artifact := $(LOCAL_MAVEN_ARTIFACT)
$(LOCAL_PREBUILT_MODULE_FILE): version := $(LOCAL_MAVEN_VERSION)
$(LOCAL_PREBUILT_MODULE_FILE): packaging := $(LOCAL_MAVEN_PACKAGING)
$(LOCAL_PREBUILT_MODULE_FILE): classifier := $(LOCAL_MAVEN_CLASSIFIER)
$(LOCAL_PREBUILT_MODULE_FILE):
$(hide) mvn -q org.apache.maven.plugins:maven-dependency-plugin:2.10:get \
org.apache.maven.plugins:maven-dependency-plugin:2.10:copy \
-DremoteRepositories=central::::$(repo) \
-Dartifact=$(group):$(artifact):$(version):$(packaging)$(if $(classifier),:$(classifier)) \
-Dmdep.prependGroupId=true \
-Dmdep.overWriteSnapshots=true \
-Dmdep.overWriteReleases=true \
-Dtransitive=false \
-DoutputDirectory=$(dir $@)
@echo -e ${CL_GRN}"Download:"${CL_RST}" $@"
include $(BUILD_PREBUILT)
# the "fetchprebuilts" target will go through and pre-download all of the maven dependencies in the tree
fetchprebuilts: $(LOCAL_PREBUILT_MODULE_FILE)

View File

@ -0,0 +1,49 @@
# Copyright (C) 2015 The CyanogenMod 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.
full_target := $(call doc-timestamp-for,$(LOCAL_MODULE))
ifeq ($(strip $(LOCAL_MAVEN_POM)),)
$(error LOCAL_MAVEN_POM not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_REPO)),)
$(error LOCAL_MAVEN_REPO not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_FILE_PATH)),)
$(error LOCAL_MAVEN_FILE_PATH not defined.)
endif
ifeq ($(strip $(LOCAL_MAVEN_REPO_ID)),)
$(error LOCAL_MAVEN_REPO_ID not defined.)
endif
$(full_target): pomfile := $(LOCAL_MAVEN_POM)
$(full_target): repo := $(LOCAL_MAVEN_REPO)
$(full_target): path_to_file := $(LOCAL_MAVEN_FILE_PATH)
$(full_target): repoId := $(LOCAL_MAVEN_REPO_ID)
$(full_target): classifier := $(LOCAL_MAVEN_CLASSIFIER)
$(full_target): sources := $(LOCAL_MAVEN_SOURCES)
$(full_target): javadoc := $(LOCAL_MAVEN_JAVADOC)
$(full_target):
$(hide) mvn -e -X gpg:sign-and-deploy-file \
-DpomFile=$(pomfile) \
-Durl=$(repo) \
-Dfile=$(path_to_file) \
-DrepositoryId=$(repoId) \
-Dclassifier=$(classifier) \
-Dsources=$(sources) \
-Djavadoc=$(javadoc)
@echo -e ${CL_GRN}"Publishing:"${CL_RST}" $@"
$(LOCAL_MODULE) : $(full_target)

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,208 @@
/* =============================================================================
Columns
========================================================================== */
/* Applied to body to debug layout alignments
.grid {
width:100%;
height:100%;
background:url(../images/grid.png) center repeat-y;
top:0px;
margin:auto;
position:absolute;
}
*/
@media screen, projection, print {
.full {
padding: 2.5em 0;
border-top: solid 1px #ddd;
border-bottom: solid 1px #ddd;
background: #f7f7f7;
}
.wrap {
margin: 0 auto;
width: 100%;
min-width:600px;
clear: both;
}
.cols {
height: 1%;
margin: 0 -1.533742331288343558282%;
width: 103.06748466257669%}
*+html .cols {
margin-bottom: 20px;
}
.cols:after {
clear: both;
content: ' ';
display: block;
height: 0;
visibility: hidden;
}
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12,
.col-13, .col-14, .col-15, .col-16 {
float: left;
margin: 0 1.063829787234% 20px 1.063829787234%;
}
* html .col-1, * html .col-2, * html .col-3, * html .col-4, * html .col-5, * html .col-6, * html
.col-7, * html .col-8, * html .col-9, * html .col-10, * html .col-11, * html .col-12, * html
.col-13, * html .col-14, * html .col-15, * html .col-16 {
margin: 0;
margin: 0 1.063829787234% 20px 1.063829787234%;
}
[dir='rtl'] .col-1, [dir='rtl'] .col-2, [dir='rtl'] .col-3, [dir='rtl'] .col-4, [dir='rtl'] .col-5,
[dir='rtl'] .col-6, [dir='rtl'] .col-7, [dir='rtl'] .col-8, [dir='rtl'] .col-9, [dir='rtl'] .col-10,
[dir='rtl'] .col-11, [dir='rtl'] .col-12 {
float: right;
}
.col-1 {
width: 4.16666666666667%;
}
.col-2 {
width: 10.4166666666667%;
}
.col-3 {
width: 16.6666666666667%;
}
.col-4 {
width: 22.9166666666667%;
}
.col-5 {
width: 29.1666666666667%;
}
.col-6 {
width: 35.4166666666667%;
}
.col-7 {
width: 41.6666666666667%;
}
.col-8 {
width: 47.9166666666667%;
}
.col-9 {
width: 55.3333333333333%;
}
.col-10 {
width: 60.4166666666667%;
}
.col-11 {
width: 66.6666666666667%;
}
.col-12 {
width: 72.9166666666667%;
}
.col-13 {
width: 79.1666666666667%;
}
.col-14 {
width: 85.4166666666667%;
}
.col-15 {
width: 91.6666666666667%;
}
.col-16 {
width: 97.9166666666667%;
}
#header .col-1,
#nav-x .col-1 { width: 40px }
#header .col-2,
#nav-x .col-2 { width: 100px }
#header .col-3,
#nav-x .col-3 { width: 160px }
#header .col-4,
#nav-x .col-4 { width: 220px }
#header .col-5,
#nav-x .col-5 { width: 280px }
#header .col-6,
#nav-x .col-6 { width: 340px }
#header .col-7,
#nav-x .col-7 { width: 400px }
#header .col-8,
#nav-x .col-8 { width: 460px }
#header .col-9,
#nav-x .col-9 { width: 520px }
#header .col-10,
#nav-x .col-10 { width: 580px }
#header .col-11,
#nav-x .col-11 { width: 640px }
#header .col-12,
#nav-x .col-12 { width: 700px }
#header .col-13,
#nav-x .col-13 { width: 760px }
#header .col-14,
#nav-x .col-14 { width: 820px }
#header .col-15,
#nav-x .col-15 { width: 880px }
#header .col-16,
#nav-x .col-16 { width: 940px }
body {
padding:0 20px;
}
#header,
#searchResults,
#nav-x {
margin:0;
}
#body-content {
margin:0;
}
#body-content > .col-12 {
width:77.9804965%;
margin:0 0 0 0.97%; /* this percentage chosen to make IE9 happy */
}
#side-nav {
width: 19.9804965%;
margin:0 1.063829787234% 0 0;
}
#header .wrap {
max-width: 100%;
}
#header-wrapper #nav-x div.wrap,
#searchResults.wrap {
max-width:100%;
}
.nav-x {
margin:-2px 0 0 0;
}
#devdoc-nav.fixed,
#devdoc-nav.fixed a.totop {
left:20px; /* !important ... for IE i think */
}
#sticky-header {
padding: 0 20px;
}
#sticky-header > div {
width: 100%;
}
.sticky-menu {
width:100%;
left:-20px;
}
.col-right {
margin-right:0px;
}
@media screen and (max-width:772px) {
.col-5, .col-6, .col-7 {
clear: both;
width: 97.0238096%}
}

View File

@ -0,0 +1,14 @@
#masthead-title {
color: #373332;
text-decoration: none;
font-weight: bold;
margin-left: 5px;
}
#headerLeft a {
text-decoration: none;
}
#header {
border-bottom: 4px solid rgb(1, 125, 187);
}

View File

@ -0,0 +1,188 @@
$(document).ready(function() {
// prep nav expandos
var pagePath = document.location.pathname;
if (pagePath.indexOf(SITE_ROOT) == 0) {
pagePath = pagePath.substr(SITE_ROOT.length);
if (pagePath == '' || pagePath.charAt(pagePath.length - 1) == '/') {
pagePath += 'index.html';
}
}
if (SITE_ROOT.match(/\.\.\//) || SITE_ROOT == '') {
// If running locally, SITE_ROOT will be a relative path, so account for that by
// finding the relative URL to this page. This will allow us to find links on the page
// leading back to this page.
var pathParts = pagePath.split('/');
var relativePagePathParts = [];
var upDirs = (SITE_ROOT.match(/(\.\.\/)+/) || [''])[0].length / 3;
for (var i = 0; i < upDirs; i++) {
relativePagePathParts.push('..');
}
for (var i = 0; i < upDirs; i++) {
relativePagePathParts.push(pathParts[pathParts.length - (upDirs - i) - 1]);
}
relativePagePathParts.push(pathParts[pathParts.length - 1]);
pagePath = relativePagePathParts.join('/');
} else {
// Otherwise the page path should be an absolute URL.
pagePath = SITE_ROOT + pagePath;
}
// select current page in sidenav and set up prev/next links if they exist
var $selNavLink = $('.nav-y').find('a[href="' + pagePath + '"]');
if ($selNavLink.length) {
$selListItem = $selNavLink.closest('li');
$selListItem.addClass('selected');
$selListItem.closest('li>ul').addClass('expanded');
// set up prev links
var $prevLink = [];
var $prevListItem = $selListItem.prev('li');
if ($prevListItem.length) {
if ($prevListItem.hasClass('nav-section')) {
// jump to last topic of previous section
$prevLink = $prevListItem.find('a:last');
} else {
// jump to previous topic in this section
$prevLink = $prevListItem.find('a:eq(0)');
}
} else {
// jump to this section's index page (if it exists)
$prevLink = $selListItem.parents('li').find('a');
}
if ($prevLink.length) {
var prevHref = $prevLink.attr('href');
if (prevHref == SITE_ROOT + 'index.html') {
// Don't show Previous when it leads to the homepage
$('.prev-page-link').hide();
} else {
$('.prev-page-link').attr('href', prevHref).show();
}
} else {
$('.prev-page-link').hide();
}
// set up next links
var $nextLink = [];
if ($selListItem.hasClass('nav-section')) {
// we're on an index page, jump to the first topic
$nextLink = $selListItem.find('ul').find('a:eq(0)')
} else {
// jump to the next topic in this section (if it exists)
$nextLink = $selListItem.next('li').find('a:eq(0)');
if (!$nextLink.length) {
// no more topics in this section, jump to the first topic in the next section
$nextLink = $selListItem.parents('li').next('li.nav-section').find('a:eq(0)');
}
}
if ($nextLink.length) {
$('.next-page-link').attr('href', $nextLink.attr('href')).show();
} else {
$('.next-page-link').hide();
}
}
// Set up expand/collapse behavior
$('.nav-y li').has('ul').click(function() {
if ($(this).hasClass('expanded')) {
return;
}
// hide other
var $old = $('.nav-y li.expanded');
if ($old.length) {
var $oldUl = $old.children('ul');
$oldUl.css('height', $oldUl.height() + 'px');
window.setTimeout(function() {
$oldUl
.addClass('animate-height')
.css('height', '');
}, 0);
$old.removeClass('expanded');
}
// show me
$(this).addClass('expanded');
var $ul = $(this).children('ul');
var expandedHeight = $ul.height();
$ul
.removeClass('animate-height')
.css('height', 0);
window.setTimeout(function() {
$ul
.addClass('animate-height')
.css('height', expandedHeight + 'px');
}, 0);
});
// Stop expand/collapse behavior when clicking on nav section links (since we're navigating away
// from the page)
$('.nav-y li').has('ul').find('a:eq(0)').click(function(evt) {
window.location.href = $(this).attr('href');
return false;
});
// Set up play-on-hover <video> tags.
$('video.play-on-hover').bind('click', function(){
$(this).get(0).load(); // in case the video isn't seekable
$(this).get(0).play();
});
// Set up tooltips
var TOOLTIP_MARGIN = 10;
$('acronym').each(function() {
var $target = $(this);
var $tooltip = $('<div>')
.addClass('tooltip-box')
.text($target.attr('title'))
.hide()
.appendTo('body');
$target.removeAttr('title');
$target.hover(function() {
// in
var targetRect = $target.offset();
targetRect.width = $target.width();
targetRect.height = $target.height();
$tooltip.css({
left: targetRect.left,
top: targetRect.top + targetRect.height + TOOLTIP_MARGIN
});
$tooltip.addClass('below');
$tooltip.show();
}, function() {
// out
$tooltip.hide();
});
});
// Set up <h2> deeplinks
$('h2').click(function() {
var id = $(this).attr('id');
if (id) {
document.location.hash = id;
}
});
// Set up fixed navbar
var navBarIsFixed = false;
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
var navBarShouldBeFixed = (scrollTop > (100 - 40));
if (navBarIsFixed != navBarShouldBeFixed) {
if (navBarShouldBeFixed) {
$('#nav')
.addClass('fixed')
.prependTo('#page-container');
} else {
$('#nav')
.removeClass('fixed')
.prependTo('#nav-container');
}
navBarIsFixed = navBarShouldBeFixed;
}
});
});

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,679 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<?cs include:"macros_override.cs" ?>
<html<?cs if:devsite ?> devsite<?cs /if ?>>
<?cs include:"head_tag.cs" ?>
<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?>
<?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
if:reference ?> reference<?cs
/if ?><?cs
elif:design ?>design<?cs
elif:distribute ?>distribute<?cs
/if ?>" itemscope itemtype="http://schema.org/Article">
<div id="doc-api-level" class="<?cs var:class.since ?>" style="display:none"></div>
<a name="top"></a>
<?cs include:"header.cs" ?>
<div class="col-12" id="doc-col">
<div id="api-info-block">
<?cs # are there inherited members ?>
<?cs each:cl=class.inherited ?>
<?cs if:subcount(cl.methods) ?>
<?cs set:inhmethods = #1 ?>
<?cs /if ?>
<?cs if:subcount(cl.constants) ?>
<?cs set:inhconstants = #1 ?>
<?cs /if ?>
<?cs if:subcount(cl.fields) ?>
<?cs set:inhfields = #1 ?>
<?cs /if ?>
<?cs if:subcount(cl.attrs) ?>
<?cs set:inhattrs = #1 ?>
<?cs /if ?>
<?cs /each ?>
<div class="sum-details-links">
<?cs if:inhattrs || inhconstants || inhfields || inhmethods || (!class.subclasses.hidden &&
(subcount(class.subclasses.direct) || subcount(class.subclasses.indirect))) ?>
Summary:
<?cs if:subcount(class.inners) ?>
<a href="#nestedclasses">Nested Classes</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.attrs) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#lattrs">XML Attrs</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:inhattrs ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#inhattrs">Inherited XML Attrs</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.enumConstants) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#enumconstants">Enums</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.constants) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#constants">Constants</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:inhconstants ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#inhconstants">Inherited Constants</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.fields) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#lfields">Fields</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:inhfields ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#inhfields">Inherited Fields</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.ctors.public) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#pubctors">Ctors</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.ctors.protected) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#proctors">Protected Ctors</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.methods.public) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#pubmethods">Methods</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:subcount(class.methods.protected) ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#promethods">Protected Methods</a>
<?cs set:linkcount = #1 ?>
<?cs /if ?>
<?cs if:inhmethods ?>
<?cs if:linkcount ?>&#124; <?cs /if ?><a href="#inhmethods">Inherited Methods</a>
<?cs /if ?>
&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
<?cs /if ?>
</div><!-- end sum-details-links -->
<div class="api-level">
<?cs call:since_tags(class) ?><?cs
if:class.deprecatedsince
?><br>Deprecated since <a href="<?cs var:toroot ?>guide/topics/manifest/uses-sdk-element.html#ApiLevels"
>API level <?cs var:class.deprecatedsince ?></a><?cs
/if ?>
<?cs call:federated_refs(class) ?>
</div>
</div><!-- end api-info-block -->
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ======== START OF CLASS DATA ======== -->
<div id="jd-header">
<?cs var:class.scope ?>
<?cs var:class.static ?>
<?cs var:class.final ?>
<?cs var:class.abstract ?>
<?cs var:class.kind ?>
<h1 itemprop="name"><?cs var:class.name ?></h1>
<?cs set:colspan = subcount(class.inheritance) ?>
<?cs each:supr = class.inheritance ?>
<?cs if:colspan == 2 ?>
extends <?cs call:type_link(supr.short_class) ?><br/>
<?cs /if ?>
<?cs if:last(supr) && subcount(supr.interfaces) ?>
implements
<?cs each:t=supr.interfaces ?>
<?cs call:type_link(t) ?>
<?cs /each ?>
<?cs /if ?>
<?cs set:colspan = colspan-1 ?>
<?cs /each ?>
<?cs call:show_annotations_list(class) ?>
</div><!-- end header -->
<div id="naMessage"></div>
<div id="jd-content" class="api apilevel-<?cs var:class.since ?>">
<table class="jd-inheritance-table">
<?cs set:colspan = subcount(class.inheritance) ?>
<?cs each:supr = class.inheritance ?>
<tr>
<?cs loop:i = 1, (subcount(class.inheritance)-colspan), 1 ?>
<td class="jd-inheritance-space">&nbsp;<?cs if:(subcount(class.inheritance)-colspan) == i ?>&nbsp;&nbsp;&#x21b3;<?cs /if ?></td>
<?cs /loop ?>
<td colspan="<?cs var:colspan ?>" class="jd-inheritance-class-cell"><?cs
if:colspan == 1
?><?cs call:class_name(class.qualifiedType) ?><?cs
else
?><?cs call:type_link(supr.class) ?><?cs
/if ?></td>
</tr>
<?cs set:colspan = colspan-1 ?>
<?cs /each ?>
</table>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<?cs if:subcount(class.subclasses.direct) && !class.subclasses.hidden ?>
<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
<?cs call:expando_trigger("subclasses-direct", "closed") ?>Known Direct Subclasses
<?cs call:expandable_class_list("subclasses-direct", class.subclasses.direct, "list") ?>
</td></tr></table>
<?cs /if ?>
<?cs if:subcount(class.subclasses.indirect) && !class.subclasses.hidden ?>
<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
<?cs call:expando_trigger("subclasses-indirect", "closed") ?>Known Indirect Subclasses
<?cs call:expandable_class_list("subclasses-indirect", class.subclasses.indirect, "list") ?>
</td></tr></table>
<?cs /if ?>
<div class="jd-descr">
<?cs call:deprecated_warning(class) ?>
<?cs if:subcount(class.descr) ?>
<h2>Class Overview</h2>
<p itemprop="articleBody"><?cs call:tag_list(class.descr) ?></p>
<?cs /if ?>
<?cs call:see_also_tags(class.seeAlso) ?>
</div><!-- jd-descr -->
<?cs # summary macros ?>
<?cs def:write_method_summary(methods, included) ?>
<?cs set:count = #1 ?>
<?cs each:method = methods ?>
<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:method.since ?>" >
<td class="jd-typecol"><nobr>
<?cs var:method.abstract ?>
<?cs var:method.synchronized ?>
<?cs var:method.final ?>
<?cs var:method.static ?>
<?cs call:type_link(method.generic) ?>
<?cs call:type_link(method.returnType) ?></nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><?cs call:cond_link(method.name, toroot, method.href, included) ?></span>(<?cs call:parameter_list(method.params) ?>)</nobr>
<?cs if:subcount(method.shortDescr) || subcount(method.deprecated) ?>
<div class="jd-descrdiv">
<?cs call:short_descr(method) ?>
<?cs call:show_annotations_list(method) ?>
</div>
<?cs /if ?>
</td></tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
<?cs /def ?>
<?cs def:write_field_summary(fields, included) ?>
<?cs set:count = #1 ?>
<?cs each:field=fields ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:field.since ?>" >
<td class="jd-typecol"><nobr>
<?cs var:field.scope ?>
<?cs var:field.static ?>
<?cs var:field.final ?>
<?cs call:type_link(field.type) ?></nobr></td>
<td class="jd-linkcol"><?cs call:cond_link(field.name, toroot, field.href, included) ?></td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(field) ?>
<?cs call:show_annotations_list(field) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
<?cs /def ?>
<?cs def:write_constant_summary(fields, included) ?>
<?cs set:count = #1 ?>
<?cs each:field=fields ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:field.since ?>" >
<td class="jd-typecol"><?cs call:type_link(field.type) ?></td>
<td class="jd-linkcol"><?cs call:cond_link(field.name, toroot, field.href, included) ?></td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(field) ?>
<?cs call:show_annotations_list(field) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
<?cs /def ?>
<?cs def:write_attr_summary(attrs, included) ?>
<?cs set:count = #1 ?>
<tr>
<td><nobr><em>Attribute Name</em></nobr></td>
<td><nobr><em>Related Method</em></nobr></td>
<td><nobr><em>Description</em></nobr></td>
</tr>
<?cs each:attr=attrs ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:attr.since ?>" >
<td class="jd-linkcol"><?cs if:included ?><a href="<?cs var:toroot ?><?cs var:attr.href ?>"><?cs /if ?><?cs var:attr.name ?><?cs if:included ?></a><?cs /if ?></td>
<td class="jd-linkcol"><?cs each:m=attr.methods ?>
<?cs call:cond_link(m.name, toroot, m.href, included) ?>
<?cs /each ?>
</td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(attr) ?>&nbsp;
<?cs call:show_annotations_list(attr) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
<?cs /def ?>
<?cs def:write_inners_summary(classes) ?>
<?cs set:count = #1 ?>
<?cs each:cl=class.inners ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.since ?>" >
<td class="jd-typecol"><nobr>
<?cs var:cl.scope ?>
<?cs var:cl.static ?>
<?cs var:cl.final ?>
<?cs var:cl.abstract ?>
<?cs var:cl.kind ?></nobr></td>
<td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(cl) ?>&nbsp;
<?cs call:show_annotations_list(cl) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
<?cs /def ?>
<?cs # end macros ?>
<div class="jd-descr">
<?cs # make sure there's a summary view to display ?>
<?cs if:subcount(class.inners)
|| subcount(class.attrs)
|| inhattrs
|| subcount(class.enumConstants)
|| subcount(class.constants)
|| inhconstants
|| subcount(class.fields)
|| inhfields
|| subcount(class.ctors.public)
|| subcount(class.ctors.protected)
|| subcount(class.methods.public)
|| subcount(class.methods.protected)
|| inhmethods ?>
<h2>Summary</h2>
<?cs if:subcount(class.inners) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
<?cs call:write_inners_summary(class.inners) ?>
<?cs /if ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<?cs if:subcount(class.attrs) ?>
<!-- =========== FIELD SUMMARY =========== -->
<table id="lattrs" class="jd-sumtable"><tr><th colspan="12">XML Attributes</th></tr>
<?cs call:write_attr_summary(class.attrs, 1) ?>
<?cs /if ?>
<?cs # if there are inherited attrs, write the table ?>
<?cs if:inhattrs ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- =========== FIELD SUMMARY =========== -->
<table id="inhattrs" class="jd-sumtable"><tr><th>
<a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
<div style="clear:left;">Inherited XML Attributes</div></th></tr>
<?cs each:cl=class.inherited ?>
<?cs if:subcount(cl.attrs) ?>
<tr class="api apilevel-<?cs var:cl.since ?>" >
<td colspan="12">
<?cs call:expando_trigger("inherited-attrs-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?>
<?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?>
<div id="inherited-attrs-<?cs var:cl.qualified ?>">
<div id="inherited-attrs-<?cs var:cl.qualified ?>-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-attrs-<?cs var:cl.qualified ?>-summary" style="display: none;">
<table class="jd-sumtable-expando">
<?cs call:write_attr_summary(cl.attrs, cl.included) ?></table>
</div>
</div>
</td></tr>
<?cs /if ?>
<?cs /each ?>
</table>
<?cs /if ?>
<?cs if:subcount(class.enumConstants) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<table id="enumconstants" class="jd-sumtable"><tr><th colspan="12">Enum Values</th></tr>
<?cs set:count = #1 ?>
<?cs each:field=class.enumConstants ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:field.since ?>" >
<td class="jd-descrcol"><?cs call:type_link(field.type) ?>&nbsp;</td>
<td class="jd-linkcol"><?cs call:cond_link(field.name, toroot, field.href, cl.included) ?>&nbsp;</td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(field) ?>&nbsp;
<?cs call:show_annotations_list(field) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
<?cs /if ?>
<?cs if:subcount(class.constants) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
<?cs call:write_constant_summary(class.constants, 1) ?>
</table>
<?cs /if ?>
<?cs # if there are inherited constants, write the table ?>
<?cs if:inhconstants ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<table id="inhconstants" class="jd-sumtable"><tr><th>
<a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
<div style="clear:left;">Inherited Constants</div></th></tr>
<?cs each:cl=class.inherited ?>
<?cs if:subcount(cl.constants) ?>
<tr class="api apilevel-<?cs var:cl.since ?>" >
<td colspan="12">
<?cs call:expando_trigger("inherited-constants-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?>
<?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?>
<div id="inherited-constants-<?cs var:cl.qualified ?>">
<div id="inherited-constants-<?cs var:cl.qualified ?>-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-constants-<?cs var:cl.qualified ?>-summary" style="display: none;">
<table class="jd-sumtable-expando">
<?cs call:write_constant_summary(cl.constants, cl.included) ?></table>
</div>
</div>
</td></tr>
<?cs /if ?>
<?cs /each ?>
</table>
<?cs /if ?>
<?cs if:subcount(class.fields) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- =========== FIELD SUMMARY =========== -->
<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
<?cs call:write_field_summary(class.fields, 1) ?>
</table>
<?cs /if ?>
<?cs # if there are inherited fields, write the table ?>
<?cs if:inhfields ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- =========== FIELD SUMMARY =========== -->
<table id="inhfields" class="jd-sumtable"><tr><th>
<a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
<div style="clear:left;">Inherited Fields</div></th></tr>
<?cs each:cl=class.inherited ?>
<?cs if:subcount(cl.fields) ?>
<tr class="api apilevel-<?cs var:cl.since ?>" >
<td colspan="12">
<?cs call:expando_trigger("inherited-fields-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?>
<?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?>
<div id="inherited-fields-<?cs var:cl.qualified ?>">
<div id="inherited-fields-<?cs var:cl.qualified ?>-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-fields-<?cs var:cl.qualified ?>-summary" style="display: none;">
<table class="jd-sumtable-expando">
<?cs call:write_field_summary(cl.fields, cl.included) ?></table>
</div>
</div>
</td></tr>
<?cs /if ?>
<?cs /each ?>
</table>
<?cs /if ?>
<?cs if:subcount(class.ctors.public) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
<?cs call:write_method_summary(class.ctors.public, 1) ?>
</table>
<?cs /if ?>
<?cs if:subcount(class.ctors.protected) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<table id="proctors" class="jd-sumtable"><tr><th colspan="12">Protected Constructors</th></tr>
<?cs call:write_method_summary(class.ctors.protected, 1) ?>
</table>
<?cs /if ?>
<?cs if:subcount(class.methods.public) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========== METHOD SUMMARY =========== -->
<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
<?cs call:write_method_summary(class.methods.public, 1) ?>
</table>
<?cs /if ?>
<?cs if:subcount(class.methods.protected) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========== METHOD SUMMARY =========== -->
<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
<?cs call:write_method_summary(class.methods.protected, 1) ?>
</table>
<?cs /if ?>
<?cs # if there are inherited methods, write the table ?>
<?cs if:inhmethods ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========== METHOD SUMMARY =========== -->
<table id="inhmethods" class="jd-sumtable"><tr><th>
<a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
<div style="clear:left;">Inherited Methods</div></th></tr>
<?cs each:cl=class.inherited ?>
<?cs if:subcount(cl.methods) ?>
<tr class="api apilevel-<?cs var:cl.since ?>" >
<td colspan="12"><?cs call:expando_trigger("inherited-methods-"+cl.qualified, "closed") ?>
From <?cs var:cl.kind ?>
<?cs if:cl.included ?>
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
<?cs elif:cl.federated ?>
<a href="<?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
<?cs else ?>
<?cs var:cl.qualified ?>
<?cs /if ?>
<div id="inherited-methods-<?cs var:cl.qualified ?>">
<div id="inherited-methods-<?cs var:cl.qualified ?>-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-methods-<?cs var:cl.qualified ?>-summary" style="display: none;">
<table class="jd-sumtable-expando">
<?cs call:write_method_summary(cl.methods, cl.included) ?></table>
</div>
</div>
</td></tr>
<?cs /if ?>
<?cs /each ?>
</table>
<?cs /if ?>
<?cs /if ?>
</div><!-- jd-descr (summary) -->
<!-- Details -->
<?cs def:write_field_details(fields) ?>
<?cs each:field=fields ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?>
<A NAME="<?cs var:field.anchor ?>"></A>
<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?>
<div class="jd-details api apilevel-<?cs var:field.since ?>">
<h4 class="jd-details-title">
<span class="normal">
<?cs var:field.scope ?>
<?cs var:field.static ?>
<?cs var:field.final ?>
<?cs call:type_link(field.type) ?>
</span>
<?cs var:field.name ?>
</h4>
<div class="api-level">
<?cs call:since_tags(field) ?>
<?cs call:federated_refs(field) ?>
</div>
<div class="jd-details-descr">
<?cs call:show_annotations_list(field) ?>
<?cs call:description(field) ?>
<?cs if:subcount(field.constantValue) ?>
<div class="jd-tagdata">
<span class="jd-tagtitle">Constant Value: </span>
<span>
<?cs if:field.constantValue.isString ?>
<?cs var:field.constantValue.str ?>
<?cs else ?>
<?cs var:field.constantValue.dec ?>
(<?cs var:field.constantValue.hex ?>)
<?cs /if ?>
</span>
</div>
<?cs /if ?>
</div>
</div>
<?cs /each ?>
<?cs /def ?>
<?cs def:write_method_details(methods) ?>
<?cs each:method=methods ?>
<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?>
<A NAME="<?cs var:method.anchor ?>"></A>
<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?>
<div class="jd-details api apilevel-<?cs var:method.since ?>">
<h4 class="jd-details-title">
<span class="normal">
<?cs var:method.scope ?>
<?cs var:method.static ?>
<?cs var:method.final ?>
<?cs var:method.abstract ?>
<?cs var:method.synchronized ?>
<?cs call:type_link(method.returnType) ?>
</span>
<span class="sympad"><?cs var:method.name ?></span>
<span class="normal">(<?cs call:parameter_list(method.params) ?>)</span>
</h4>
<div class="api-level">
<div><?cs call:since_tags(method) ?></div>
<?cs call:federated_refs(method) ?>
</div>
<div class="jd-details-descr">
<?cs call:show_annotations_list(method) ?>
<?cs call:description(method) ?>
</div>
</div>
<?cs /each ?>
<?cs /def ?>
<?cs def:write_attr_details(attrs) ?>
<?cs each:attr=attrs ?>
<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?>
<A NAME="<?cs var:attr.anchor ?>"></A>
<div class="jd-details">
<h4 class="jd-details-title"><?cs var:attr.name ?>
</h4>
<div class="jd-details-descr">
<?cs call:show_annotations_list(attr) ?>
<?cs call:description(attr) ?>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Related Methods</h5>
<ul class="nolist">
<?cs each:m=attr.methods ?>
<li><a href="<?cs var:toroot ?><?cs var:m.href ?>"><?cs var:m.name ?></a></li>
<?cs /each ?>
</ul>
</div>
</div>
</div>
<?cs /each ?>
<?cs /def ?>
<!-- XML Attributes -->
<?cs if:subcount(class.attrs) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= FIELD DETAIL ======== -->
<h2>XML Attributes</h2>
<?cs call:write_attr_details(class.attrs) ?>
<?cs /if ?>
<!-- Enum Values -->
<?cs if:subcount(class.enumConstants) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= ENUM CONSTANTS DETAIL ======== -->
<h2>Enum Values</h2>
<?cs call:write_field_details(class.enumConstants) ?>
<?cs /if ?>
<!-- Constants -->
<?cs if:subcount(class.constants) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= ENUM CONSTANTS DETAIL ======== -->
<h2>Constants</h2>
<?cs call:write_field_details(class.constants) ?>
<?cs /if ?>
<!-- Fields -->
<?cs if:subcount(class.fields) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= FIELD DETAIL ======== -->
<h2>Fields</h2>
<?cs call:write_field_details(class.fields) ?>
<?cs /if ?>
<!-- Public ctors -->
<?cs if:subcount(class.ctors.public) ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<h2>Public Constructors</h2>
<?cs call:write_method_details(class.ctors.public) ?>
<?cs /if ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<!-- Protected ctors -->
<?cs if:subcount(class.ctors.protected) ?>
<h2>Protected Constructors</h2>
<?cs call:write_method_details(class.ctors.protected) ?>
<?cs /if ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= METHOD DETAIL ======== -->
<!-- Public methdos -->
<?cs if:subcount(class.methods.public) ?>
<h2>Public Methods</h2>
<?cs call:write_method_details(class.methods.public) ?>
<?cs /if ?>
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
<!-- ========= METHOD DETAIL ======== -->
<?cs if:subcount(class.methods.protected) ?>
<h2>Protected Methods</h2>
<?cs call:write_method_details(class.methods.protected) ?>
<?cs /if ?>
<?cs # the next two lines must be exactly like this to be parsed by eclipse ?>
<!-- ========= END OF CLASS DATA ========= -->
<A NAME="navbar_top"></A>
<?cs include:"footer.cs" ?>
</div> <!-- jd-content -->
</div><!-- end doc-content -->
<?cs include:"trailer.cs" ?>
</body>
</html>

View File

@ -0,0 +1,53 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<?cs include:"macros_override.cs" ?>
<html<?cs if:devsite ?> devsite<?cs /if ?>>
<?cs include:"head_tag.cs" ?>
<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?>
<?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
if:reference ?> reference<?cs
/if ?><?cs
elif:design ?>design<?cs
elif:distribute ?>distribute<?cs
/if ?>" itemscope itemtype="http://schema.org/Article">
<a name="top"></a>
<?cs include:"header.cs" ?>
<div class="col-12" id="doc-col">
<div id="jd-header">
<h1><?cs var:page.title ?></h1>
</div>
<div id="jd-content">
<p>These are the CyanogenMod Platform API classes. See all <a href="packages.html">API packages</a>.</p>
<div class="jd-letterlist"><?cs each:letter=docs.classes ?>
<a href="#letter_<?cs name:letter ?>"><?cs name:letter ?></a>&nbsp;&nbsp;<?cs /each?>
</div>
<?cs each:letter=docs.classes ?>
<?cs set:count = #1 ?>
<h2 id="letter_<?cs name:letter ?>"><?cs name:letter ?></h2>
<table class="jd-sumtable">
<?cs set:cur_row = #0 ?>
<?cs each:cl = letter ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.since ?>" >
<td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(cl) ?>&nbsp;
<?cs call:show_annotations_list(cl) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
</table>
<?cs /each ?>
<?cs include:"footer.cs" ?>
</div><!-- end jd-content -->
</div><!-- end doc-content -->
<?cs include:"trailer.cs" ?>
</body>
</html>

View File

@ -0,0 +1,10 @@
<?cs def:custom_masthead() ?>
<div id="header">
<div id="headerLeft">
<a href="<?cs var:toroot ?>reference/packages.html" tabindex="-1"><img
src="<?cs var:toroot ?>assets/cid_smart.png" alt="CID" width="50" height="50"/>
<span id="masthead-title">CyanogenMod Platform SDK</span></a>
</div>
</div><!-- header --><?cs
/def ?>

View File

@ -0,0 +1,516 @@
<?cs
def:fullpage() ?>
<div id="body-content">
<?cs /def ?>
<?cs
def:sdk_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/sdk/sdk_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<?cs /def ?><?cs
def:no_nav() ?>
<div class="wrap clearfix" id="body-content">
<?cs /def ?><?cs
def:tools_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/tools/tools_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:training_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/training/training_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:googleplay_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/googleplay/googleplay_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:essentials_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/essentials/essentials_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:users_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/users/users_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:engage_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/engage/engage_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:analyze_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/analyze/analyze_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:monetize_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/monetize/monetize_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:disttools_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/tools/disttools_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:stories_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs include:"../../../../frameworks/base/docs/html/distribute/stories/stories_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?><?cs
def:guide_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/guide/guide_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:design_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/design/design_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:distribute_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/distribute/distribute_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:samples_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/samples/samples_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:google_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/google/google_toc.cs" ?>
</div>
<script type="text/javascript">
showGoogleRefTree();
</script>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:about_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/about/about_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:wear_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/wear/wear_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs
def:preview_nav() ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav" class="scroll-pane">
<?cs
include:"../../../../frameworks/base/docs/html/preview/preview_toc.cs" ?>
</div>
</div> <!-- end side-nav -->
<script>
$(document).ready(function() {
scrollIntoView("devdoc-nav");
});
</script>
<?cs /def ?>
<?cs # The default side navigation for the reference docs ?><?cs
def:default_left_nav() ?>
<?cs if:reference.gcm || reference.gms ?>
<?cs call:google_nav() ?>
<?cs else ?>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav">
<div id="api-nav-header">
<div id="api-level-toggle">
<label for="apiLevelCheckbox" class="disabled"
title="Select your target API level to dim unavailable APIs">API level: </label>
<div class="select-wrapper">
<select id="apiLevelSelector">
<!-- option elements added by buildApiLevelSelector() -->
</select>
</div>
</div><!-- end toggle -->
<div id="api-nav-title">CyanogenMod APIs</div>
</div><!-- end nav header -->
<script>
var SINCE_DATA = [ <?cs
each:since = since ?>'<?cs
var:since.name ?>'<?cs
if:!last(since) ?>, <?cs /if ?><?cs
/each
?> ];
buildApiLevelSelector();
</script>
<div id="swapper">
<div id="nav-panels">
<div id="resize-packages-nav">
<div id="packages-nav" class="scroll-pane">
<ul>
<?cs call:package_link_list(docs.packages) ?>
</ul><br/>
</div> <!-- end packages-nav -->
</div> <!-- end resize-packages -->
<div id="classes-nav" class="scroll-pane">
<?cs
if:subcount(class.package) ?>
<ul>
<?cs call:list("Annotations", class.package.annotations) ?>
<?cs call:list("Interfaces", class.package.interfaces) ?>
<?cs call:list("Classes", class.package.classes) ?>
<?cs call:list("Enums", class.package.enums) ?>
<?cs call:list("Exceptions", class.package.exceptions) ?>
<?cs call:list("Errors", class.package.errors) ?>
</ul><?cs
elif:subcount(package) ?>
<ul>
<?cs call:class_link_list("Annotations", package.annotations) ?>
<?cs call:class_link_list("Interfaces", package.interfaces) ?>
<?cs call:class_link_list("Classes", package.classes) ?>
<?cs call:class_link_list("Enums", package.enums) ?>
<?cs call:class_link_list("Exceptions", package.exceptions) ?>
<?cs call:class_link_list("Errors", package.errors) ?>
</ul><?cs
else ?>
<p style="padding:10px">Select a package to view its members</p><?cs
/if ?><br/>
</div><!-- end classes -->
</div><!-- end nav-panels -->
<div id="nav-tree" style="display:none" class="scroll-pane">
<div id="tree-list"></div>
</div><!-- end nav-tree -->
</div><!-- end swapper -->
<div id="nav-swap">
<a class="fullscreen">fullscreen</a>
<a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
</div>
</div> <!-- end devdoc-nav -->
</div> <!-- end side-nav -->
<script type="text/javascript">
// init fullscreen based on user pref
var fullscreen = readCookie("fullscreen");
if (fullscreen != 0) {
if (fullscreen == "false") {
toggleFullscreen(false);
} else {
toggleFullscreen(true);
}
}
// init nav version for mobile
if (isMobile) {
swapNav(); // tree view should be used on mobile
$('#nav-swap').hide();
} else {
chooseDefaultNav();
if ($("#nav-tree").is(':visible')) {
init_default_navtree("<?cs var:toroot ?>");
}
}
// scroll the selected page into view
$(document).ready(function() {
scrollIntoView("packages-nav");
scrollIntoView("classes-nav");
});
</script>
<?cs /if ?>
<?cs
/def ?>
<?cs
def:custom_left_nav() ?><?cs
if:fullpage ?><?cs
call:fullpage() ?><?cs
elif:nonavpage ?><?cs
call:no_nav() ?><?cs
elif:guide ?><?cs
call:guide_nav() ?><?cs
elif:design ?><?cs
call:design_nav() ?><?cs
elif:training ?><?cs
call:training_nav() ?><?cs
elif:tools ?><?cs
call:tools_nav() ?><?cs
elif:google ?><?cs
call:google_nav() ?><?cs
elif:samples ?><?cs
call:samples_nav() ?><?cs
elif:distribute ?><?cs
if:googleplay ?><?cs
call:googleplay_nav() ?><?cs
elif:essentials ?><?cs
call:essentials_nav() ?><?cs
elif:users ?><?cs
call:users_nav() ?><?cs
elif:engage ?><?cs
call:engage_nav() ?><?cs
elif:monetize ?><?cs
call:monetize_nav() ?><?cs
elif:analyze ?><?cs
call:analyze_nav() ?><?cs
elif:disttools ?><?cs
call:disttools_nav() ?><?cs
elif:stories ?><?cs
call:stories_nav() ?><?cs
/if ?><?cs
elif:about ?><?cs
call:about_nav() ?><?cs
elif:distribute ?><?cs
call:distribute_nav() ?><?cs
elif:wear ?><?cs
call:wear_nav() ?><?cs
elif:preview ?><?cs
call:preview_nav() ?><?cs
else ?><?cs
call:default_left_nav() ?> <?cs
/if ?><?cs
/def ?>
<?cs # appears at the bottom of every page ?><?cs
def:custom_cc_copyright() ?>
Except as noted, this content is
licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
Creative Commons Attribution 2.5</a>. For details and
restrictions, see the <a href="<?cs var:toroot ?>license.html">Content
License</a>.<?cs
/def ?>
<?cs
def:custom_copyright() ?>
Except as noted, this content is licensed under <a
href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
For details and restrictions, see the <a href="<?cs var:toroot ?>license.html">
Content License</a>.<?cs
/def ?>
<?cs
def:custom_footerlinks() ?>
<p>
<a href="<?cs var:toroot ?>about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
<a href="<?cs var:toroot ?>legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
<a href="<?cs var:toroot ?>support.html">Support</a>
</p><?cs
/def ?>
<?cs # appears on the right side of the blue bar at the bottom off every page ?><?cs
def:custom_buildinfo() ?><?cs
if:!google && !reference.gcm && !reference.gms ?>
Android <?cs var:sdk.version ?>&nbsp;r<?cs var:sdk.rel.id ?> &mdash; <?cs
/if ?>
<script src="<?cs var:toroot ?>timestamp.js" type="text/javascript"></script>
<script>document.write(BUILD_TIMESTAMP)</script>
<?cs /def ?>

View File

@ -0,0 +1,86 @@
<head>
<?cs
####### If building devsite, add some meta data needed for when generating the top nav ######### ?>
<?cs
if:devsite ?><?cs
if:guide||develop||training||reference||tools||sdk||google||samples
?><meta name="top_category" value="develop" /><?cs
elif:google
?><meta name="top_category" value="google" /><?cs
elif:reference && !(reference.gms || reference.gcm)
?><meta name="top_category" value="css-fullscreen" /><?cs
/if ?>
<?cs
/if
?><?cs
# END if/else devsite ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=<?cs
if:page.viewport_width ?><?cs
var:page.viewport_width ?><?cs
else ?>device-width<?cs /if ?>" />
<?cs
if:page.metaDescription ?>
<meta name="Description" content="<?cs var:page.metaDescription ?>"><?cs
/if ?>
<link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" />
<title><?cs
if:page.title ?><?cs
var:page.title ?> | <?cs
/if ?>Android Developers</title>
<!-- STYLESHEETS -->
<link rel="stylesheet"
href="<?cs
if:android.whichdoc != 'online' ?>http:<?cs
/if ?>//fonts.googleapis.com/css?family=Roboto+Condensed">
<link rel="stylesheet" href="<?cs
if:android.whichdoc != 'online' ?>http:<?cs
/if ?>//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
title="roboto">
<link href="<?cs var:toroot ?>assets/css/default.css?v=5" rel="stylesheet" type="text/css">
<?cs if:reference && !(reference.gms || reference.gcm || preview) ?>
<!-- FULLSCREEN STYLESHEET -->
<link href="<?cs var:toroot ?>assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
type="text/css">
<?cs /if ?>
<!-- JAVASCRIPT -->
<script src="<?cs if:android.whichdoc != 'online' ?>http:<?cs /if ?>//www.google.com/jsapi" type="text/javascript"></script>
<?cs
if:devsite
?><script src="<?cs var:toroot ?>_static/js/android_3p-bundle.js" type="text/javascript"></script><?cs
else
?><script src="<?cs var:toroot ?>assets/js/android_3p-bundle.js" type="text/javascript"></script><?cs
/if ?><?cs
if:page.customHeadTag ?>
<?cs var:page.customHeadTag ?><?cs
/if ?>
<script type="text/javascript">
var toRoot = "<?cs var:toroot ?>";
var metaTags = [<?cs var:meta.tags ?>];
var devsite = <?cs if:devsite ?>true<?cs else ?>false<?cs /if ?>;
</script>
<script src="<?cs var:toroot ?>assets/js/docs.js?v=3" type="text/javascript"></script>
<?cs if:helpoutsWidget ?>
<script type="text/javascript" src="https://helpouts.google.com/ps/res/embed.js" defer async
data-helpouts-embed data-helpouts-vertical="programming"
data-helpouts-tags="<?cs var:page.tags ?>" data-helpouts-prefix="android"
data-helpouts-standalone="true"></script>
<?cs /if ?>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-5831155-1', 'android.com');
ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'}); // New tracker);
ga('send', 'pageview');
ga('universal.send', 'pageview'); // Send page view for new tracker.
</script>
</head>

View File

@ -0,0 +1,36 @@
<?cs # Create a comma separated list of annotations on obj that were in showAnnotations in Doclava ?>
<?cs # pre is an HTML string to start the list, post is an HTML string to close the list ?>
<?cs # for example call:show_annotations_list(cl, "<td>Annotations: ", "</td>") ?>
<?cs # if obj has nothing on obj.showAnnotations, nothing will be output ?>
<?cs def:show_annotations_list(obj) ?>
<?cs each:anno = obj.showAnnotations ?>
<?cs if:first(anno) ?>
<span class='annotation-message'>
Included in documentation by the annotations:
<?cs /if ?>
@<?cs var:anno.type.label ?>
<?cs if:last(anno) == 0 ?>
, &nbsp;
<?cs /if ?>
<?cs if:last(anno)?>
</span>
<?cs /if ?>
<?cs /each ?>
<?cs /def ?>
<?cs # Override default class_link_table to display annotations ?>
<?cs def:class_link_table(classes) ?>
<?cs set:count = #1 ?>
<table class="jd-sumtable-expando">
<?cs each:cl=classes ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.type.since ?>" >
<td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
<td class="jd-descrcol" width="100%">
<?cs call:short_descr(cl) ?>&nbsp;
<?cs call:show_annotations_list(cl) ?>
</td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
</table>
<?cs /def ?>

View File

@ -0,0 +1,65 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<?cs include:"macros_override.cs" ?>
<html<?cs if:devsite ?> devsite<?cs /if ?>>
<?cs include:"head_tag.cs" ?>
<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?>
<?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
if:reference ?> reference<?cs
/if ?><?cs
elif:design ?>design<?cs
elif:distribute ?>distribute<?cs
/if ?>">
<div id="doc-api-level" class="<?cs var:package.since ?>" style="display:none"></div>
<a name="top"></a>
<?cs include:"header.cs" ?>
<div class="col-12" id="doc-col">
<div id="api-info-block">
<div class="api-level">
<?cs call:since_tags(package) ?>
<?cs call:federated_refs(package) ?>
</div>
</div>
<div id="jd-header">
package
<h1><?cs var:package.name ?></h1>
</div><!-- end header -->
<div id="naMessage"></div>
<div id="jd-content" class="api apilevel-<?cs var:package.since ?>">
<?cs if:subcount(package.descr) ?>
<div class="jd-descr">
<?cs call:tag_list(package.descr) ?>
</div>
<?cs /if ?>
<?cs def:class_table(label, classes) ?>
<?cs if:subcount(classes) ?>
<h2><?cs var:label ?></h2>
<div class="jd-sumtable">
<?cs call:class_link_table(classes) ?>
</div>
<?cs /if ?>
<?cs /def ?>
<?cs call:class_table("Annotations", package.annotations) ?>
<?cs call:class_table("Interfaces", package.interfaces) ?>
<?cs call:class_table("Classes", package.classes) ?>
<?cs call:class_table("Enums", package.enums) ?>
<?cs call:class_table("Exceptions", package.exceptions) ?>
<?cs call:class_table("Errors", package.errors) ?>
<?cs include:"footer.cs" ?>
</div><!-- end jd-content -->
</div><!-- doc-content -->
<?cs include:"trailer.cs" ?>
</body>
</html>

View File

@ -0,0 +1,45 @@
<?cs include:"doctype.cs" ?>
<?cs include:"macros.cs" ?>
<html<?cs if:devsite ?> devsite<?cs /if ?>>
<?cs include:"head_tag.cs" ?>
<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?>
<?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs
if:reference ?> reference<?cs
/if ?><?cs
elif:design ?>design<?cs
elif:distribute ?>distribute<?cs
/if ?>">
<a name="top"></a>
<?cs include:"header.cs" ?>
<div class="col-12" id="doc-col">
<div id="jd-header">
<h1><?cs var:page.title ?></h1>
</div>
<div id="jd-content">
<div class="jd-descr">
<p><?cs call:tag_list(root.descr) ?></p>
</div>
<?cs set:count = #1 ?>
<table class="jd-sumtable">
<?cs each:pkg = docs.packages ?>
<tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:pkg.since ?>" >
<td class="jd-linkcol"><?cs call:package_link(pkg) ?></td>
<td class="jd-descrcol" width="100%"><?cs call:tag_list(pkg.shortDescr) ?></td>
</tr>
<?cs set:count = count + #1 ?>
<?cs /each ?>
</table>
<?cs include:"footer.cs" ?>
</div><!-- end jd-content -->
</div> <!-- end doc-content -->
<?cs include:"trailer.cs" ?>
</body>
</html>

View File

@ -0,0 +1 @@
var BUILD_TIMESTAMP = "<?cs var:page.now ?>";

View File

@ -1,3 +0,0 @@
# CDMA APN list
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/apns-conf-cdma.xml:system/etc/apns-conf.xml

View File

@ -9,30 +9,35 @@ UI_PATH := vendor/replicant/prebuilt/common/media/audio/ui
# Alarms
PRODUCT_COPY_FILES += \
$(ALARM_PATH)/CyanAlarm.ogg:system/media/audio/alarms/CyanAlarm.ogg \
$(ALARM_PATH)/NuclearLaunch.ogg:system/media/audio/alarms/NuclearLaunch.ogg
$(ALARM_PATH)/CyanAlarm.ogg:system/media/audio/alarms/CyanAlarm.ogg \
$(ALARM_PATH)/NuclearLaunch.ogg:system/media/audio/alarms/NuclearLaunch.ogg
# Notifications
PRODUCT_COPY_FILES += \
$(NOTIFICATION_PATH)/CyanMail.ogg:system/media/audio/notifications/CyanMail.ogg \
$(NOTIFICATION_PATH)/CyanMessage.ogg:system/media/audio/notifications/CyanMessage.ogg \
$(NOTIFICATION_PATH)/CyanPing.ogg:system/media/audio/notifications/CyanPing.ogg \
$(NOTIFICATION_PATH)/Doink.ogg:system/media/audio/notifications/Doink.ogg \
$(NOTIFICATION_PATH)/Laser.ogg:system/media/audio/notifications/Laser.ogg \
$(NOTIFICATION_PATH)/Naughty.ogg:system/media/audio/notifications/Naughty.ogg \
$(NOTIFICATION_PATH)/Pong.ogg:system/media/audio/notifications/Pong.ogg \
$(NOTIFICATION_PATH)/Rang.ogg:system/media/audio/notifications/Rang.ogg \
$(NOTIFICATION_PATH)/Stone.ogg:system/media/audio/notifications/Stone.ogg
$(NOTIFICATION_PATH)/CyanDoink.ogg:system/media/audio/notifications/CyanDoink.ogg \
$(NOTIFICATION_PATH)/CyanMail.ogg:system/media/audio/notifications/CyanMail.ogg \
$(NOTIFICATION_PATH)/CyanMessage.ogg:system/media/audio/notifications/CyanMessage.ogg \
$(NOTIFICATION_PATH)/Laser.ogg:system/media/audio/notifications/Laser.ogg \
$(NOTIFICATION_PATH)/Naughty.ogg:system/media/audio/notifications/Naughty.ogg \
$(NOTIFICATION_PATH)/Pong.ogg:system/media/audio/notifications/Pong.ogg \
$(NOTIFICATION_PATH)/Rang.ogg:system/media/audio/notifications/Rang.ogg \
$(NOTIFICATION_PATH)/Stone.ogg:system/media/audio/notifications/Stone.ogg
# Ringtones
ifeq ($(TARGET_NEEDS_BOOSTED_SOUNDS),true)
PRODUCT_COPY_FILES += \
$(RINGTONE_PATH)/Bongo.ogg:system/media/audio/ringtones/Bongo.ogg \
$(RINGTONE_PATH)/Boxbeat.ogg:system/media/audio/ringtones/Boxbeat.ogg \
$(RINGTONE_PATH)/CyanTone.ogg:system/media/audio/ringtones/CyanTone.ogg \
$(RINGTONE_PATH)/Gigolo.ogg:system/media/audio/ringtones/Gigolo.ogg \
$(RINGTONE_PATH)/Highscore.ogg:system/media/audio/ringtones/Highscore.ogg \
$(RINGTONE_PATH)/House_of_house.ogg:system/media/audio/ringtones/House_of_house.ogg \
$(RINGTONE_PATH)/Lyon.ogg:system/media/audio/ringtones/Lyon.ogg \
$(RINGTONE_PATH)/Rockin.ogg:system/media/audio/ringtones/Rockin.ogg \
$(RINGTONE_PATH)/Silmarillia.ogg:system/media/audio/ringtones/Silmarillia.ogg
$(RINGTONE_PATH)/boosted/Boxbeat.ogg:system/media/audio/ringtones/Boxbeat.ogg \
$(RINGTONE_PATH)/boosted/CyanTone.ogg:system/media/audio/ringtones/CyanTone.ogg \
$(RINGTONE_PATH)/boosted/Highscore.ogg:system/media/audio/ringtones/Highscore.ogg \
$(RINGTONE_PATH)/boosted/Lyon.ogg:system/media/audio/ringtones/Lyon.ogg \
$(RINGTONE_PATH)/boosted/Rockin.ogg:system/media/audio/ringtones/Rockin.ogg
else
PRODUCT_COPY_FILES += \
$(RINGTONE_PATH)/Boxbeat.ogg:system/media/audio/ringtones/Boxbeat.ogg \
$(RINGTONE_PATH)/CyanTone.ogg:system/media/audio/ringtones/CyanTone.ogg \
$(RINGTONE_PATH)/Highscore.ogg:system/media/audio/ringtones/Highscore.ogg \
$(RINGTONE_PATH)/Lyon.ogg:system/media/audio/ringtones/Lyon.ogg \
$(RINGTONE_PATH)/Rockin.ogg:system/media/audio/ringtones/Rockin.ogg \
$(RINGTONE_PATH)/Sheep.mp3:system/media/audio/ringtones/Sheep.mp3 \
$(RINGTONE_PATH)/Yukaay.ogg:system/media/audio/ringtones/Yukaay.ogg
endif

View File

@ -1,27 +1,73 @@
PRODUCT_BRAND ?= replicant
-include vendor/replicant-security/security.mk
ifneq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
# determine the smaller dimension
TARGET_BOOTANIMATION_SIZE := $(shell \
if [ $(TARGET_SCREEN_WIDTH) -lt $(TARGET_SCREEN_HEIGHT) ]; then \
echo $(TARGET_SCREEN_WIDTH); \
else \
echo $(TARGET_SCREEN_HEIGHT); \
fi )
SUPERUSER_EMBEDDED := true
SUPERUSER_PACKAGE_PREFIX := com.android.settings.cyanogenmod.superuser
# get a sorted list of the sizes
bootanimation_sizes := $(subst .zip,, $(shell ls vendor/replicant/prebuilt/common/bootanimation))
bootanimation_sizes := $(shell echo -e $(subst $(space),'\n',$(bootanimation_sizes)) | sort -rn)
ifneq ($(TARGET_BOOTANIMATION_NAME),)
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/bootanimation/$(TARGET_BOOTANIMATION_NAME).zip:system/media/bootanimation.zip
# find the appropriate size and set
define check_and_set_bootanimation
$(eval TARGET_BOOTANIMATION_NAME := $(shell \
if [ -z "$(TARGET_BOOTANIMATION_NAME)" ]; then
if [ $(1) -le $(TARGET_BOOTANIMATION_SIZE) ]; then \
echo $(1); \
exit 0; \
fi;
fi;
echo $(TARGET_BOOTANIMATION_NAME); ))
endef
$(foreach size,$(bootanimation_sizes), $(call check_and_set_bootanimation,$(size)))
ifeq ($(TARGET_BOOTANIMATION_HALF_RES),true)
PRODUCT_BOOTANIMATION := vendor/replicant/prebuilt/common/bootanimation/halfres/$(TARGET_BOOTANIMATION_NAME).zip
else
PRODUCT_BOOTANIMATION := vendor/replicant/prebuilt/common/bootanimation/$(TARGET_BOOTANIMATION_NAME).zip
endif
endif
ifdef CM_NIGHTLY
PRODUCT_PROPERTY_OVERRIDES += \
ro.rommanager.developerid=cyanogenmodnightly
else
PRODUCT_PROPERTY_OVERRIDES += \
ro.rommanager.developerid=cyanogenmod
endif
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
ifeq ($(PRODUCT_GMS_CLIENTID_BASE),)
PRODUCT_PROPERTY_OVERRIDES += \
ro.com.google.clientidbase=android-google
else
PRODUCT_PROPERTY_OVERRIDES += \
ro.com.google.clientidbase=$(PRODUCT_GMS_CLIENTID_BASE)
endif
PRODUCT_PROPERTY_OVERRIDES += \
keyguard.no_require_sim=true \
ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html \
ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html \
ro.com.google.clientidbase=android-google \
ro.com.android.wifi-watchlist=GoogleGuest \
ro.setupwizard.enterprise_mode=1 \
ro.com.android.dateformat=MM-dd-yyyy \
ro.com.android.dataroaming=false
PRODUCT_PROPERTY_OVERRIDES += \
ro.build.selinux=1
ifneq ($(TARGET_BUILD_VARIANT),user)
# Thank you, please drive thru!
PRODUCT_PROPERTY_OVERRIDES += persist.sys.dun.override=0
endif
ifneq ($(TARGET_BUILD_VARIANT),eng)
# Enable ADB authentication
ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
@ -34,45 +80,40 @@ PRODUCT_COPY_FILES += \
vendor/replicant/CHANGELOG.mkdn:system/etc/CHANGELOG-CM.txt
# Backup Tool
ifneq ($(WITH_GMS),true)
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/bin/backuptool.sh:system/bin/backuptool.sh \
vendor/replicant/prebuilt/common/bin/backuptool.functions:system/bin/backuptool.functions \
vendor/replicant/prebuilt/common/bin/backuptool.sh:install/bin/backuptool.sh \
vendor/replicant/prebuilt/common/bin/backuptool.functions:install/bin/backuptool.functions \
vendor/replicant/prebuilt/common/bin/50-cm.sh:system/addon.d/50-cm.sh \
vendor/replicant/prebuilt/common/bin/blacklist:system/addon.d/blacklist
endif
# Signature compatibility validation
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/bin/otasigcheck.sh:install/bin/otasigcheck.sh
# init.d support
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/init.d/00banner:system/etc/init.d/00banner \
vendor/replicant/prebuilt/common/bin/sysinit:system/bin/sysinit
ifneq ($(TARGET_BUILD_VARIANT),user)
# userinit support
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/init.d/90userinit:system/etc/init.d/90userinit
# SELinux filesystem labels
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/init.d/50selinuxrelabel:system/etc/init.d/50selinuxrelabel
endif
# CM-specific init file
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/init.local.rc:root/init.cm.rc
# Compcache/Zram support
# Copy over added mimetype supported in libcore.net.MimeUtils
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/bin/compcache:system/bin/compcache \
vendor/replicant/prebuilt/common/bin/handle_compcache:system/bin/handle_compcache
vendor/replicant/prebuilt/common/lib/content-types.properties:system/lib/content-types.properties
# Prebuilt apps
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/apps/FDroid.apk:system/app/FDroid.apk \
vendor/replicant/prebuilt/common/apps/TerminalEmulator.apk:system/app/TerminalEmulator.apk \
vendor/replicant/prebuilt/common/apps/lib/armeabi/libjackpal-termexec2.so:system/lib/libjackpal-termexec2.so \
vendor/replicant/prebuilt/common/apps/lib/armeabi/libjackpal-androidterm5.so:system/lib/libjackpal-androidterm5.so
# Bring in camera effects
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/media/LMprec_508.emd:system/media/LMprec_508.emd \
vendor/replicant/prebuilt/common/media/PFFprec_600.emd:system/media/PFFprec_600.emd
vendor/replicant/prebuilt/common/apps/FDroid.apk:system/app/FDroid.apk
# Enable SIP+VoIP on all targets
PRODUCT_COPY_FILES += \
@ -86,60 +127,73 @@ PRODUCT_COPY_FILES += \
PRODUCT_COPY_FILES += \
vendor/replicant/config/permissions/com.cyanogenmod.android.xml:system/etc/permissions/com.cyanogenmod.android.xml
# Don't export PS1 in /system/etc/mkshrc.
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/mkshrc:system/etc/mkshrc
# T-Mobile theme engine
# Theme engine
include vendor/replicant/config/themes_common.mk
# Required CM packages
PRODUCT_PACKAGES += \
Camera \
Development \
LatinIME \
Superuser \
su
BluetoothExt \
Profiles
# Optional CM packages
PRODUCT_PACKAGES += \
VoicePlus \
VideoEditor \
VoiceDialer \
SoundRecorder \
Basic
libemoji \
Terminal
# Include librsjni explicitly to workaround GMS issue
PRODUCT_PACKAGES += \
librsjni
# Custom CM packages
PRODUCT_PACKAGES += \
Launcher3 \
Trebuchet \
DSPManager \
libcyanogen-dsp \
audio_effects.conf \
AudioFX \
ReplicantWallpapers \
Apollo \
CMFileManager \
LockClock
Eleven \
LockClock \
CyanogenSetupWizard \
CMSettingsProvider \
ExactCalculator
# CM Platform Library
PRODUCT_PACKAGES += \
CellBroadcastReceiver
org.cyanogenmod.platform-res \
org.cyanogenmod.platform \
org.cyanogenmod.platform.xml
# CM Hardware Abstraction Framework
PRODUCT_PACKAGES += \
org.cyanogenmod.hardware \
org.cyanogenmod.hardware.xml
# Extra tools in CM
PRODUCT_PACKAGES += \
openvpn \
e2fsck \
libsepol \
mke2fs \
tune2fs \
bash \
vim \
nano \
htop \
powertop \
lsof \
mkfs.ntfs \
fsck.ntfs \
mount.ntfs \
gdbserver \
micro_bench \
oprofiled \
sqlite3 \
strace \
pigz
WITH_EXFAT ?= true
ifeq ($(WITH_EXFAT),true)
TARGET_USES_EXFAT := true
PRODUCT_PACKAGES += \
mount.exfat \
fsck.exfat \
mkfs.exfat \
ntfsfix \
ntfs-3g
mkfs.exfat
endif
# Openssh
PRODUCT_PACKAGES += \
@ -155,28 +209,157 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
rsync
PRODUCT_PACKAGE_OVERLAYS += vendor/replicant/overlay/dictionaries
PRODUCT_PACKAGE_OVERLAYS += vendor/replicant/overlay/common
ifeq ($(USE_OPENGL_RENDERER),true)
PRODUCT_PACKAGE_OVERLAYS += vendor/replicant/overlay/opengl
else
BOARD_EGL_CFG := vendor/replicant/prebuilt/softwaregl/configs/egl.cfg
PRODUCT_PROPERTY_OVERRIDES += ro.softwaregl=true
PRODUCT_PACKAGE_OVERLAYS += vendor/replicant/overlay/softwaregl
endif
PRODUCT_VERSION_MAJOR = 4
PRODUCT_VERSION_MINOR = 2
PRODUCT_VERSION_MAINTENANCE = 2
REPLICANT_VERSION := "replicant-4.2"
# Stagefright FFMPEG plugin
PRODUCT_PACKAGES += \
libffmpeg_extractor \
libffmpeg_omx \
media_codecs_ffmpeg.xml
PRODUCT_PROPERTY_OVERRIDES += \
ro.cm.version=$(REPLICANT_VERSION) \
ro.modversion=$(REPLICANT_VERSION)
media.sf.omx-plugin=libffmpeg_omx.so \
media.sf.extractor-plugin=libffmpeg_extractor.so
-include vendor/replicant/sepolicy/sepolicy.mk
-include $(WORKSPACE)/hudson/image-auto-bits.mk
# These packages are excluded from user builds
ifneq ($(TARGET_BUILD_VARIANT),user)
PRODUCT_PACKAGES += \
procmem \
procrank \
su
endif
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.root_access=0
PRODUCT_PACKAGE_OVERLAYS += vendor/replicant/overlay/common
PRODUCT_VERSION_MAJOR = 13
PRODUCT_VERSION_MINOR = 0
PRODUCT_VERSION_MAINTENANCE = 0-RC0
# Set CM_BUILDTYPE from the env RELEASE_TYPE, for jenkins compat
ifndef CM_BUILDTYPE
ifdef RELEASE_TYPE
# Starting with "CM_" is optional
RELEASE_TYPE := $(shell echo $(RELEASE_TYPE) | sed -e 's|^CM_||g')
CM_BUILDTYPE := $(RELEASE_TYPE)
endif
endif
# Filter out random types, so it'll reset to UNOFFICIAL
ifeq ($(filter RELEASE NIGHTLY SNAPSHOT EXPERIMENTAL,$(CM_BUILDTYPE)),)
CM_BUILDTYPE :=
endif
ifdef CM_BUILDTYPE
ifneq ($(CM_BUILDTYPE), SNAPSHOT)
ifdef CM_EXTRAVERSION
# Force build type to EXPERIMENTAL
CM_BUILDTYPE := EXPERIMENTAL
# Remove leading dash from CM_EXTRAVERSION
CM_EXTRAVERSION := $(shell echo $(CM_EXTRAVERSION) | sed 's/-//')
# Add leading dash to CM_EXTRAVERSION
CM_EXTRAVERSION := -$(CM_EXTRAVERSION)
endif
else
ifndef CM_EXTRAVERSION
# Force build type to EXPERIMENTAL, SNAPSHOT mandates a tag
CM_BUILDTYPE := EXPERIMENTAL
else
# Remove leading dash from CM_EXTRAVERSION
CM_EXTRAVERSION := $(shell echo $(CM_EXTRAVERSION) | sed 's/-//')
# Add leading dash to CM_EXTRAVERSION
CM_EXTRAVERSION := -$(CM_EXTRAVERSION)
endif
endif
else
# If CM_BUILDTYPE is not defined, set to UNOFFICIAL
CM_BUILDTYPE := UNOFFICIAL
CM_EXTRAVERSION :=
endif
ifeq ($(CM_BUILDTYPE), UNOFFICIAL)
ifneq ($(TARGET_UNOFFICIAL_BUILD_ID),)
CM_EXTRAVERSION := -$(TARGET_UNOFFICIAL_BUILD_ID)
endif
endif
ifeq ($(CM_BUILDTYPE), RELEASE)
ifndef TARGET_VENDOR_RELEASE_BUILD_ID
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
else
ifeq ($(TARGET_BUILD_VARIANT),user)
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(CM_BUILD)
else
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
endif
endif
else
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
endif
PRODUCT_PROPERTY_OVERRIDES += \
ro.cm.version=$(CM_VERSION) \
ro.cm.releasetype=$(CM_BUILDTYPE) \
ro.modversion=$(CM_VERSION) \
ro.cmlegal.url=https://cyngn.com/legal/privacy-policy
-include vendor/cm-priv/keys/keys.mk
CM_DISPLAY_VERSION := $(CM_VERSION)
ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),)
ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),build/target/product/security/testkey)
ifneq ($(CM_BUILDTYPE), UNOFFICIAL)
ifndef TARGET_VENDOR_RELEASE_BUILD_ID
ifneq ($(CM_EXTRAVERSION),)
# Remove leading dash from CM_EXTRAVERSION
CM_EXTRAVERSION := $(shell echo $(CM_EXTRAVERSION) | sed 's/-//')
TARGET_VENDOR_RELEASE_BUILD_ID := $(CM_EXTRAVERSION)
else
TARGET_VENDOR_RELEASE_BUILD_ID := $(shell date -u +%Y%m%d)
endif
else
TARGET_VENDOR_RELEASE_BUILD_ID := $(TARGET_VENDOR_RELEASE_BUILD_ID)
endif
CM_DISPLAY_VERSION=$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)
endif
endif
endif
# by default, do not update the recovery with system updates
PRODUCT_PROPERTY_OVERRIDES += persist.sys.recovery_update=false
ifndef CM_PLATFORM_SDK_VERSION
# This is the canonical definition of the SDK version, which defines
# the set of APIs and functionality available in the platform. It
# is a single integer that increases monotonically as updates to
# the SDK are released. It should only be incremented when the APIs for
# the new release are frozen (so that developers don't write apps against
# intermediate builds).
CM_PLATFORM_SDK_VERSION := 4
endif
ifndef CM_PLATFORM_REV
# For internal SDK revisions that are hotfixed/patched
# Reset after each CM_PLATFORM_SDK_VERSION release
# If you are doing a release and this is NOT 0, you are almost certainly doing it wrong
CM_PLATFORM_REV := 0
endif
PRODUCT_PROPERTY_OVERRIDES += \
ro.cm.display.version=$(CM_DISPLAY_VERSION)
# CyanogenMod Platform SDK Version
PRODUCT_PROPERTY_OVERRIDES += \
ro.cm.build.version.plat.sdk=$(CM_PLATFORM_SDK_VERSION)
# CyanogenMod Platform Internal
PRODUCT_PROPERTY_OVERRIDES += \
ro.cm.build.version.plat.rev=$(CM_PLATFORM_REV)
-include $(WORKSPACE)/build_env/image-auto-bits.mk
-include vendor/cyngn/product.mk
$(call prepend-product-if-exists, vendor/extra/product.mk)

View File

@ -1,26 +1,34 @@
# Inherit common CM stuff
$(call inherit-product, vendor/replicant/config/common.mk)
# Bring in all audio files
include frameworks/base/data/sounds/NewAudio.mk
# Extra Ringtones
include frameworks/base/data/sounds/AudioPackageNewWave.mk
# Bring in all video files
$(call inherit-product, frameworks/base/data/videos/VideoPackage2.mk)
# Include CM audio files
include vendor/replicant/config/cm_audio.mk
ifeq ($(USE_OPENGL_RENDERER),true)
PRODUCT_PACKAGES += \
HoloSpiralWallpaper \
MagicSmokeWallpapers \
NoiseField \
Galaxy4 \
HoloSpiralWallpaper \
LiveWallpapers \
LiveWallpapersPicker \
VisualizationWallpapers \
PhaseBeam
MagicSmokeWallpapers
endif
PRODUCT_PACKAGES += \
NoiseField \
PhaseBeam \
PhotoTable \
SoundRecorder \
PhotoPhase
# Extra tools in CM
PRODUCT_PACKAGES += \
7z \
bash \
bzip2 \
curl \
powertop \
unrar \
unzip \
vim \
wget \
zip

View File

@ -1,20 +1,21 @@
# Inherit common CM stuff
$(call inherit-product, vendor/replicant/config/common_full.mk)
# Default ringtone
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Orion.ogg \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Hassium.ogg
# Required CM packages
PRODUCT_PACKAGES += \
Mms
LatinIME
# BT config
PRODUCT_COPY_FILES += \
system/bluetooth/data/main.conf:system/etc/bluetooth/main.conf
# Include CM LatinIME dictionaries
PRODUCT_PACKAGE_OVERLAYS += vendor/replicant/overlay/dictionaries
ifeq ($(TARGET_BOOTANIMATION_NAME),)
# Default notification/alarm sounds
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Helium.ogg
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/bootanimation/vertical-480x800.zip:system/media/bootanimation.zip
endif
$(call inherit-product, vendor/replicant/config/telephony.mk)

View File

@ -1,15 +1,17 @@
# Inherit common CM stuff
$(call inherit-product, vendor/replicant/config/common_full.mk)
# Default ringtone
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Orion.ogg \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Hassium.ogg
# Required CM packages
PRODUCT_PACKAGES += \
LatinIME
# BT config
PRODUCT_COPY_FILES += \
system/bluetooth/data/main.nonsmartphone.conf:system/etc/bluetooth/main.conf
# Include CM LatinIME dictionaries
PRODUCT_PACKAGE_OVERLAYS += vendor/cm/overlay/dictionaries
# Default notification/alarm sounds
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Helium.ogg
ifeq ($(TARGET_BOOTANIMATION_NAME),)
PRODUCT_COPY_FILES += \

12
config/common_full_tv.mk Normal file
View File

@ -0,0 +1,12 @@
# Inherit common CM stuff
$(call inherit-product, vendor/cm/config/common_full.mk)
# Default notification/alarm sounds
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Helium.ogg
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
endif

View File

@ -1,22 +1,21 @@
# Inherit common CM stuff
$(call inherit-product, vendor/replicant/config/common.mk)
# Bring in all audio files
include frameworks/base/data/sounds/NewAudio.mk
# Include CM audio files
include vendor/replicant/config/cm_audio.mk
# Default ringtone
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Orion.ogg \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Hassium.ogg
# Required CM packages
PRODUCT_PACKAGES += \
Mms
LatinIME
# Default notification/alarm sounds
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Helium.ogg
ifeq ($(TARGET_BOOTANIMATION_NAME),)
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/bootanimation/vertical-320x480.zip:system/media/bootanimation.zip
endif
$(call inherit-product, vendor/cm/config/telephony.mk)

View File

@ -1,21 +1,17 @@
# Inherit common CM stuff
$(call inherit-product, vendor/replicant/config/common.mk)
# Bring in all audio files
include frameworks/base/data/sounds/NewAudio.mk
# Include CM audio files
include vendor/replicant/config/cm_audio.mk
# Default ringtone
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Orion.ogg \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Hassium.ogg
# Required CM packages
PRODUCT_PACKAGES += \
LatinIME
# BT config
PRODUCT_COPY_FILES += \
system/bluetooth/data/main.nonsmartphone.conf:system/etc/bluetooth/main.conf
# Default notification/alarm sounds
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Helium.ogg
ifeq ($(TARGET_BOOTANIMATION_NAME),)
PRODUCT_COPY_FILES += \

15
config/common_mini_tv.mk Normal file
View File

@ -0,0 +1,15 @@
# Inherit common CM stuff
$(call inherit-product, vendor/cm/config/common.mk)
# Include CM audio files
include vendor/cm/config/cm_audio.mk
# Default notification/alarm sounds
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.notification_sound=Argon.ogg \
ro.config.alarm_alert=Helium.ogg
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
endif

View File

@ -1,12 +0,0 @@
# GSM APN list
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/apns-conf.xml:system/etc/apns-conf.xml
# GSM SPN overrides list
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/spn-conf.xml:system/etc/spn-conf.xml
# SIM Toolkit
PRODUCT_PACKAGES += \
Stk

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The CyanogenMod 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.
-->
<permissions>
<!-- The features listed here should coincide with the various iterations of
the CyanogenMod theme engine. New org.cyanogenmod.theme.vX features
should only be added when the structure of the theme apk format is changed
-->
<!-- This is an alias for org.cyanogenmod.theme.v1 -->
<feature name="org.cyanogenmod.theme" />
<!-- Supports themes using v1 of the theme engine -->
<feature name="org.cyanogenmod.theme.v1" />
</permissions>

17
config/telephony.mk Normal file
View File

@ -0,0 +1,17 @@
# World APN list
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/apns-conf.xml:system/etc/apns-conf.xml
# Selective SPN list for operator number who has the problem.
PRODUCT_COPY_FILES += \
vendor/replicant/prebuilt/common/etc/selective-spn-conf.xml:system/etc/selective-spn-conf.xml
# Telephony packages
PRODUCT_PACKAGES += \
messaging \
Stk \
CellBroadcastReceiver
# Default ringtone
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Orion.ogg

View File

@ -1,8 +1,8 @@
# T-Mobile theme engine
# Theme engine
PRODUCT_PACKAGES += \
ThemeManager \
ThemeChooser \
com.tmobile.themes
aapt \
ThemeChooser \
ThemesProvider
PRODUCT_COPY_FILES += \
vendor/replicant/config/permissions/com.tmobile.software.themes.xml:system/etc/permissions/com.tmobile.software.themes.xml
vendor/replicant/config/permissions/org.cyanogenmod.theme.xml:system/etc/permissions/org.cyanogenmod.theme.xml

View File

@ -9,9 +9,3 @@ mkdir -p $BASEDIR/prebuilt/common/apps/
curl -L -o $BASEDIR/prebuilt/common/apps/FDroid.apk -O -L https://f-droid.org/FDroid.apk
curl -L -o $BASEDIR/prebuilt/common/apps/FDroid.apk.asc -O -L https://f-droid.org/FDroid.apk.asc
gpg --armor --verify $BASEDIR/prebuilt/common/apps/FDroid.apk.asc $BASEDIR/prebuilt/common/apps/FDroid.apk
# Terminal Emulator
curl -L -o $BASEDIR/prebuilt/common/apps/TerminalEmulator.apk -O -L https://f-droid.org/repo/jackpal.androidterm_71.apk
curl -L -o $BASEDIR/prebuilt/common/apps/TerminalEmulator.apk.asc -O -L https://f-droid.org/repo/jackpal.androidterm_71.apk.asc
gpg --armor --verify $BASEDIR/prebuilt/common/apps/TerminalEmulator.apk.asc $BASEDIR/prebuilt/common/apps/TerminalEmulator.apk
unzip -o -d $BASEDIR/prebuilt/common/apps/ $BASEDIR/prebuilt/common/apps/TerminalEmulator.apk lib/armeabi/libjackpal-termexec2.so lib/armeabi/libjackpal-androidterm5.so

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 KiB

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod 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.
-->
<resources>
<!-- Configures the voicemail number for this MCC/MNC pair //-->
<string-array translatable="false" name="config_default_vm_number">
<item>901</item>
</string-array>
</resources>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod 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.
-->
<resources>
<!-- Configures the voicemail number for this MCC/MNC pair //-->
<string-array translatable="false" name="config_default_vm_number">
<item>901</item>
</string-array>
</resources>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod 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.
-->
<resources>
<!-- Configures the voicemail number for this MCC/MNC pair //-->
<string-array translatable="false" name="config_default_vm_number">
<item>901</item>
</string-array>
</resources>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod 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.
-->
<resources>
<!-- Configures the voicemail number for this MCC/MNC pair //-->
<string-array translatable="false" name="config_default_vm_number">
<item>200</item>
</string-array>
</resources>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2013 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.
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
<!-- SoftBank maintains a MMS UserAgent whitelist, we must use one of the white-listed strings to be able to send/receive -->
<string name="config_mms_user_agent">Nexus5</string>
<string name="config_mms_user_agent_profile_url">http://www.google.com/oha/rdf/ua-profile-kila.xml</string>
</resources>

View File

@ -1,29 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- default to disabling the menu key. The CM setting to
do this is a no-op unless the below item is true -->
<bool name="config_disableMenuKeyInLockScreen">true</bool>
<!--
Copyright (C) 2013 The CyanogenMod 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="config_locationProviderPackageNames" translatable="false">
<!-- The Google provider -->
<item>com.google.android.gms</item>
<!-- The standard AOSP fused location provider -->
<item>com.android.location.fused</item>
<!-- The Google provider -->
<item>com.google.android.location</item>
</string-array>
<!-- Package name for default keyguard appwidget [DO NOT TRANSLATE] -->
<string name="widget_default_package_name">com.cyanogenmod.lockclock</string>
<!-- Class name for default keyguard appwidget [DO NOT TRANSLATE] -->
<string name="widget_default_class_name">com.cyanogenmod.lockclock.ClockWidgetProvider</string>
<bool name="config_cellBroadcastAppLinks">true</bool>
<!-- Disable stock OTA components if installed -->
<string-array name="config_disabledComponents" translatable="false">
<item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateActivity</item>
<item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService</item>
<item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService$Receiver</item>
<item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService$SecretCodeReceiver</item>
<item>com.google.android.gms/com.google.android.gms.update.SystemUpdateActivity</item>
<item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService$Receiver</item>
<item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService$ActiveReceiver</item>
<item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService$SecretCodeReceiver</item>
</string-array>
<!-- Force enabling of some services that could have been previously disabled -->
<string-array name="config_forceEnabledComponents" translatable="false">
<item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService</item>
<item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService</item>
</string-array>
<string name="config_mms_user_agent">CyanogenMod</string>
<string name="config_mms_user_agent_profile_url">http://www.google.com/oha/rdf/ua-profile-kila.xml</string>
<!-- Defines the default set of global actions. Actions may still be disabled or hidden based
on the current state of the device. -->
<string-array translatable="false" name="config_globalActionsList">
<item>power</item>
<item>reboot</item>
<item>profile</item>
<item>airplane</item>
<item>bugreport</item>
<item>users</item>
</string-array>
<!-- Defines external services to be started by the SystemServer at boot. The service itself
should publish as a binder services in its onStart -->
<string-array name="config_externalCMServices">
<item>org.cyanogenmod.platform.internal.CMStatusBarManagerService</item>
<item>org.cyanogenmod.platform.internal.ProfileManagerService</item>
<item>org.cyanogenmod.platform.internal.PartnerInterfaceService</item>
<item>org.cyanogenmod.platform.internal.CMTelephonyManagerService</item>
<item>org.cyanogenmod.platform.internal.CMHardwareService</item>
<item>org.cyanogenmod.platform.internal.AppSuggestManagerService</item>
<item>org.cyanogenmod.platform.internal.PerformanceManagerService</item>
</string-array>
</resources>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The CyanogenMod Project
<!-- Copyright (C) 2011 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.
@ -14,7 +14,7 @@
limitations under the License.
-->
<permissions>
<feature name="com.tmobile.software.themes" />
</permissions>
<resources>
<!-- No camera for you, tablet user -->
<bool name="kg_enable_camera_default_widget">true</bool>
</resources>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 The CyanogenMod 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Package name for default keyguard appwidget [DO NOT TRANSLATE] -->
<string name="widget_default_package_name">com.cyanogenmod.lockclock</string>
<!-- Class name for default keyguard appwidget [DO NOT TRANSLATE] -->
<string name="widget_default_class_name">com.cyanogenmod.lockclock.ClockWidgetProvider</string>
<!-- default to disabling the menu key. The CM setting to
do this is a no-op unless the below item is true -->
<bool name="config_disableMenuKeyInLockScreen">true</bool>
</resources>

View File

@ -17,14 +17,8 @@
*/
-->
<resources>
<string name="def_backup_transport">com.google.android.backup/.BackupTransportService</string>
<bool name="def_advanced_reboot">true</bool>
<!-- Circle -->
<integer name="def_battery_style">2</integer>
<string name="def_backup_transport">com.google.android.gms/.backup.BackupTransportService</string>
<!-- Enable notification counters in statusbar -->
<integer name="def_notif_count">1</integer>
<!-- Right QS pulldown -->
<integer name="def_qs_quick_pulldown">1</integer>
<!-- Default lockscreen targets -->
<string name="def_lockscreen_targets">#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;component=com.android.mms/.ui.ConversationList;S.icon_resource=ic_lockscreen_sms_normal;end|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;component=com.andrew.apollo/.ui.activities.HomeActivity;S.icon_resource=ic_lockscreen_music_normal;end|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;component=com.android.contacts/.activities.DialtactsActivity;S.icon_resource=ic_lockscreen_phone_normal;end|#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;component=com.android.browser/.BrowserActivity;S.icon_resource=ic_lockscreen_browser_normal;end</string>
</resources>

View File

@ -1,26 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2011, The CyanogenMod 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.
*/
Copyright (C) 2014 The CyanogenMod 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.
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
<!-- Control whether status bar should distinguish HSPA data icon form UMTS data icon on devices -->
<!-- Control whether status bar should distinguish HSPA data icon
from UMTS data icon on devices -->
<bool name="config_hspa_data_distinguishable">true</bool>
</resources>
<!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
<bool name="config_show4GForLTE">false</bool>
</resources>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2013 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.
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<mms_config version="4">
<!-- SoftBank maintains a MMS UserAgent whitelist, we must use one of the white-listed strings to be able to send/receive -->
<string name="userAgent">Nexus5</string>
<string name="uaProfUrl">http://www.google.com/oha/rdf/ua-profile-kila.xml</string>
</mms_config>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2015 The CyanogenMod 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.
-->
<resources>
<!-- Help URL, Tap & pay [DO NOT TRANSLATE] -->
<string name="help_url_nfc_payment" translatable="false">https://support.google.com/wallet/answer/1347934</string>
</resources>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2013 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.
-->
<resources>
<!-- Enable backups -->
<bool name="enable_backup">true</bool>
<string name="backup_api_key">AEdPqrEAAAAIDoOx_2qXwj5RZmKa0fpkv1aqEldrwBp-pnv6Sg</string>
</resources>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 The CyanogenMod 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- The preferred APN to use, in the format name,mcc,mnc
Leave empty to choose automatically. -->
<string name="config_preferred_apn">fast.t-mobile.com,310,260</string>
</resources>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 The CyanogenMod 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- The preferred APN to use, in the format name,mcc,mnc
Leave empty to choose automatically. -->
<string name="config_preferred_apn">pta,310,410</string>
</resources>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 The CyanogenMod 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- The preferred APN to use, in the format name,mcc,mnc
Leave empty to choose automatically. -->
<string name="config_preferred_apn">lte.ktfwing.com,450,08</string>
</resources>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod 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.
-->
<resources>
<!-- Class name for the default in-call UI Service [DO NOT TRANSLATE] -->
<string-array name="incall_default_classes" translatable="false">
<item>com.android.dialer/com.android.incallui.InCallServiceImpl</item>
<item>com.cyngn.dialer/com.android.incallui.InCallServiceImpl</item>
</string-array>
<!-- Class name for the default main dialer activity [DO NOT TRANSLATE] -->
<string-array name="dialer_default_classes" translatable="false">
<item>com.android.dialer/com.android.dialer.DialtactsActivity</item>
<item>com.cyngn.dialer/com.android.dialer.DialtactsActivity</item>
</string-array>
</resources>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod 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.
-->
<resources>
<string-array name="dialer_default_classes" translatable="false">
<item>com.android.dialer/com.android.dialer.DialtactsActivity</item>
<item>com.cyngn.dialer/com.android.dialer.DialtactsActivity</item>
</string-array>
</resources>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 The CyanogenMod 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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Automatic power profile management per app.
Each item should list the fully-qualified activity
name and the power profile id, separated by a comma. -->
<string-array name="config_auto_perf_activities" translatable="false">
<item>com.aurorasoftworks.quadrant.*BenchmarkExecutionActivity,2</item>
<item>com.antutu.ABenchMark.*,2</item>
<item>.*com.antutu.benchmark.*,2</item>
</string-array>
</resources>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2014-2015 The CyanogenMod 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.
-->
<resources>
<!-- Defaults for System -->
<!-- Default for CMSettings.System.QS_QUICK_PULLDOWN
0. Off
1. Right
2. Left -->
<integer name="def_qs_quick_pulldown">1</integer>
<!-- Defaults for Secure -->
<!-- Default for CMSettings.Secure.STATS_COLLECTION -->
<bool name="def_stats_collection">true</bool>
</resources>

View File

@ -0,0 +1,10 @@
LOCAL_PATH := $(call my-dir)
# a wrapper for curl which provides wget syntax, for compatibility
include $(CLEAR_VARS)
LOCAL_MODULE := wget
LOCAL_SRC_FILES := bin/wget
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
include $(BUILD_PREBUILT)

View File

@ -1,7 +1,7 @@
#!/sbin/sh
#
# /system/addon.d/50-cm.sh
# During a CM10 upgrade, this script backs up /system/etc/hosts,
# During a CM13.0 upgrade, this script backs up /system/etc/hosts,
# /system is formatted and reinstalled, then the file is restored.
#

View File

@ -5,7 +5,7 @@
export C=/tmp/backupdir
export S=/system
export V=10.1
export V=13.0
backup_file() {
if [ -e "$1" ]; then

View File

@ -5,27 +5,39 @@
export C=/tmp/backupdir
export S=/system
export V=10.1
export V=13.0
# Scripts in /system/addon.d expect to find backuptool.functions in /tmp
cp -f /tmp/install/bin/backuptool.functions /tmp
# Preserve /system/addon.d in /tmp/addon.d
preserve_addon_d() {
mkdir -p /tmp/addon.d/
cp -a /system/addon.d/* /tmp/addon.d/
chmod 755 /tmp/addon.d/*.sh
if [ -d /system/addon.d/ ]; then
mkdir -p /tmp/addon.d/
cp -a /system/addon.d/* /tmp/addon.d/
chmod 755 /tmp/addon.d/*.sh
fi
}
# Restore /system/addon.d in /tmp/addon.d
# Restore /system/addon.d from /tmp/addon.d
restore_addon_d() {
cp -a /tmp/addon.d/* /system/addon.d/
rm -rf /tmp/addon.d/
if [ -d /tmp/addon.d/ ]; then
cp -a /tmp/addon.d/* /system/addon.d/
rm -rf /tmp/addon.d/
fi
}
# Proceed only if /system is the expected major and minor version
check_prereq() {
# If there is no build.prop file the partition is probably empty.
if [ ! -r /system/build.prop ]; then
return 0
fi
if ( ! grep -q "^ro.cm.version=$V.*" /system/build.prop ); then
echo "Not backing up files from incompatible version: $V"
exit 127
return 0
fi
return 1
}
check_blacklist() {
@ -33,23 +45,47 @@ check_blacklist() {
## Discard any known bad backup scripts
cd /$1/addon.d/
for f in *sh; do
s=$(md5sum $f | awk {'print $1'})
s=$(md5sum $f | cut -c-32)
grep -q $s /system/addon.d/blacklist && rm -f $f
done
fi
}
check_whitelist() {
found=0
if [ -f /system/addon.d/whitelist ];then
## forcefully keep any version-independent stuff
cd /$1/addon.d/
for f in *sh; do
s=$(md5sum $f | cut -c-32)
grep -q $s /system/addon.d/whitelist
if [ $? -eq 0 ]; then
found=1
else
rm -f $f
fi
done
fi
return $found
}
# Execute /system/addon.d/*.sh scripts with $1 parameter
run_stage() {
for script in $(find /tmp/addon.d/ -name '*.sh' |sort -n); do
$script $1
done
if [ -d /tmp/addon.d/ ]; then
for script in $(find /tmp/addon.d/ -name '*.sh' |sort -n); do
$script $1
done
fi
}
case "$1" in
backup)
mkdir -p $C
check_prereq
if check_prereq; then
if check_whitelist system; then
exit 127
fi
fi
check_blacklist system
preserve_addon_d
run_stage pre-backup
@ -57,7 +93,11 @@ case "$1" in
run_stage post-backup
;;
restore)
check_prereq
if check_prereq; then
if check_whitelist tmp; then
exit 127
fi
fi
check_blacklist tmp
run_stage pre-restore
run_stage restore

View File

@ -1,53 +0,0 @@
#!/system/bin/sh
#
# Compcache manager
# shade@chemlab.org (cyanogen)
#
isramzswap="$(find /system/lib/modules/ -name ramzswap.ko 2>/dev/null)"
isramzswapbuiltin="$(ls -l /dev/block/ramzswap0 2>/dev/null)"
if [ -n "$isramzswap$isramzswapbuiltin" ] ; then
MODULE=ramzswap
DEV=/dev/block/ramzswap0
else
DEV=/dev/block/zram0
MODULE=zram
SYSFS_PATH=/sys/block/zram0
fi
case "$1" in
start)
echo 3 > /proc/sys/vm/drop_caches
echo 30 > /proc/sys/vm/swappiness
modprobe $MODULE
if [ $MODULE = ramzswap ]; then
rzscontrol $DEV --disksize_kb=$2 --init
else
echo "$(($2 * 1024))" > $SYSFS_PATH/disksize
mkswap $DEV >/dev/null
fi
swapon $DEV
;;
stop)
swapoff $DEV >/dev/null 2>&1
rmmod $MODULE >/dev/null 2>&1
;;
stats)
if [ $MODULE = ramzswap ]; then
rzscontrol $DEV --stats
else
cd $SYSFS_PATH && for i in * ; do
echo -n "$i:"
cat $i
done
fi
;;
*)
echo "Usage: $0 {start <size>|stop|stats}"
exit 1
esac
exit 0

View File

@ -1,484 +0,0 @@
#! /system/bin/sh
#
# Warning: if you want to run this script in cm-recovery change the above to #!/sbin/sh
#
# fix_permissions - fixes permissions on Android data directories after upgrade
# shade@chemlab.org
#
# original concept: http://blog.elsdoerfer.name/2009/05/25/android-fix-package-uid-mismatches/
# implementation by: Cyanogen
# improved by: ankn, smeat, thenefield, farmatito, rikupw, Kastro
#
# v1.1-v1.31r3 - many improvements and concepts from XDA developers.
# v1.34 through v2.00 - A lot of frustration [by Kastro]
# v2.01 - Completely rewrote the script for SPEED, thanks for the input farmatito
# /data/data depth recursion is tweaked;
# fixed single mode;
# functions created for modularity;
# logging can be disabled via CLI for more speed;
# runtime computation added to end (Runtime: mins secs);
# progress (current # of total) added to screen;
# fixed CLI argument parsing, now you can have more than one option!;
# debug cli option;
# verbosity can be disabled via CLI option for less noise;;
# [by Kastro, (XDA: k4str0), twitter;mattcarver]
# v2.02 - ignore com.htc.resources.apk if it exists and minor code cleanups,
# fix help text, implement simulated run (-s) [farmatito]
# v2.03 - fixed chown group ownership output [Kastro]
# v2.04 - replaced /system/sd with $SD_EXT_DIRECTORY [Firerat]
VERSION="2.04"
# Defaults
DEBUG=0 # Debug off by default
LOGGING=1 # Logging on by default
VERBOSE=1 # Verbose on by default
# Messages
UID_MSG="Changing user ownership for:"
GID_MSG="Changing group ownership for:"
PERM_MSG="Changing permissions for:"
# Programs needed
ECHO="busybox echo"
GREP="busybox grep"
EGREP="busybox egrep"
CAT="busybox cat"
CHOWN="busybox chown"
CHMOD="busybox chmod"
MOUNT="busybox mount"
UMOUNT="busybox umount"
CUT="busybox cut"
FIND="busybox find"
LS="busybox ls"
TR="busybox tr"
TEE="busybox tee"
TEST="busybox test"
SED="busybox sed"
RM="busybox rm"
WC="busybox wc"
EXPR="busybox expr"
DATE="busybox date"
# Initialise vars
CODEPATH=""
LOCALUID=""
LOCALGID=""
PACKAGE=""
REMOVE=0
NOSYSTEM=0
ONLY_ONE=""
SIMULATE=0
SYSREMOUNT=0
SYSMOUNT=0
DATAMOUNT=0
SYSSDMOUNT=0
FP_STARTTIME=$( $DATE +"%m-%d-%Y %H:%M:%S" )
FP_STARTEPOCH=$( $DATE +%s )
if $TEST "$SD_EXT_DIRECTORY" = ""; then
#check for mount point, /system/sd included in tests for backward compatibility
for MP in /sd-ext /system/sd;do
if $TEST -d $MP; then
SD_EXT_DIRECTORY=$MP
break
fi
done
fi
fp_usage()
{
$ECHO "Usage $0 [OPTIONS] [APK_PATH]"
$ECHO " -d turn on debug"
$ECHO " -f fix only package APK_PATH"
$ECHO " -l disable logging for this run (faster)"
$ECHO " -r remove stale data directories"
$ECHO " of uninstalled packages while fixing permissions"
$ECHO " -s simulate only"
$ECHO " -u check only non-system directories"
$ECHO " -v disable verbosity for this run (less output)"
$ECHO " -V print version"
$ECHO " -h this help"
}
fp_parseargs()
{
# Parse options
while $TEST $# -ne 0; do
case "$1" in
-d)
DEBUG=1
;;
-f)
if $TEST $# -lt 2; then
$ECHO "$0: missing argument for option $1"
exit 1
else
if $TEST $( $ECHO $2 | $CUT -c1 ) != "-"; then
ONLY_ONE=$2
shift;
else
$ECHO "$0: missing argument for option $1"
exit 1
fi
fi
;;
-r)
REMOVE=1
;;
-s)
SIMULATE=1
;;
-l)
if $TEST $LOGGING -eq 0; then
LOGGING=1
else
LOGGING=0
fi
;;
-v)
if $TEST $VERBOSE -eq 0; then
VERBOSE=1
else
VERBOSE=0
fi
;;
-u)
NOSYSTEM=1
;;
-V)
$ECHO "$0 $VERSION"
exit 0
;;
-h)
fp_usage
exit 0
;;
-*)
$ECHO "$0: unknown option $1"
$ECHO
fp_usage
exit 1
;;
esac
shift;
done
}
fp_print()
{
MSG=$@
if $TEST $LOGGING -eq 1; then
$ECHO $MSG | $TEE -a $LOG_FILE
else
$ECHO $MSG
fi
}
fp_start()
{
if $TEST $SIMULATE -eq 0 ; then
if $TEST $( $GREP -c " /system " "/proc/mounts" ) -ne 0; then
DEVICE=$( $GREP " /system " "/proc/mounts" | $CUT -d ' ' -f1 )
if $TEST $DEBUG -eq 1; then
fp_print "/system mounted on $DEVICE"
fi
if $TEST $( $GREP " /system " "/proc/mounts" | $GREP -c " ro " ) -ne 0; then
$MOUNT -o remount,rw $DEVICE /system
SYSREMOUNT=1
fi
else
$MOUNT /system > /dev/null 2>&1
SYSMOUNT=1
fi
if $TEST $( $GREP -c " /data " "/proc/mounts" ) -eq 0; then
$MOUNT /data > /dev/null 2>&1
DATAMOUNT=1
fi
if $TEST -e /dev/block/mmcblk0p2 && $TEST $( $GREP -c " $SD_EXT_DIRECTORY " "/proc/mounts" ) -eq 0; then
$MOUNT $SD_EXT_DIRECTORY > /dev/null 2>&1
SYSSDMOUNT=1
fi
fi
if $TEST $( $MOUNT | $GREP -c /sdcard ) -eq 0; then
LOG_FILE="/data/fix_permissions.log"
else
LOG_FILE="/sdcard/fix_permissions.log"
fi
if $TEST ! -e "$LOG_FILE"; then
> $LOG_FILE
fi
fp_print "$0 $VERSION started at $FP_STARTTIME"
}
fp_chown_uid()
{
FP_OLDUID=$1
FP_UID=$2
FP_FILE=$3
#if user ownership doesn't equal then change them
if $TEST "$FP_OLDUID" != "$FP_UID"; then
if $TEST $VERBOSE -ne 0; then
fp_print "$UID_MSG $FP_FILE from '$FP_OLDUID' to '$FP_UID'"
fi
if $TEST $SIMULATE -eq 0; then
$CHOWN $FP_UID "$FP_FILE"
fi
fi
}
fp_chown_gid()
{
FP_OLDGID=$1
FP_GID=$2
FP_FILE=$3
#if group ownership doesn't equal then change them
if $TEST "$FP_OLDGID" != "$FP_GID"; then
if $TEST $VERBOSE -ne 0; then
fp_print "$GID_MSG $FP_FILE from '$FP_OLDGID' to '$FP_GID'"
fi
if $TEST $SIMULATE -eq 0; then
$CHOWN :$FP_GID "$FP_FILE"
fi
fi
}
fp_chmod()
{
FP_OLDPER=$1
FP_OLDPER=$( $ECHO $FP_OLDPER | cut -c2-10 )
FP_PERSTR=$2
FP_PERNUM=$3
FP_FILE=$4
#if the permissions are not equal
if $TEST "$FP_OLDPER" != "$FP_PERSTR"; then
if $TEST $VERBOSE -ne 0; then
fp_print "$PERM_MSG $FP_FILE from '$FP_OLDPER' to '$FP_PERSTR' ($FP_PERNUM)"
fi
#change the permissions
if $TEST $SIMULATE -eq 0; then
$CHMOD $FP_PERNUM "$FP_FILE"
fi
fi
}
fp_all()
{
FP_NUMS=$( $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | $WC -l )
I=0
$CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | while read all_line; do
I=$( $EXPR $I + 1 )
fp_package "$all_line" $I $FP_NUMS
done
}
fp_single()
{
FP_SFOUND=$( $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | $GREP -i $ONLY_ONE | wc -l )
if $TEST $FP_SFOUND -gt 1; then
fp_print "Cannot perform single operation on $FP_SFOUND matched package(s)."
elif $TEST $FP_SFOUND = "" -o $FP_SFOUND -eq 0; then
fp_print "Could not find the package you specified in the packages.xml file."
else
FP_SPKG=$( $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | $GREP -i $ONLY_ONE )
fp_package "${FP_SPKG}" 1 1
fi
}
fp_package()
{
pkgline=$1
curnum=$2
endnum=$3
CODEPATH=$( $ECHO $pkgline | $SED 's%.* codePath="\(.*\)".*%\1%' | $CUT -d '"' -f1 )
PACKAGE=$( $ECHO $pkgline | $SED 's%.* name="\(.*\)".*%\1%' | $CUT -d '"' -f1 )
LOCALUID=$( $ECHO $pkgline | $SED 's%.*serId="\(.*\)".*%\1%' | $CUT -d '"' -f1 )
LOCALGID=$LOCALUID
APPDIR=$( $ECHO $CODEPATH | $SED 's%^\(.*\)/.*%\1%' )
APK=$( $ECHO $CODEPATH | $SED 's%^.*/\(.*\..*\)$%\1%' )
#debug
if $TEST $DEBUG -eq 1; then
fp_print "CODEPATH: $CODEPATH APPDIR: $APPDIR APK:$APK UID/GID:$LOCALUID:$LOCALGID"
fi
#check for existence of apk
if $TEST -e $CODEPATH; then
fp_print "Processing ($curnum of $endnum): $PACKAGE..."
#lets get existing permissions of CODEPATH
OLD_UGD=$( $LS -ln "$CODEPATH" )
OLD_PER=$( $ECHO $OLD_UGD | $CUT -d ' ' -f1 )
OLD_UID=$( $ECHO $OLD_UGD | $CUT -d ' ' -f3 )
OLD_GID=$( $ECHO $OLD_UGD | $CUT -d ' ' -f4 )
#apk source dirs
if $TEST "$APPDIR" = "/system/app"; then
#skip system apps if set
if $TEST "$NOSYSTEM" = "1"; then
fp_print "***SKIPPING SYSTEM APP ($PACKAGE)!"
return
fi
fp_chown_uid $OLD_UID 0 "$CODEPATH"
fp_chown_gid $OLD_GID 0 "$CODEPATH"
fp_chmod $OLD_PER "rw-r--r--" 644 "$CODEPATH"
elif $TEST "$APPDIR" = "/data/app" || $TEST "$APPDIR" = "/sd-ext/app"; then
fp_chown_uid $OLD_UID 1000 "$CODEPATH"
fp_chown_gid $OLD_GID 1000 "$CODEPATH"
fp_chmod $OLD_PER "rw-r--r--" 644 "$CODEPATH"
elif $TEST "$APPDIR" = "/data/app-private" || $TEST "$APPDIR" = "/sd-ext/app-private"; then
fp_chown_uid $OLD_UID 1000 "$CODEPATH"
fp_chown_gid $OLD_GID $LOCALGID "$CODEPATH"
fp_chmod $OLD_PER "rw-r-----" 640 "$CODEPATH"
fi
else
fp_print "$CODEPATH does not exist ($curnum of $endnum). Reinstall..."
if $TEST $REMOVE -eq 1; then
if $TEST -d /data/data/$PACKAGE ; then
fp_print "Removing stale dir /data/data/$PACKAGE"
if $TEST $SIMULATE -eq 0 ; then
$RM -R /data/data/$PACKAGE
fi
fi
fi
fi
#the data/data for the package
if $TEST -d "/data/data/$PACKAGE"; then
#find all directories in /data/data/$PACKAGE
$FIND /data/data/$PACKAGE -type d -exec $LS -ldn {} \; | while read dataline; do
#get existing permissions of that directory
OLD_PER=$( $ECHO $dataline | $CUT -d ' ' -f1 )
OLD_UID=$( $ECHO $dataline | $CUT -d ' ' -f3 )
OLD_GID=$( $ECHO $dataline | $CUT -d ' ' -f4 )
FILEDIR=$( $ECHO $dataline | $CUT -d ' ' -f9 )
FOURDIR=$( $ECHO $FILEDIR | $CUT -d '/' -f5 )
#set defaults for iteration
ISLIB=0
REVPERM=755
REVPSTR="rwxr-xr-x"
REVUID=$LOCALUID
REVGID=$LOCALGID
if $TEST "$FOURDIR" = ""; then
#package directory, perms:755 owner:$LOCALUID:$LOCALGID
fp_chmod $OLD_PER "rwxr-xr-x" 755 "$FILEDIR"
elif $TEST "$FOURDIR" = "lib"; then
#lib directory, perms:755 owner:1000:1000
#lib files, perms:755 owner:1000:1000
ISLIB=1
REVPERM=755
REVPSTR="rwxr-xr-x"
REVUID=1000
REVGID=1000
fp_chmod $OLD_PER "rwxr-xr-x" 755 "$FILEDIR"
elif $TEST "$FOURDIR" = "shared_prefs"; then
#shared_prefs directories, perms:771 owner:$LOCALUID:$LOCALGID
#shared_prefs files, perms:660 owner:$LOCALUID:$LOCALGID
REVPERM=660
REVPSTR="rw-rw----"
fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
elif $TEST "$FOURDIR" = "databases"; then
#databases directories, perms:771 owner:$LOCALUID:$LOCALGID
#databases files, perms:660 owner:$LOCALUID:$LOCALGID
REVPERM=660
REVPSTR="rw-rw----"
fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
elif $TEST "$FOURDIR" = "cache"; then
#cache directories, perms:771 owner:$LOCALUID:$LOCALGID
#cache files, perms:600 owner:$LOCALUID:$LOCALGID
REVPERM=600
REVPSTR="rw-------"
fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
else
#other directories, perms:771 owner:$LOCALUID:$LOCALGID
REVPERM=771
REVPSTR="rwxrwx--x"
fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
fi
#change ownership of directories matched
if $TEST "$ISLIB" = "1"; then
fp_chown_uid $OLD_UID 1000 "$FILEDIR"
fp_chown_gid $OLD_GID 1000 "$FILEDIR"
else
fp_chown_uid $OLD_UID $LOCALUID "$FILEDIR"
fp_chown_gid $OLD_GID $LOCALGID "$FILEDIR"
fi
#if any files exist in directory with improper permissions reset them
$FIND $FILEDIR -type f -maxdepth 1 ! -perm $REVPERM -exec $LS -ln {} \; | while read subline; do
OLD_PER=$( $ECHO $subline | $CUT -d ' ' -f1 )
SUBFILE=$( $ECHO $subline | $CUT -d ' ' -f9 )
fp_chmod $OLD_PER $REVPSTR $REVPERM "$SUBFILE"
done
#if any files exist in directory with improper user reset them
$FIND $FILEDIR -type f -maxdepth 1 ! -user $REVUID -exec $LS -ln {} \; | while read subline; do
OLD_UID=$( $ECHO $subline | $CUT -d ' ' -f3 )
SUBFILE=$( $ECHO $subline | $CUT -d ' ' -f9 )
fp_chown_uid $OLD_UID $REVUID "$SUBFILE"
done
#if any files exist in directory with improper group reset them
$FIND $FILEDIR -type f -maxdepth 1 ! -group $REVGID -exec $LS -ln {} \; | while read subline; do
OLD_GID=$( $ECHO $subline | $CUT -d ' ' -f4 )
SUBFILE=$( $ECHO $subline | $CUT -d ' ' -f9 )
fp_chown_gid $OLD_GID $REVGID "$SUBFILE"
done
done
fi
}
date_diff()
{
if $TEST $# -ne 2; then
FP_DDM="E"
FP_DDS="E"
return
fi
FP_DDD=$( $EXPR $2 - $1 )
FP_DDM=$( $EXPR $FP_DDD / 60 )
FP_DDS=$( $EXPR $FP_DDD % 60 )
}
fp_end()
{
if $TEST $SYSREMOUNT -eq 1; then
$MOUNT -o remount,ro $DEVICE /system > /dev/null 2>&1
fi
if $TEST $SYSSDMOUNT -eq 1; then
$UMOUNT $SD_EXT_DIRECTORY > /dev/null 2>&1
fi
if $TEST $SYSMOUNT -eq 1; then
$UMOUNT /system > /dev/null 2>&1
fi
if $TEST $DATAMOUNT -eq 1; then
$UMOUNT /data > /dev/null 2>&1
fi
FP_ENDTIME=$( $DATE +"%m-%d-%Y %H:%M:%S" )
FP_ENDEPOCH=$( $DATE +%s )
date_diff $FP_STARTEPOCH $FP_ENDEPOCH
fp_print "$0 $VERSION ended at $FP_ENDTIME (Runtime:${FP_DDM}m${FP_DDS}s)"
}
#MAIN SCRIPT
fp_parseargs $@
fp_start
if $TEST "$ONLY_ONE" != "" -a "$ONLY_ONE" != "0" ; then
fp_single "$ONLY_ONE"
else
fp_all
fi
fp_end

View File

@ -1,31 +0,0 @@
#!/system/bin/sh
#
# Compcache handler
# Decides whether or not Compcache is enabled
#
MEMTOTAL=$( awk '{ if ($1 eq "MemTotal:") print $2 ;exit }' </proc/meminfo )
if [ `getprop persist.service.zram` == 1 ];
then
PROP=`getprop ro.zram.default`
setprop persist.service.zram $PROP
fi
if [ -e /data/property/persist.service.zram ];
then
PROP=`getprop persist.service.zram`
else
PROP=`getprop ro.zram.default`
setprop persist.service.zram $PROP
fi
if [ $PROP != 0 ]
then
CCSIZE=$(($(($MEMTOTAL * $PROP)) / 100))
`dirname $0`/compcache start $CCSIZE
else
`dirname $0`/compcache stop
fi
exit 0

View File

@ -0,0 +1,31 @@
#!/sbin/sh
# Validate that the incoming OTA is compatible with an already-installed
# system
grep -q "Command:.*\"--wipe\_data\"" /tmp/recovery.log
if [ $? -eq 0 ]; then
echo "Data will be wiped after install; skipping signature check..."
exit 0
fi
grep -q "Command:.*\"--headless\"" /tmp/recovery.log
if [ $? -eq 0 ]; then
echo "Headless mode install; skipping signature check..."
exit 0
fi
if [ -f /data/system/packages.xml -a -f /tmp/releasekey ]; then
relCert=$(grep -A3 'package name="com.android.htmlviewer"' /data/system/packages.xml | grep "cert index" | head -n 1 | sed -e 's|.*"\([[:digit:]][[:digit:]]*\)".*|\1|g')
# Tools missing? Err on the side of caution and exit cleanly
if [ "z$relCert" == "z" ]; then exit 0; fi
grep "cert index=\"$relCert\"" /data/system/packages.xml | grep -q `cat /tmp/releasekey`
if [ $? -ne 0 ]; then
echo "You have an installed system that isn't signed with this build's key, aborting..."
exit 124
fi
fi
exit 0

View File

@ -1,4 +1,9 @@
#!/system/bin/sh
export PATH=/sbin:/system/sbin:/system/bin:/system/xbin
/system/bin/logwrapper /system/xbin/run-parts /system/etc/init.d
for i in /system/etc/init.d/*; do
if [ -x $i ]; then
/system/bin/log -t sysinit Running $i
$i
fi
done

184
prebuilt/common/bin/wget Executable file
View File

@ -0,0 +1,184 @@
#!/system/bin/sh
# wget-curl, a curl wrapper acting as a wget drop-in replacement - version git-HEAD
# Usage: wget [wget args] [i need to fill this in later] <url(s)>
# Download all URLs given using curl, but using wget's options.
#
#
# End of help.
# Copyright (c) 2015 Kylie McClain <somasis@exherbo.org>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# End of copyright.
#
set -o pipefail
shopt -u shift_verbose >/dev/null 2>&1
help() {
sed -n '/^#/!d;s/^# //;s/^#//;3,${p;}' "$0" | \
while IFS= read help_line;do
if [[ "$help_line" == "End of help." ]];then
exit 0
else
printf "%s\n" "$help_line"
fi
done
exit 0
}
version() {
sed 's/^# //;s/, .* - version / /;2q;$!d' "$0"
copyright
exit 0
}
copyright() {
sed -n '/^#/!d;s/^# //;s/^#//;/End of help./,${p;}' "$0" | \
while IFS= read copyright_line;do
if [[ "$copyright_line" == "End of help." ]];then
true
elif [[ "$copyright_line" == "End of copyright." ]];then
break
else
printf '%s\n' "$copyright_line"
fi
done
}
stderr() {
printf "$@" >&2
}
error() {
stderr "$0: $1\n"
exit "$2"
}
invalid_arg() {
error "invalid option -- '$1'" 2
}
append_opt() {
for opt in $@;do
CURL_OPTS="${CURL_OPTS} ${opt}"
done
}
curl() {
eval "command curl $@ ${CURL_RAW}"
}
append_raw_arg() {
CURL_RAW="$CURL_RAW $@"
}
has_opt() { # exit 0 if CURL_OPTS has arg, non-zero if doesn't
if [[ "$CURL_OPTS" == *" $1"* ]];then
return 0
else
return 1
fi
}
reexec_without() { # download afterwards without $1 in OPTS
reexec_args_without="$reexec_args_without $@"
reexec=1
}
reexec_only() {
for arg in $@;do
CURL_OPTS_REEXEC_ONLY="${CURL_OPTS_REEXEC_ONLY} $arg"
done
}
print_url() {
has_opt -s || printf "%s\n" "$1"
}
# 46ABDFHIKLNOPQRSTUVXabcdhiklm nH nc nd np nv opqrtvwx
while getopts ':46ABDFHIKLNO:PQRST:U:VXa:bcdhiklmopqrtvwx' argument "$@";do
case "$argument" in
# a lot of these are noop right now because they are wget mirror args
# which curl doesn't really do, and i am not sure if i should implement them
4) append_opt -4 ;;
6) append_opt -6 ;;
A) true ;; # probably can't implement this easily...
B) true ;;
D) true ;;
E) true ;;
F) true ;; # curl doesn't care what the input is
H) true ;;
I) true ;;
K) true ;;
L) true ;;
N) true ;;
O) append_opt "-o $OPTARG" ;;
P) true ;;
Q) true ;;
R) true ;;
S) append_opt -I;reexec_without -I -s ;;
T) append_opt "-m $OPTARG" ;;
U) append_opt "--user-agent \"$OPTARG\"" ;;
V) version; curl --version; exit 0 ;;
X) true ;;
a) append_raw_arg "2>&1 | tee -a $OPTARG" ;;
b)
wget_log="wget-log"
i=1
while [[ -f "${wget_log}" ]];do
# if that exists, increment until we find something that doesn't
i=$(($i+1))
wget_log="wget-log.${i}"
done
append_raw_arg ">\"$wget_log\" 2>&1 &"
printf "Continuing in background, pid %s.\nOutput will be written to '$wget_log'.\n" "$$"
;;
c) append_opt "-C -" ;;
d) append_opt "-v" ;;
e) true ;;
h) help ;;
i)
[[ ! -f "$OPTARG" ]] && error "$OPTARG does not exist" 3
for url in $(<"$OPTARG");do
URLS=( ${URLS[@]} "$url" )
done
;;
q) append_opt "-s" ;;
esac
shift $(($OPTIND-1))
done
# set wget default equivilants
append_opt -L # follow redirects
append_opt -# # progress bar
if [[ -z "${URLS[@]}" ]];then
URLS=( ${@} )
fi
for url in ${URLS[@]};do
url_file=${url##*/}
if [[ "$url" == "$url_file" ]];then
# has no remote file name and -o is not in CURL_OPTS... assume index.html
has_opt -o || append_opt "-o index.html"
fi
eval "print_url '$url';curl ${CURL_OPTS} -- $url"
if [[ "$reexec" ]];then
for reexec_arg in ${reexec_args_without};do
CURL_OPTS_REEXEC=$(echo "${CURL_OPTS_REEXEC:-$CURL_OPTS}" | sed "s# $reexec_arg##")
done
eval "print_url '$url';curl ${CURL_OPTS_REEXEC} ${CURL_OPTS_REEXEC_ONLY} -- $url"
fi
done

View File

@ -0,0 +1 @@
b0a27bcb5c7504a81e1450a8313e37cb

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More