Git Product home page Git Product logo

native-libandroidthings's Introduction

Android Things Native Library

This repository contains the symbols and the headers for the Android Things Native PIO API for the following architecture:

  • armeabi-v7a
  • x86

Note: The Android Things Console will be turned down for non-commercial use on January 5, 2022. For more details, see the FAQ page.

Usage

  • Unzip the latest release in the native project directory (or in a shared location if you have many native projects).
  • Add the following lines to the native project CMakeLists.txt:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} <path_to_FindAndroidThings_directory.cmake>)
find_package(AndroidThings REQUIRED)
include_directories(${ANDROIDTHINGS_INCLUDE_DIRS})
target_link_libraries(<your_target_name> ${ANDROIDTHINGS_LIBRARIES})
  • Add the following arch to the native module build.gradle:
defaultConfig {
    ndk {
        abiFilters 'armeabi-v7a', 'x86'
    }
}

License

Copyright 2016 The Android Open Source Project, Inc.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

native-libandroidthings's People

Contributors

mangini avatar proppy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

native-libandroidthings's Issues

Security Policy violation Binary Artifacts

This issue was automatically created by Allstar.

Security Policy Violation
Project is out of compliance with Binary Artifacts policy: binaries present in source code

Rule Description
Binary Artifacts are an increased security risk in your repository. Binary artifacts cannot be reviewed, allowing the introduction of possibly obsolete or maliciously subverted executables. For more information see the Security Scorecards Documentation for Binary Artifacts.

Remediation Steps
To remediate, remove the generated executable artifacts from the repository.

Artifacts Found

  • armeabi-v7a/lib/libandroidthings.so
  • x86/lib/libandroidthings.so

Additional Information
This policy is drawn from Security Scorecards, which is a tool that scores a project's adherence to security best practices. You may wish to run a Scorecards scan directly on this repository for more details.


Allstar has been installed on all Google managed GitHub orgs. Policies are gradually being rolled out and enforced by the GOSST and OSPO teams. Learn more at http://go/allstar

This issue will auto resolve when the policy is in compliance.

Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

dlopen failed: library "libbinder.so" not found

We use native-libandroidthings in our project. but it print error "dlopen failed: library "libbinder.so" not found"

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.seeed.baozhu.mraa_demo"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11 -frtti -fexceptions"
            }
        }
        ndk {
            // Specifies the ABI configurations of your native
            // libraries Gradle should build and package with your APK.
            abiFilters 'armeabi-v7a'
        }

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs 'libs/mraa-1.8.0/jni'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/mraa-1.8.0/classes.jar')
}

06-20 01:35:45.560 29084-29084/com.seeed.baozhu.mraa D/AndroidRuntime: Shutting down VM
06-20 01:35:45.567 29084-29084/com.seeed.baozhu.mraa E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.seeed.baozhu.mraa, PID: 29084
java.lang.UnsatisfiedLinkError: dlopen failed: library "libbinder.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
at java.lang.System.loadLibrary(System.java:1657)
at com.seeed.baozhu.mraa.MainActivity.(MainActivity.java:18)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1174)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

android things - kotlin and NATIVE NDK with UPM/MRAA/I2C intel driver-died

Hi, I have this driver:

https://github.com/intel-iot-devkit/upm/blob/master/src/smartdrive/smartdrive.hpp

https://github.com/intel-iot-devkit/upm/blob/master/src/smartdrive/smartdrive.cxx

androidthings/contrib-drivers#70

My intention is to transpose this driver to use it on rapsberry pi 3/SmartDrive and command my 2 car windshield motors using android things

I know the first thing is remove upm/mraa libs from the .hpp and .cxx files above, and my questions is:

1 - What is the best way to do this? (already preparing for the creation of a * .h file that will be used below:)

libandroidthings/
${ABI}/
include/
pio/
*.h
lib/
libandroidthings.so

Update to DP7 makes build fail

I am trying to update my pio-softpwm project to DP7 but I am not able to build anymore if I use the tag 0.7-devpreview of this library:

$ ./gradlew clean build
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

> Configure project :pio-softpwm 
Observed package id 'add-ons;addon-google_apis-google-19' in inconsistent location '/home/leinardi/android-sdk/add-ons/addon-google_apis-google-19-1' (Expected '/home/leinardi/android-sdk/add-ons/addon-google_apis-google-19')
Observed package id 'add-ons;addon-google_apis_x86-google-19' in inconsistent location '/home/leinardi/android-sdk/add-ons/addon-google_apis_x86-google-19-1' (Expected '/home/leinardi/android-sdk/add-ons/addon-google_apis_x86-google-19')

> Task :pio-softpwm:externalNativeBuildCleanDebug 
Clean androidthings armeabi-v7a,native-app-glue armeabi-v7a,softpwm armeabi-v7a
Cleaning... 0 files.
Clean androidthings x86,native-app-glue x86,softpwm x86
Cleaning... 4 files.

> Task :pio-softpwm:externalNativeBuildCleanRelease 
Clean androidthings armeabi-v7a,native-app-glue armeabi-v7a,softpwm armeabi-v7a
Cleaning... 0 files.
Clean androidthings x86,native-app-glue x86,softpwm x86
Cleaning... 0 files.

> Task :pio-softpwm:generateJsonModelDebug 
External native generate JSON debug: starting JSON generation
External native generate JSON debug: using platform version 24 for ABI ARMEABI_V7A and min SDK version 24
External native generate JSON debug: JSON '/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/.externalNativeBuild/cmake/debug/armeabi-v7a/android_gradle_build.json' was up-to-date
External native generate JSON debug: using platform version 24 for ABI X86 and min SDK version 24
External native generate JSON debug: JSON '/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/.externalNativeBuild/cmake/debug/x86/android_gradle_build.json' was up-to-date
External native generate JSON debug: JSON generation completed without problems

> Task :pio-softpwm:externalNativeBuildDebug FAILED
Build softpwm x86
[1/5] Building C object CMakeFiles/native-app-glue.dir/home/leinardi/android-sdk/ndk-bundle/sources/android/native_app_glue/android_native_app_glue.c.o
[2/5] Linking C static library libnative-app-glue.a
[3/5] Building CXX object CMakeFiles/softpwm.dir/softpwm.cpp.o
[4/5] Building CXX object CMakeFiles/softpwm.dir/jni_helpers.cpp.o
[5/5] Linking CXX shared library /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/build/intermediates/cmake/debug/obj/x86/libsoftpwm.so
FAILED: : && /home/leinardi/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++  --target=i686-none-linux-android --gcc-toolchain=/home/leinardi/android-sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/home/leinardi/android-sdk/ndk-bundle/sysroot -fPIC -isystem /home/leinardi/android-sdk/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=24 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -std=c++11 -Werror -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /home/leinardi/android-sdk/ndk-bundle/platforms/android-24/arch-x86 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -L/home/leinardi/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libsoftpwm.so -o /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/build/intermediates/cmake/debug/obj/x86/libsoftpwm.so CMakeFiles/softpwm.dir/softpwm.cpp.o CMakeFiles/softpwm.dir/jni_helpers.cpp.o  -landroid -llog libnative-app-glue.a /home/leinardi/Workspace/androidThings/androidthings-pio/libandroidthings/x86/lib/libandroidthings.so -latomic -lm "/home/leinardi/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libc++_static.a" "/home/leinardi/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libc++abi.a" && :
/home/leinardi/android-sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: /home/leinardi/Workspace/androidThings/androidthings-pio/libandroidthings/x86/lib/libandroidthings.so: incompatible target
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:31: error: undefined reference to 'APeripheralManagerClient_new'
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:36: error: undefined reference to 'APeripheralManagerClient_openGpio'
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:41: error: undefined reference to 'AGpio_setDirection'
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:51: error: undefined reference to 'AGpio_delete'
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:54: error: undefined reference to 'APeripheralManagerClient_delete'
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:82: error: undefined reference to 'AGpio_setValue'
/home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:89: error: undefined reference to 'AGpio_setValue'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pio-softpwm:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process /media/Dati_ext4/android-sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/.externalNativeBuild/cmake/debug/x86 --target softpwm}
  [1/5] Building C object CMakeFiles/native-app-glue.dir/home/leinardi/android-sdk/ndk-bundle/sources/android/native_app_glue/android_native_app_glue.c.o
  [2/5] Linking C static library libnative-app-glue.a
  [3/5] Building CXX object CMakeFiles/softpwm.dir/softpwm.cpp.o
  [4/5] Building CXX object CMakeFiles/softpwm.dir/jni_helpers.cpp.o
  [5/5] Linking CXX shared library /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/build/intermediates/cmake/debug/obj/x86/libsoftpwm.so
  FAILED: : && /home/leinardi/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++  --target=i686-none-linux-android --gcc-toolchain=/home/leinardi/android-sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/home/leinardi/android-sdk/ndk-bundle/sysroot -fPIC -isystem /home/leinardi/android-sdk/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=24 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -std=c++11 -Werror -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /home/leinardi/android-sdk/ndk-bundle/platforms/android-24/arch-x86 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -L/home/leinardi/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libsoftpwm.so -o /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/build/intermediates/cmake/debug/obj/x86/libsoftpwm.so CMakeFiles/softpwm.dir/softpwm.cpp.o CMakeFiles/softpwm.dir/jni_helpers.cpp.o  -landroid -llog libnative-app-glue.a /home/leinardi/Workspace/androidThings/androidthings-pio/libandroidthings/x86/lib/libandroidthings.so -latomic -lm "/home/leinardi/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libc++_static.a" "/home/leinardi/android-sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libc++abi.a" && :
  /home/leinardi/android-sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: /home/leinardi/Workspace/androidThings/androidthings-pio/libandroidthings/x86/lib/libandroidthings.so: incompatible target
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:31: error: undefined reference to 'APeripheralManagerClient_new'
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:36: error: undefined reference to 'APeripheralManagerClient_openGpio'
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:41: error: undefined reference to 'AGpio_setDirection'
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:51: error: undefined reference to 'AGpio_delete'
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:54: error: undefined reference to 'APeripheralManagerClient_delete'
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:82: error: undefined reference to 'AGpio_setValue'
  /home/leinardi/Workspace/androidThings/androidthings-pio/pio-softpwm/src/main/cpp/softpwm.cpp:89: error: undefined reference to 'AGpio_setValue'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 6s
21 actionable tasks: 20 executed, 1 up-to-date

You can reproduce the issue here: https://github.com/leinardi/androidthings-pio/tree/master/pio-softpwm (commit ac15a7ee8c21d0ececb8d62a8d757f0ab7bb61aa).

Kotlin/Native usage examples

Hi,
Kotlin can already be used on the non NDK side, but it could also be used on the NDK side with Kotlin/Native now in EAP! Could you provide at least one example using Kotlin/Native in an Android Things project along with Kotlin outside of the NDK when possible? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.