headdesk 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +8 -0
- data/docs/api26.md +14 -0
- data/docs/facebook.md +30 -0
- data/docs/receiver.md +28 -0
- data/docs/teak/api21_icon.md +24 -0
- data/docs/teak/caching.md +18 -0
- data/docs/teak/configuration.md +29 -0
- data/lib/headdesk/check.rb +5 -0
- data/lib/headdesk/checks/teak.rb +1 -1
- data/lib/headdesk/report.rb +5 -1
- data/lib/headdesk/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: baa239641bcf15d4fada12d0909b5f9e6e3bf006
|
4
|
+
data.tar.gz: '082b47e0e4093a7deffda1ad64034f41e091f718'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9a255eda983eac233626efd5edd88cc72b027200937abf7466e7cccaf8f2b54f2f7663543f57a22f078396197eb2b2d39f53f8ac8a44c0e532b364d296c4c26
|
7
|
+
data.tar.gz: 4af639f3ac6e3cc687b8d810eba3f1854b124ecc718215d377fd2ae8ac7e4f9a81a79cf5188695f58119dd3b6bed8cec6a002b9dd6e0a02669052d5cf5404540
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
headdesk (0.
|
4
|
+
headdesk (0.5.0)
|
5
5
|
awesome_print (~> 1.8)
|
6
6
|
nokogiri (~> 1.10)
|
7
7
|
thor (~> 0.20)
|
@@ -27,7 +27,7 @@ GEM
|
|
27
27
|
jaro_winkler (1.5.1)
|
28
28
|
kwalify (0.7.2)
|
29
29
|
mini_portile2 (2.4.0)
|
30
|
-
nokogiri (1.10.
|
30
|
+
nokogiri (1.10.1)
|
31
31
|
mini_portile2 (~> 2.4.0)
|
32
32
|
parallel (1.12.1)
|
33
33
|
parser (2.5.3.0)
|
data/README.md
CHANGED
@@ -15,6 +15,14 @@ This is output from the check that ensures that the version of the Facebook SDK
|
|
15
15
|
|
16
16
|
`headdesk` can also output to JSON.
|
17
17
|
|
18
|
+
## Checks
|
19
|
+
* [api26](docs/api26.md)
|
20
|
+
* [facebook](docs/facebook.md)
|
21
|
+
* [receiver](docs/receiver.md)
|
22
|
+
* [teak/api21_icon](docs/teak/api21_icon.md)
|
23
|
+
* [teak/caching](docs/teak/caching.md)
|
24
|
+
* [teak/configuration](docs/teak/configuration.md)
|
25
|
+
|
18
26
|
## Installation
|
19
27
|
|
20
28
|
Add this line to your application's Gemfile:
|
data/docs/api26.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# api26
|
2
|
+
Ensures that the APK is built with `targetSdkVersion` at least 26.
|
3
|
+
|
4
|
+
## Will Fail If
|
5
|
+
* `targetSdkVersion` is less than 26.
|
6
|
+
|
7
|
+
## Exports
|
8
|
+
None.
|
9
|
+
|
10
|
+
## Reason
|
11
|
+
As of November 1, 2018 Google Play requires that all apps, and app updates, target Android 8 (API 26).
|
12
|
+
|
13
|
+
> Google Play will require that new apps target at least Android 8.0 (API level 26) from August 1, 2018, and that app updates target Android 8.0 from November 1, 2018.
|
14
|
+
Source: https://developer.android.com/distribute/best-practices/develop/target-sdk
|
data/docs/facebook.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# facebook
|
2
|
+
Ensure that the version of the Facebook SDK in use has been released in the last two years.
|
3
|
+
|
4
|
+
## Will Skip If
|
5
|
+
* The APK does not include the Facebook SDK (`com.facebook.FacebookSdk` class is not present).
|
6
|
+
|
7
|
+
## Will Fail If
|
8
|
+
* The Facebook SDK version was not released in the last two years.
|
9
|
+
|
10
|
+
## Exports
|
11
|
+
The version information of the included Facebook SDK.
|
12
|
+
|
13
|
+
### Example
|
14
|
+
```json
|
15
|
+
{
|
16
|
+
"facebook_sdk": {
|
17
|
+
"major": 4,
|
18
|
+
"minor": 33,
|
19
|
+
"patch": 0,
|
20
|
+
"version": "4.33.0",
|
21
|
+
"date": "2018-05-01"
|
22
|
+
}
|
23
|
+
}
|
24
|
+
```
|
25
|
+
|
26
|
+
## Reason
|
27
|
+
Facebook deprecates their SDKs two years after release.
|
28
|
+
|
29
|
+
> Core APIs and SDKs are central to the Facebook Platform offered to developers. These elements are subject to a version system, and guarantee that anything considered a core API node, field, edge, dialog, SDK or SDK method will remain available and unchanged for at least two years from the launch of that version.
|
30
|
+
Source: https://developers.facebook.com/docs/apps/versions/
|
data/docs/receiver.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# receiver
|
2
|
+
Ensures that each `<receiver>` declared in the `AndroidManifest.xml` points to a Java class which is present in the APK.
|
3
|
+
|
4
|
+
## Will Fail If
|
5
|
+
* Any `<receiver>` points to a Java class that does not exist in the APK.
|
6
|
+
|
7
|
+
## Exports
|
8
|
+
The recievers present in `AndroidManifest.xml`
|
9
|
+
|
10
|
+
### Example
|
11
|
+
```json
|
12
|
+
{
|
13
|
+
"receivers": [
|
14
|
+
{
|
15
|
+
"name": "com.amazon.device.iap.ResponseReceiver"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"name": "io.teak.sdk.Teak"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"name": "com.facebook.CurrentAccessTokenExpirationBroadcastReceiver"
|
22
|
+
}
|
23
|
+
]
|
24
|
+
}
|
25
|
+
```
|
26
|
+
|
27
|
+
## Reason
|
28
|
+
Frequently, during app updates, build settings will change, or an SDK will be removed but the `<receiver>` inside of the `AndroidManifest.xml` will not get updated or removed. This causes the app to crash.
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# teak/api21_icon
|
2
|
+
Ensures that the APK contains a notification icon for both Android 5+ (API 21+) as well as pre-Android 5, and that these are different icons.
|
3
|
+
|
4
|
+
## Will Skip If
|
5
|
+
* The Teak SDK is not present.
|
6
|
+
|
7
|
+
## Will Fail If
|
8
|
+
* There is no drawable resource for `io_teak_small_notification_icon`.
|
9
|
+
* There is no v21 drawable resource for `io_teak_small_notification_icon`
|
10
|
+
* The drawable resources point to the same image.
|
11
|
+
|
12
|
+
## Exports
|
13
|
+
The values for `io_teak_small_notification_icon` for less than v21, and v21+.
|
14
|
+
|
15
|
+
### Example
|
16
|
+
```json
|
17
|
+
{
|
18
|
+
"icon": null,
|
19
|
+
"icon_v21": "@drawable/icon_white"
|
20
|
+
}
|
21
|
+
```
|
22
|
+
|
23
|
+
## Reason
|
24
|
+
Android 5+ uses [Material Design](https://material.io/design/iconography/#notification) and needs a white and transparant icon for proper display of notification icons in the tray.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# teak/caching
|
2
|
+
Ensures that the APK contains a notification icon for both Android 5+ (API 21+) as well as pre-Android 5, and that these are different icons.
|
3
|
+
|
4
|
+
## Will Skip If
|
5
|
+
* The Teak SDK is not present.
|
6
|
+
* The version of the Teak SDK is greater or equal to 2.0.0.
|
7
|
+
|
8
|
+
## Will Fail If
|
9
|
+
* `io_teak_enable_caching` is not specified.
|
10
|
+
* `io_teak_enable_caching` is not set to `true`.
|
11
|
+
|
12
|
+
## Exports
|
13
|
+
None.
|
14
|
+
|
15
|
+
## Reason
|
16
|
+
The Teak SDK uses [Android HTTP Caching](https://developer.android.com/training/efficient-downloads/redundant_redundant#ResponseCache) to prevent downloading redundant Notification assets.
|
17
|
+
|
18
|
+
The `io_teak_enable_caching` setting allows you to disable this behavior, however it should be enabled unless your app, or an SDK that you use, makes uncommon assumptions.
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# teak/configuration
|
2
|
+
Ensures that the APK properly configures the Teak SDK.
|
3
|
+
|
4
|
+
## Will Skip If
|
5
|
+
* The Teak SDK is not present.
|
6
|
+
|
7
|
+
## Will Fail If
|
8
|
+
* `io_teak_app_id` is not specified.
|
9
|
+
* `io_teak_api_key` is not specified.
|
10
|
+
* `gcm_defaultSenderId` or `io_teak_gcm_sender_id` are not specified.
|
11
|
+
* `gcm_defaultSenderId` and `io_teak_gcm_sender_id` are specified, and set to different values.
|
12
|
+
* The version of the Teak SDK is greater or equal to 2.0.0 and...
|
13
|
+
* `google_app_id` or `io_teak_firebase_app_id` are not specified.
|
14
|
+
* `google_app_id` and `io_teak_firebase_app_id` are specified, and set to different values.
|
15
|
+
|
16
|
+
## Exports
|
17
|
+
The configuration values for the Teak SDK.
|
18
|
+
|
19
|
+
### Example
|
20
|
+
```json
|
21
|
+
{
|
22
|
+
"teak_app_id": "1234567890123456",
|
23
|
+
"teak_api_key": "abcdef1234567890abcdef1234567890",
|
24
|
+
"gcm_sender_id": "123456789012"
|
25
|
+
}
|
26
|
+
```
|
27
|
+
|
28
|
+
## Reason
|
29
|
+
Build configuration errors can cause
|
data/lib/headdesk/check.rb
CHANGED
@@ -35,6 +35,10 @@ module Headdesk
|
|
35
35
|
@check_name = cname if cname
|
36
36
|
@check_name
|
37
37
|
end
|
38
|
+
|
39
|
+
def doc
|
40
|
+
"#{check_name}.md"
|
41
|
+
end
|
38
42
|
end
|
39
43
|
|
40
44
|
def initialize(bundle)
|
@@ -46,6 +50,7 @@ module Headdesk
|
|
46
50
|
export: {}
|
47
51
|
}
|
48
52
|
@report[:name] = self.class.check_name if self.class.respond_to?(:check_name)
|
53
|
+
@report[:doc] = "https://github.com/GoCarrot/headdesk/blob/#{Headdesk::VERSION}/docs/#{self.class.doc}" if self.class.respond_to?(:check_name)
|
49
54
|
@status = :skip
|
50
55
|
end
|
51
56
|
|
data/lib/headdesk/checks/teak.rb
CHANGED
data/lib/headdesk/report.rb
CHANGED
@@ -34,12 +34,16 @@ module Headdesk
|
|
34
34
|
}
|
35
35
|
end
|
36
36
|
|
37
|
+
def link
|
38
|
+
"\e[37;4m%s\e[0m"
|
39
|
+
end
|
40
|
+
|
37
41
|
def to_s
|
38
42
|
ERB.new(<<~DESCRIPTION, nil, '>').result(binding)
|
39
43
|
Bundle Id: <%= bundle_id %>\n
|
40
44
|
<%= describe %>\n
|
41
45
|
<% for @check in checks %>
|
42
|
-
<%= color_for_status[@check[:status]] % icon_for_status[@check[:status]] %> <%= color_for_status[@check[:status]] %
|
46
|
+
<%= color_for_status[@check[:status]] % icon_for_status[@check[:status]] %> <%= color_for_status[@check[:status]] % @check[:description] %> (<%= link % @check[:doc] %>)\n
|
43
47
|
<% for @step in @check[:steps] %>
|
44
48
|
↳ <%= color_for_status[@step[:status]] % icon_for_status[@step[:status]] %> <%= color_for_status[@step[:status]] % @step[:description] %>\n
|
45
49
|
<% end %>
|
data/lib/headdesk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: headdesk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -128,6 +128,12 @@ files:
|
|
128
128
|
- bin/console
|
129
129
|
- bin/facebook_sdk_versions
|
130
130
|
- bin/setup
|
131
|
+
- docs/api26.md
|
132
|
+
- docs/facebook.md
|
133
|
+
- docs/receiver.md
|
134
|
+
- docs/teak/api21_icon.md
|
135
|
+
- docs/teak/caching.md
|
136
|
+
- docs/teak/configuration.md
|
131
137
|
- exe/headdesk
|
132
138
|
- ext/apktool_2.3.4.jar
|
133
139
|
- headdesk.gemspec
|