如何将Java源代码添加到AAR中?
Jar创建
Jar的创建如下所示,并最终出现在我的模块的build/libs
文件夹中。
task generateMySources(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives generateMySources
}
preBuild.dependsOn(":myModule:generateMySources")
dependencies {
// The jar is included but it is empty inside the aar.
compile files('build/libs/myModule-sources.jar')
}
.
├── com
│ └── my
│ └── app
│ └── jni
│ ├── File1.java
│ ├── File2.java
│ ├── File3.java
│ └── File4.java
└── META-INF
└── MANIFEST.MF // Contains "Manifest-Version: 1.0" only.
我能想到的唯一一件事就是在.aar文件构建完成后,将您的源代码添加到.aar文件中,如下所示
task generateMySources(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
task addMySourcesToAar(type: Jar) {
archiveName "myModuleWithSources.aar"
destinationDir file("build")
from zipTree("build/outputs/aar/myModule-release.aar")
from fileTree("build").include("libs/myModule-sources.jar")
}
afterEvaluate { project ->
project.tasks.preBuild.dependsOn generateMySources
project.addMySourcesToAar.dependsOn build
}
artifacts {
archives addMySourcesToAar.archivePath
}
然后运行
./gradlew myModule:addMySourcesToAar
我没有像你那样在依赖项上添加任何东西
我想创建一个模型jar文件,但不包括源代码。可能吗?默认情况下,Repast模型安装程序包含源代码,但我想对模型的接收者隐藏它。
我有一个结构如下的maven项目: 我希望maven jar插件在构建jar文件时打包到数据库文件夹中。我尝试过包含这里概述的内容:https://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html,但它找不到目录“../database”(或../../database或../../../database
人们可以很容易地提取<代码>。jar文件,请参阅源代码。我想保护源代码不被看到。一个可能的答案是像对zip文件那样对文件进行密码保护。 但是,如果密码是已知的,那么源代码就可以很容易地看到。 有没有办法隐藏源代码并使其能够运行?类似于〈代码〉的东西。exe在Windows中执行。这应该在windows和Linux环境中运行。
问题内容: 在我的应用程序中,我以这种方式加载资源: 这给了我: 当我从IDE运行我的应用程序时,但是当我运行应用程序的jar时,这可以很好地工作: 路径变为: 有什么办法解决这个问题? 我将使用“存储库”目录名称来创建此目录: 以相同的方式,我将获得一个文件名(而不是目录),并以这种方式使用它: 问题答案: 听起来你正在尝试使用或类似方法加载资源。不要那样做:不要调用,而是从中调用并读取数据。
问题内容: 我记得前一段时间使用eclipse或netbeans时,我能够轻松地将源文件包含在jar文件中。我已移至intellij 10社区版,发现自己需要做同样的事情。有什么提示吗? 问题答案: 我想到了… 单击“输出布局”选项卡中的“ +”按钮->包含目录内容->选择您的src目录。做到了
问题内容: 是否可以指定一个Java ,其中包含另一个JAR文件中包含的JAR文件? 问题答案: 如果您试图创建一个包含应用程序及其所需库的jar,则有两种方法(我知道)。第一个是One-Jar,它使用特殊的类加载器来允许jar的嵌套。第二个是UberJar(或Shade),它会爆炸包含的库并将所有类放在顶级jar中。 我还应该提到UberJar和Shade分别是Maven1和Maven2的插件。