[imagepicker] Exception if built in --release mode: `Error: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/documentfile/provider/DocumentFile;`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 30/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- android, typescript, webpack
- Ambito
- build-system, mobile
Direzione di ricerca
Inizia con il flusso authorize/present di Imagepicker e confronta i contenuti di META-INF degli APK dev e release, in particolare androidx.documentfile_documentfile.version. Esamina le versioni in package.json, le impostazioni Android in app.gradle e AndroidManifest.xml; il lavoro è completato quando il packaging della dipendenza specifico della release è stato identificato e corretto, in modo che DocumentFile venga risolto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hello,
Issue
I have updated Imagepicker on its latest version (3.0.0 / 3.0.1). It worked well in dev mode, but when built with the --release flag, it cease to work.
I patched webpack to re-enable logs in release mode (drop_console: false), and get this one.
- Code:
const context = Imagepicker.create({
mode: 'multiple',
});
context
.authorize()
.then(() => {
return context.present();
})
.then((selection) => { … })
.catch(function (e: Error) {
console.error('on select image', e.toString(), e.stack, e.cause);
});
- Log:
JS: CONSOLE ERROR: on select image Error: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/documentfile/provider/DocumentFile; getOrSetHelper(file:///data/data/appid/files/app/vendor.js:2:118868)
JS: at getFile(file:///data/data/appid/files/app/vendor.js:2:128579)
JS: at fromPath(file:///data/data/appid/files/app/vendor.js:2:139398)
JS: at handle(file:///data/data/appid/files/app/vendor.js:2:840987)
JS: at onResult(file:///data/data/appid/files/app/vendor.js:2:842335)
JS: at invokeTask(file:///data/data/appid/files/app/vendor.js:2:1240087)
JS: at onInvokeTask(file:///data/data/appid/files/app/vendor.js:2:1553242)
JS: at invokeTask(file:///data/data/appid/files/app/vendor.js:2:1240008)
JS: at runTask(file:///data/data/appid/files/app/vendor.js:2:1235405)
JS: at invokeTask(file:///data/data/appid/files/app/vendor.js:2:1241184)
JS: at ZoneTask.i.useG.invoke(file:///data/data/appid/files/app/vendor.js:...
Investigation
So I have extracted and compared the 2 produced APK. Here are some differences that looks suspicious to me in the META-INF directory.
- Files that does not appear in
--release
androidx.cardview_cardview.version
androidx.coordinatorlayout_coordinatorlayout.version
androidx.documentfile_documentfile.version # <-- at least this one seems missing for bad reasons
androidx.dynamicanimation_dynamicanimation.version
androidx.legacy_legacy-support-core-utils.version
androidx.localbroadcastmanager_localbroadcastmanager.version
androidx.print_print.version
com.google.android.material_material.version
(These files does not have corresponding entries in MANIFEST.MF.)
- For files that exists in both side, versions does not match
androidx.customview_customview.version has content 1.1.0 in "dev" and 1.0.0 in "release".
androidx.drawerlayout_drawerlayout.version has content 1.1.1 in "dev" and 1.0.0 in "release".
Other informations
Here are some other informations about my config:
package.json extracts
"@nativescript/core": "~8.6.1",
"@nativescript/android": "~8.6.2",
"@nativescript/types": "~8.6.1",
"@nativescript/webpack": "~5.0.18",
app.gradle
android {
compileSdkVersion 33
defaultConfig {
minSdkVersion 21
targetSdkVersion 33
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
AndroidManifest.xml extracts
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" tools:replace="android:maxSdkVersion" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" tools:replace="android:maxSdkVersion" />
<application
android:name="com.tns.NativeScriptApplication"
android:allowBackup="true"
…
android:requestLegacyExternalStorage="true">
(I first thought it was a permission problem, that's why I have here the old *_EXTERNAL_STORAGE and requestLegacyExternalStorage but I don't think it changed anything. I should probably just revert this!)
Question
I don't really know how these files are generated and what I should try to go forward at this point. Any help appreciated! :-)
- Lingua principale
- TypeScript
- Stelle
- 206
- Fork
- 123
- Merge medio
- 2g 1h
- PR unite (30g)
- 1
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NativeScript/plugins
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
NativeScript/plugins#680 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NativeScript/plugins#671 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
NativeScript/plugins#640 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
NativeScript/plugins#668 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
NativeScript/plugins#665 · 1 commento ·
Tutte le issue di NativeScript/plugins
Issue simili
-
Type/Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenNSW/nsw-srilanka#497 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
0xMiden/bridge-portal#132 ·
-
react-doctor severity:warning tech-debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
digidem/comapeo-cloud-app#403 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100