Карьера Android JNI stick .a -> .so (режим gradle) (студия Android)

Серийный

Увидев снова Yilian Youmeng, история jni.a все еще продолжается. Изначально планировал ехать методом мк , название продумано, дорога три тысячи, беру только два совка. Гори, история начинается.

градиент-экспериментальный

Свинья нога истории. Плагин, посвященный сервисам JNI. Хорошие одноклассники Э Вэнь примерно догадались, что это что-то в лаборатории Гуго. Вещи хорошие, то есть слово "эксперимент", хе-хе-хе. Чистый путь градиента, замена mk, сборка интеграции, мечта - это хорошо. Но Google, похоже, не слишком заботится об этом. Не много сплетен, но если вы хотите попрактиковаться в этом навыке, вам нужно обратить внимание на несколько моментов.

Примечание 1. Зависимости градации проекта

Для gradle-experimental я очень доволен. Интеграция, чистый градиент, я должен оценить. Любовь с первого взгляда, затем закат, три и выдох. Руки вверх и вниз, изменение конфигурации, позвольте мне вступить на путь пересечения катастрофы. Конфигурация выглядит следующим образом:

buildscript {
    ...
    dependencies {
          /**
         * 从前 classpath 'com.android.tools.build:gradle:2.2.3'
         * 由于插件的更换,蝴蝶来到了太平洋,一系列随之而来
         */
        classpath 'com.android.tools.build:gradle-experimental:0.9.3'
    }
}

Примечание 2. Текущая конфигурация модуля приложения

Собственное решение, вставать — это мастурбация. Модуль приложения, как место пересечения катастрофы, вот-вот начнет увлекательные приготовления. Вы видите:
настройки плагина приложения приложения,

//从前, apply plugin: 'com.android.application' 
apply plugin: 'com.android.model.application'

Из-за поддержки плагина модели Du Jie ограничен моделью прицела, а аура отличается и стабильна. Знания и знания:

model{ 
    ...
    android{
    }
}

Чтобы пересечь катастрофу, вы должны выглядеть так, как будто вы должны пересечь катастрофу.Предыдущая конфигурация, естественно, должна быть немного усилена. Смотри, каштаны:

model{ 
    ...
    android{
      ...
      defaultConfig {
            ···
            //从前车马慢,minSdkVersion 19
            minSdkVersion.apiLevel 9
            targetSdkVersion.apiLevel 19
        }
    }
}

Примечание 3. Конфигурация ядра

Чтобы преодолеть катастрофу, вам нужно полагаться на статическую библиотеку .a. Сначала определите репозитории для библиотеки, которые используются для указания основной информации о библиотеке, включая путь к файлу библиотеки, путь к заголовочному файлу, способ связывания и т. д. Подробности см. в следующем коде:

model {
    ...
    repositories {
        libs(PrebuiltLibraries) {
            libHello {
                // 头文件地址
                headers.srcDir "src/main/jni/sources/"
                // 静态链接库的引用,
                binaries.withType(StaticLibraryBinary) {
                    staticLibraryFile = file("src/main/jni/sources/${targetPlatform.getName()}/libHello.a")
                }
            }
        }
    }
}

Пересечение грабежа, ключ к успеху - настройка NDK, а потом град, начинается переправа грабежа. Конфигурация NDK уже знакома, но здесь есть несколько отличий. Выложите подробности:

model{
  ...
  android{
     ...
     ndk {
            moduleName "JniDemo"
            //书信很远, cppFlags "-std=c++11"
            cppFlags.add("-std=c++11") //c++版本
            stl "gnustl_static" //支持 stl 标准库
            // 配置可多个, abiFilters "armeabi", "armeabi-v7a", "x86"
            // abiFilters.addAll(['armeabi', 'armeabi-v7a', 'x86'])
        }
  }
}

эпилог

В этот момент он уходил все дальше и дальше по дороге пересечения катастрофы. Для mk, gradle-experimental я изначально хотел провести сравнение. Подумайте об этом позже, у каждого есть свои достоинства, и все они основаны на сборке NDK. Что касается выбора, то пока не будем его упоминать, у каждого свои предпочтения. С нетерпением жду следующей встречи, следующей замечательной.
Билет github прилагается, чтобы вы могли испытать необъятность мира.

Supongo que te gusta

Origin blog.csdn.net/youyi300200/article/details/73477663
Recomendado
Clasificación