Серийный
Увидев снова 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 прилагается, чтобы вы могли испытать необъятность мира.