我正在尝试使用 gradle 构建一个 android 项目:它是一个具有 ndk 风格的库项目.jar
,由 Unity 提供的 external 调味。
我真的不认为有关 gradle 文件的详细信息很重要,足以说明我将外部 jar 文件(由 Unity 提供)包括以下内容:
dependencies {
compile files('libs/unity.jar')
}
这实际上似乎有效,因为在 java 编译期间,gradle 发出如下命令:
BASE="<Some directory>"
javac -d "${BASE}/PluginsSources/Android/libproject/build/intermediates/classes/fat/debug" \
-g -encoding UTF-8 \
-bootclasspath /Users/myusername/Applications/adt/sdk/platforms/android-23/android.jar \
-sourcepath "${BASE}/PluginsSources/Android/libproject/build/tmp/compileFatDebugJavaWithJavac/emptySourcePathRef" \
-classpath "${BASE}/PluginsSources/Android/libproject/libs/unity.jar" \
"${BASE}/PluginsSources/Android/libproject/src/main/java/org/example/ScriptBridge/JavaClass.java" \
"${BASE}/PluginsSources/Android/libproject/build/generated/source/r/fat/debug/org/example/ScriptBridge/R.java" \
"${BASE}/PluginsSources/Android/libproject/build/generated/source/buildConfig/fat/debug/org/example/ScriptBridge/BuildConfig.java" \
-XDuseUnsharedTable=true
BASE
您真正添加的缩进和变量。请注意,这unity.jar
是一个类路径条目。
问题是,编译失败,因为 javac 在编译时显然无法在其中找到一个类unity.jar
,除非该 jar 被放入 -bootclasspath 选项(!!)。
为什么会这样?AFAIK,类的搜索路径应该是分层的,在 bootclasspath 之后,javac 应该搜索类路径......
是否可以告诉 gradle 将一些 jar 插入 bootclasspath somhow(这会笨拙地解决问题)?
有没有更清洁/更好的方法?
感谢您的任何见解!