• android中调用c++文件并转为so


    1、新建项目,不选include support c++

          报错:Error:Failed to open zip file.
    Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
    <a href="syncProject">Re-download dependencies and sync project (requires network)</a>
    <a href="syncProject">Re-download dependencies and sync project (requires network)</a>

      解决办法:将gradle/wraper/gradle-wrapper.properties文件中的

    distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip改为

    distributionUrl=http://services.gradle.org/distributions/gradle-2.14.1-all.zip即将s去掉。

    2、在main中新建文件夹cpp,将.cpp文件放入其中,修改.cpp文件。

    3、编写jni接口文件,注意文件内函数名称前缀要与app下的build.gradle的applicationId保持一致;

    4、编写CMakeLists.txt,在view->tool windows->gradle->build生成.so文件

    编译时遇到的错误

    (1)Error:Execution failed for task ':app:transformClassesWithDexForDebug'.

    > com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:Program FilesJavajdk1.7.0_67injava.exe'' finished with non-zero exit value 1

         解决办法:在app下的builder.gradle 下添加 defaultConfig {
           .....       
            multiDexEnabled true
            .....
             }

      (2)Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class

       解决办法:在app下的build.gradle下添加:

       android{ configurations { all*.exclude group: 'com.android.support', module: 'support-v4' all*.exclude group: 'com.android.support', module: 'support-annotations' } }

      参考:https://stackoverflow.com/questions/26966843/java-util-zip-zipexception-duplicate-entry-during-packagealldebugclassesformult

    http://wl9739.github.io/2016/09/21/%E5%9C%A8-Android-Studio-2-2-%E4%B8%AD%E6%84%89%E5%BF%AB%E5%9C%B0%E4%BD%BF%E7%94%A8-C-C-md/?utm_source=tuicool&utm_medium=referral

    https://blog.csdn.net/youngpan1101/article/details/53614588

    https://blog.csdn.net/huil0925/article/details/51586462

  • 相关阅读:
    2019年----沉淀的一年
    条目八《永不建立auto_ptr的容器》
    条目七《如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉》
    条目六《当心C++编译器中最烦人的分析机制》
    条目五《尽量使用区间成员函数代替它们的单元素兄弟》
    cpu上下文切换
    条目四《用empty来代替检查size()是否为0》
    条目三《确保容器中的副本对象高效而正确》
    ORB与LBP、HOG
    C++
  • 原文地址:https://www.cnblogs.com/573177885qq/p/8744518.html
Copyright © 2020-2023  润新知