Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

android_libcpp_shared

Pub PublisherPub Version

Dart / flutter package for Android to add the libc++_shared.so STL C++ shared runtime library to your app

Usage

Prerequisites

You obviously need dart/flutter installed, but in addition you must have the Android NDK installed. This package does its best to find the NDK install location during the build hook step.

Adding the dependency

Add the package to your pubspec.yaml dependencies:

dependencies:
android_libcpp_shared: ^0.2.0

You don't need to import anything into your Dart code, the dependency is sufficient to bundle the native library with your app. The package does include an optional API if you want to directly use functions from libc++_shared.so using dart:ffi, but this is not required to include the library in your app.

Gradle configuration

Consider adding --enable-native-access=ALL-UNNAMED to org.gradle.jvmargs in your gradle.properties file. This will help make sure that future versions of gradle / java won't break with restrictod methods.

Your entire android/gradle.properties file should look something like this (along with any additional properties you have added):

org.gradle.jvmargs=-Xmx8G-XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError--enable-native-access=ALL-UNNAMED
android.useAndroidX=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

Once Flutter has migrated to a newer gradle / android gradle plugin version, these instructions may change.

Optional API

If you want to directly use functions from libc++_shared.so using dart:ffi, you can use API like this:

import'package:android_libcpp_shared/android_libcpp_shared.dart';
voidmain() {
// Example usage of the API to call a function from libc++_shared.sofinalintFunction()? nativeRand = libCppShared?.lookup<ffi.NativeFunction<ffi.Int64Function()>>('rand')
.asFunction<intFunction()>();
if (nativeRand ==null) {
print('You are not on android');
return;
}
final result =nativeRand();
print('Random number from libc++_shared.so: $result');
}

License

This project is licensed under the MIT License. See the LICENSE file for details. Parts of the NDK locating code are adapted from the Dart native_toolchain_c package, which is licensed under a BSD-style license. See the NATIVE_LICENSE file for details.

About

[Forked] Dart / flutter plugin for android to add libc++_shared.so

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages