bamlab / bamlab/generator-rn-toolbox

Android production build `MissingDefaultResource` lint error.

Open
#203 7 comments 5 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
1.2k
Forks
116
PR merge metrics
No merged PRs in 30d

Description

When building Android app for production build I get this lint error. Its because generator builds only folders `drawable-land-xxxx` and `drawable-port-xxx`. There should be build also default `drawable-xxxx` folders I think.

Temporary solution is suppress this lint error adding this code to `android/app/build.gradle`

```
application {
....
lintOptions{
disable 'MissingDefaultResource'
}
}
```
More info about lint error (source: http://tools.android.com/tips/lint-checks)

MissingDefaultResource
----------------------
Summary: Missing Default

Priority: 6 / 10
Severity: Fatal
Category: Correctness

If a resource is only defined in folders with qualifiers like -land or -en,
and there is no default declaration in the base folder (layout or values etc),
then the app will crash if that resource is accessed on a device where the
device is in a configuration missing the given qualifier.

As a special case, drawables do not have to be specified in the base folder;
if there is a match in a density folder (such as drawable-mdpi) that image
will be used and scaled. Note however that if you only specify a drawable in
a folder like drawable-en-hdpi, the app will crash in non-English locales.

There may be scenarios where you have a resource, such as a -fr drawable,
which is only referenced from some other resource with the same qualifiers
(such as a -fr style), which itself has safe fallbacks. However, this still
makes it possible for somebody to accidentally reference the drawable and
crash, so it is safer to create a default dummy fallback in the base folder.
Alternatively, you can suppress the issue by adding
tools:ignore="MissingDefaultResource" on the element.

(This scenario frequently happens with string translations, where you might
delete code and the corresponding resources, but forget to delete a
translation. There is a dedicated issue id for that scenario, with the id
ExtraTranslation.)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the generator code that creates the Android drawable-land-xxxx and drawable-port-xxx folders, then inspect android/app/build.gradle and reproduce the production lint failure. Done means the generator also produces safe default drawable-xxxx resources and the production build no longer reports MissingDefaultResource without suppressing the lint check.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, javascript, react-native
Domain
build-system, mobile
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.