Repository navigation
NativeScript PDF: update current impl #9
Description
Activity
This becomes more urgent as google requests updates in the context of 16kb alignment.
Pdfium we should upgrade to:
...which still has a prolbem in the included native libs. (Validation with our script and with the llvm commands from the google page fail).
The thread in barteksc/PdfiumAndroid#95 has some valuable details.
https://github.com/renzified/PdfiumAndroid/releases/tag/V2.0.1
and
https://github.com/ynkfish/PdfiumAndroid/releases/tag/v2.0.1both claim they have fixed this, but checks show they have not:
ynkfish:
NONCOMPLIANT ../../packages/pdf/platforms/android/PdfiumAndroid-2.0.1-ynkfish-release.aar Failing libs: jni/armeabi-v7a/libc++_shared.so, jni/armeabi-v7a/libjniPdfium.so, jni/armeabi-v7a/libmodft2.so, jni/armeabi-v7a/libmodpdfium.so, jni/armeabi-v7a/libmodpng.so, jni/mips/libc++_shared.so, jni/mips/libmodft2.so, jni/mips/libmodpdfium.so, jni/mips/libmodpng.so, jni/x86/libc++_shared.so, jni/x86/libjniPdfium.so, jni/x86/libmodft2.so, jni/x86/libmodpdfium.so, jni/x86/libmodpng.so➜ analysis $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align|p_align' Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x304e60 0x304e60 R E 0x1000 LOAD 0x304e60 0x00305e60 0x00305e60 0x0a7b4 0x0b1a0 RW 0x1000 LOAD 0x30f618 0x00311618 0x00311618 0x02618 0x03cb4 RW 0x1000 ➜ analysis $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align' LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12 LOAD off 0x00304e60 vaddr 0x00305e60 paddr 0x00305e60 align 2**12 LOAD off 0x0030f618 vaddr 0x00311618 paddr 0x00311618 align 2**12where we would need to see 0x4000 and 2**14 at least in the last columns according to https://developer.android.com/guide/practices/page-sizes
renzfied:
NONCOMPLIANT ../../packages/pdf/platforms/android/PdfiumAndroid-2.0.1-renzified-release.aar Failing libs: jni/armeabi-v7a/libc++_shared.so, jni/armeabi-v7a/libjniPdfium.so, jni/armeabi-v7a/libmodft2.so, jni/armeabi-v7a/libmodpdfium.so, jni/armeabi-v7a/libmodpng.so, jni/mips/libc++_shared.so, jni/mips/libmodft2.so, jni/mips/libmodpdfium.so, jni/mips/libmodpng.so, jni/x86/libc++_shared.so, jni/x86/libjniPdfium.so, jni/x86/libmodft2.so, jni/x86/libmodpdfium.so, jni/x86/libmodpng.so➜ android git:(pdf_upate-android-libraries) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align|p_align' Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x304e60 0x304e60 R E 0x1000 LOAD 0x304e60 0x00305e60 0x00305e60 0x0a7b4 0x0b1a0 RW 0x1000 LOAD 0x30f618 0x00311618 0x00311618 0x02618 0x03cb4 RW 0x1000 ➜ android git:(pdf_upate-android-libraries) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align' LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12 LOAD off 0x00304e60 vaddr 0x00305e60 paddr 0x00305e60 align 2**12 LOAD off 0x0030f618 vaddr 0x00311618 paddr 0x00311618 align 2**12Unfortunately, both repos dont have "Issues" enabled so its not possible to contact them on that path.
Now I got a hint upon https://github.com/AhmerAfzal1/AhmerPdfium who claims to be a maintained fork of barteksc/PdfiumAndroid and barteksc/AndroidPdfViewer.
Using the dependencies via gradle did not work out.
So I check out the repo and build the aars myself for now.
Need to adjust package names in our code.
As AhmerPdfium is kotlin based, I seem to have a lot of trouble to use it in NativeScript
It aso seems like directly loading from URLs is not supported anymore.Also, the check fails also for these AARs:
__unknown__ - - NONCOMPLIANT ../../packages/pdf/platforms/android/libPdfium-release.aar Failing libs: jni/armeabi-v7a/libc++_shared.so, jni/armeabi-v7a/libpdfium.so, jni/armeabi-v7a/libpdfium_jni.so, jni/x86/libc++_shared.so, jni/x86/libpdfium.so, jni/x86/libpdfium_jni.soAlso, llvm check fails:
➜ aar git:(master) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libpdfium.so | grep -E 'Type|LOAD|ALIGN|Align|p_align' Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x369530 0x369530 R E 0x1000 LOAD 0x369530 0x0036a530 0x0036a530 0x0a4c0 0x0aad0 RW 0x1000 LOAD 0x3739f0 0x003759f0 0x003759f0 0x02638 0x03d4c RW 0x1000 ➜ aar git:(master) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libpdfium_jni.so | grep -E 'Type|LOAD|ALIGN|Align|p_align' Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x07140 0x07140 R E 0x1000 LOAD 0x007140 0x00008140 0x00008140 0x00338 0x00ec0 RW 0x1000 LOAD 0x007478 0x00009478 0x00009478 0x00000 0x0000c RW 0x1000 ➜ aar git:(master) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p jni/armeabi-v7a/libpdfium.so | grep -E 'Type|LOAD|ALIGN|Align' LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12 LOAD off 0x00369530 vaddr 0x0036a530 paddr 0x0036a530 align 2**12 LOAD off 0x003739f0 vaddr 0x003759f0 paddr 0x003759f0 align 2**12 ➜ aar git:(master) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p jni/armeabi-v7a/libpdfium_jni.so | grep -E 'Type|LOAD|ALIGN|Align' LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12 LOAD off 0x00007140 vaddr 0x00008140 paddr 0x00008140 align 2**12 LOAD off 0x00007478 vaddr 0x00009478 paddr 0x00009478 align 2**12In the end, the attempt with the version from marian87 worked 👍 NativeScript/plugins#645
Currently, the impl of the PDF viewer is somewhat update, let´s put it to state of the art!
https://github.com/NativeScript/plugins/tree/main/packages/pdf