flutter_web_plugins/packages/ccc_fplugin/docs/dev_fplugin_bugs.rst

70 lines
3.6 KiB
ReStructuredText

===================
Flutter Plugin Bugs
===================
.aar android library issues fsck'n flutter
------------------------------------------
Flutter has a lot of cascading gradle build files and they are using black magic to get things workings. For example
it is difficult to code for the flutter plugin because of all the gradle build depedencies. You cannot use another
gradle file in the android project that is part of the plugin. So either add the library in ./libs or add it to Maven...
either Maven local or Maven remote.
mavenLocal():
* ISSUES: with using gradle to add the nextcrypto library "wolfssl-jni.aar"
- FIX: use ./libs/ locally pulled in by "implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])"
- FIX: use mavenLocal() and store in ~.m2/... pull using "implementation 'io.malloc.ccc:nc-jni:1.1@aar'"
* Solution
- https://stackoverflow.com/questions/50971022/how-to-use-local-aar-inside-flutter-plugin
* No solutions
- https://stackoverflow.com/questions/55475576/add-plain-android-library-to-a-flutter-plugin
- https://stackoverflow.com/questions/55005818/how-do-i-add-library-module-dependency-to-a-flutter-plugins-android-folder-corr
* for examples see
- --> dev_maven.rst
- --> build_mavenLocal.gradle
.aar library bugs after ./libs and mavenLocal()
-----------------------------------------------
It is interesting that it "merges" the AndroidManifest.xml files. I did some reading and I discovered
that all the resources within the library (.aar) are public. Therefore collisions will happen. So the
string property of "@string/app_name" was colliding because it was defined twice. So after removing all
resources (./src/main/res/..) from the library project ("wolfssl-jni"), then removed all stuff within the
libraries AndroidManifest.xml file too...because of the merging. So with all resources removed and the
AndroidManifest.xml cleaned...there will be no collisions.
::
> Task :app:processDebugManifest FAILED
/Volumes/malloc-dev/nextcrypto/source/nc-ww/app/ccc_fplugin/example/android/app/src/debug/AndroidManifest.xml:11:9-44 Error:
Attribute application@label value=(ccc_fplugin_example) from AndroidManifest.xml:11:9-44
is also present at [wolfssl-jni.aar] AndroidManifest.xml:13:9-41 value=(@string/app_name).
Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:9:5-32:19 to override.
/Volumes/malloc-dev/nextcrypto/source/nc-ww/app/ccc_fplugin/example/android/app/src/debug/AndroidManifest.xml Error:
uses-sdk:minSdkVersion 16 cannot be smaller than version 23 declared in library [wolfssl-jni.aar] /Users/j3g/.gradle/caches/transforms-2/files-2.1/d60f1db6c5cf298a03f176d7f25dc8f6/AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 23,
or use tools:overrideLibrary="io.malloc.ccc" to force usage (may lead to runtime failures)
See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.
10 actionable tasks: 1 executed, 9 up-to-date
ERROR: Manifest merger failed with multiple errors, see logs
WARNING: API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getProcessResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getProcessResources(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app