相关疑难解决方法(0)

如何在Android Sudio中使用我自己的Android.mk文件

我在Android.mk文件中定义了一些变量(我正在为编译器传递一些标志),但每次构建我的项目时,都会Android.mk被覆盖.我假设这Gradle是负责任的,我应该在那里看?我如何使用自己的Android.mk文件?

背景资料:

Ubuntu64位,Android Studio1.0.1,JDK7.我NDKO-LLVM NDK封装了我的版本,因此正在编辑Android.mk位于app/build/intermediates/ndk/debug(它是Android.mk我项目目录中唯一的文件)的文件,与doc O-LLVM提供示例的位置不同.

此外,没有Application.mk文件,所以我再次假设Gradle负责调用编译器?

任何帮助将不胜感激.

凯尔


更新的信息

build.gradle - (app)

//The following code until the "----" line is the new build.gradle config file
// that disables automatic Android.mk file generation

import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'com.android.application'

android {

    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.md.helloworld"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName …
Run Code Online (Sandbox Code Playgroud)

java-native-interface llvm gradle android-ndk android-studio

19
推荐指数
1
解决办法
3万
查看次数

编译依赖于使用Android NDK运行的其他本机库的本机库?

我有一个很大的C文件库,它依赖于OpenSSL,我对使用本机库非常陌生,尤其是使用android的新手.我已经成功地在iOS上实现了这个库而没有任何问题.

我一直在网上寻找有关如何做到这一点的教程/信息,但到目前为止我还没有发现任何我能理解的内容.这对我来说都很困惑.

本质上我正在试图弄清楚如何使用NDK将C文件库编译成本机库,并使用imy android应用程序编译库.

根据我的理解,我需要一个自定义的cmake文件用于android本身,但我不知道从哪里开始,我发现的文档非常难以理解.

所以,我需要一些帮助来理解在以下庄园中编译库的过程:

  1. 编译库,使用Gradle和CMakeLists.txt将其与openssl和libcrypto链接,并将最终库与我的Android Studio项目链接.
  2. 能够从我的Java代码中调用这些库中的本机函数.(我知道这需要一个JNI Java Wrapper)

(我已经设法为android需要的所有arch构建libssl和libcrypto,但我不知道如何处理.a/ .sofiles.)

任何有关此事的帮助都会令人难以置信.

谢谢

编辑:

我设法使用以下内容生成一些库文件.

文件结构:

.idea
app
build
gradle
jni    <--- I made this folder specifically fo this.
    Android.mk <-- This is the important file.
    include
        openssl
            <openssl header files>
    libs
        arm64-v8a
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        armeabi
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        armeabi--v7a
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        mips
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        mips64
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        x86
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        x86_64
            libcrypto.a
            libcrypto.so …
Run Code Online (Sandbox Code Playgroud)

openssl android-ndk android-gradle-plugin

6
推荐指数
1
解决办法
1575
查看次数