У меня есть проект Android, который состоит из собственных частей (файлы *.cpp
и *.h
) в папке jni
. В этом есть пакет с именем modules
, в котором есть несколько каталогов. Я хотел бы добавить свой собственный модуль в пакет modules
с другим подкаталогом, однако я могу добавлять только пакеты:
Поскольку я считаю, что Android Studio ограничивает меня в этом вопросе, Я добавил папку за пределами Android Studio, удалил папку .idea
, файлы *.iml
и повторно синхронизировал Gradle. Однако мой новая папка по-прежнему представляет собой пакет (значок, такой как папка модуля), а не простой подкаталог, как другие каталоги:
Надеюсь, я правильно понял терминологию и не достаточно разбираюсь в пакетах и каталогах. Де-факто другие каталоги верны, но я не смог найти ничего в файлах Gradle, которые бы объясняли это поведение.
Вот build.gradle
библиотеки:
apply plugin: 'com.android.library'
android {
// If you want to use the debugger for JNI code, you want to compile this lib-project in Debug!
// And due to gradle limitations/bugs, the best way is to always compile it in debug.
// See https://code.google.com/p/android/issues/detail?id=52962
// and http://stackoverflow.com/questions/27277433/why-does-gradle-build-my-module-in-release-mode-when-the-app-is-in-debug
// defaultPublishConfig "debug"
compileSdkVersion 25
buildToolsVersion '27.0.3'
defaultConfig {
compileSdkVersion 25
buildToolsVersion "27.0.3"
minSdkVersion 14
externalNativeBuild {
ndkBuild {
arguments "-j2"
}
}
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
abiFilters 'armeabi-v7a'
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
java {
srcDirs('src/main/java', 'src/jni/SDL2-2.0.5/android-project/src')
}
}
}
externalNativeBuild {
ndkBuild {
path "src/jni/Android.mk"
}
}
lintOptions {
abortOnError false
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar', '*.arr'])
api 'com.android.support:appcompat-v7:25.2.0'
api 'com.google.android.gms:play-services-ads:11.0.4'
}
И build.gradle
всего проекта:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
flatDir {
dirs 'libs'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Я добавил свои новые файлы в новую папку в Android.mk
, как и другие файлы.
Как добавить каталог вместо пакета в эту папку modules
?
Дополнительная информация: Это порт Android игровой платформы LÖVE (love2d). Я использую Mac.