- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我看过this问题,并且对创建一个我可以分发并可以在任何 Android 应用程序中使用的 jar 文件有更多疑问。
我的要求是什么
上面链接的 SO 问题中最流行的答案是创建一个常规 java 项目并在其中导入 android.jar。我尝试这样做,但我不知道如何添加android.jar 到任何 java 项目。我也想得到一些澄清。
此外,我想知道是否有任何其他方法使用android sdk本身(不使用java项目)创建一个封闭源库jar文件。
我认为我想要的是可能的,因为google analytics for android native apps似乎已经做到了。我确信在他们分发的 .jar 文件中,他们使用的是 android 特定代码,因为他们似乎没有其他方法可以获取设备信息以显示在分析查看器中。
我想我已经取得了一些进步。这是我做的
创建了一个常规的 android 项目(不是库项目,“是库”复选标记未选中)
在项目中,我编写了我的逻辑。它使用一些安卓特定类,如 SharedPreference
、UUID
、PackageManager
。但与 Assets 无关,布局也没有类扩展 Activity
。只是一个扩展 java.lang.object
AndroidManifest.xml
。设置要导出的目标目录和在保持默认设置的情况下单击下一步三次。然后我点击完成,在我的桌面上得到一个可爱的 libMyLibraryName.jar。然后我创建了另一个 android 项目,使用 project->rightclick->properties->java build path -> libraries->add external jar 添加了这个 libMyLibraryName.jar
到新项目。
我尝试在我的新项目中使用我在图书馆的类(class)
MyLibraryClass objClass = new MyLibraryClass(this);
而且我能够成功编译和运行。我什至将库发送给了我的一位同事,他能够在他的机器上使用该库(只要确保我工作区中的库项目不会影响使用它的项目)。
现在我有 2 个问题。
1) 我的第一个问题是,在下面给定的文档中,术语“真正的库”是什么意思?是不是可以导出到 JAR 文件的任何非 android java 项目?
However, a library project differs from an standard Android application project in that you cannot compile it directly to its own .apk and run it on an Android device. Similarly, you cannot export the library project to a self-contained JAR file, as you would do for a true library. Instead, you must compile the library indirectly, by referencing the library in the dependent application and building that application.
好吧,这部分取自 documentation在标题为“图书馆项目”下。
2) 我的第二个问题是,我创建 JAR 文件的方式有什么问题吗? 是否有任何可能的陷阱让我以后反悔?在我的重要项目中使用它之前,我想确保我没有做错什么。
我补充一下,我没有尝试创建JAVA项目并导入android.jar
的方法。如果我目前所做的是错误的,我准备尝试那个。
最佳答案
android.jar
将位于您安装 Android SDK 的位置。下platforms
目录应该有许多其他名为 android-<version>
的目录. android.jar
将在那里。选择特定于您定位的最低 Android 版本的版本。
完成后,将其复制到您的项目中。如果您使用的是 eclipse,我认为您可以直接将 jars 剪切并粘贴到您的项目中,右键单击并将其添加到构建路径。如果您不使用 eclipse 或任何其他 IDE,您只需要确保在构建 jar 文件时 android.jar 在类路径中。
之后,您新建的 android 库可以放入任何 Android 项目中。
回答您的其他问题:
真正的库是指 jar 文件,而不是 Android 库项目。
我认为您创建 jar 文件的方式没有任何问题。我会用 android.jar
做的正如我上面提到的,但你的方式也应该有效。为了验证这一点,我将检查 jar 内容并确保您拥有的所有内容都是 .class
文件。
关于Android 库项目作为 jar 文件进行分发,如 google analytics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828014/
tl;博士:我们的 Spring Boot jar 中的类似乎可以看到捆绑的 jar 中的类,但它们的内容似乎无法看到。为什么? 我们的主要产品是一个网络应用程序,但所有的业务逻辑都集中在一个核心 m
我有一个适用于 Java 8 的 jar。 我想创建一个新 jar,它将是多版本 JAR 但为空,只有 META-INF/versions 中的“修补”类. 我想要一个单独的 jar,这样人们就可以在
免责声明: 在我得到“这个问题已经被问了 1000 次”的标准之前,让我说,是的,我知道。我读了又读又读。看了 JarJar 和 One-JAR,但问题是:我是自学成才的,只有几个月的经验,而且我不熟
我知道要组合多个 jar 并创建一个可执行 jar,我需要使用像 OneJar 这样的工具如果我不想解压相关的 jar 。 OneJar 有自己的自定义类加载器,可以在关联的 jar 中找到所需的类并
在我的项目中,我使用许多 jar 文件来支持该项目。随着 jar 文件数量的增加,我想将所有 jar 文件移动到一个 jar 中并利用它。您能给我提供有用的链接吗?可以帮助我做到这一点。 最佳答案 有
我有一个脚本可以删除目录中的低版本 jars 文件。 #!/bin/bash #Script to remove lower version jar files. for PREFIX in `ls
可执行 jar 文件可以自行重启吗?例如,在用户做出一些选择后,程序会说“重新启动应用程序?”并且用户单击"is",然后 jar 关闭并自行重新启动。 最佳答案 需要重新启动应用程序是糟糕设计的标志。
过去两年我一直有这个问题。 我有一个从 Internet 下载的 .jar 文件。它应该是一个魔方计时器。 当我双击这个 .jar 文件时,没有任何反应。如果我将 .jar 文件设置为使用 java.
我正在尝试在多项目Gradle构建中创建一个胖jar文件,如下所示: root +-- project1 +-- project2 project1提供了基本功能,然后project2将其用于
我需要 Maven 的配置,其中项目内的所有库都以 jar 格式保存在最终的 jar 中...所以我需要在最终的 jar 中包含 jar。为此我只能使用maven。我已经尝试过像 one-jar 这样
JAR、Fat JAR 和 Executable JAR 之间有什么区别?它们是如何从命令行和 gradle.build 任务创建的(如果是 gradle 项目)? 除了上面提到的以外,还有其他的JA
我阅读了很多构建具有依赖项的可执行 jar 的解决方案(maven 阴影插件、maven 依赖项插件、maven 程序集插件)和所有这些插件解压依赖项 jar 并将它们重新打包到可执行 jar 中。唯
我想问一下java命令中-jar选项前后传递参数有什么区别。考虑 $SOME_ENV_VAR=-Dinstance=qa 最佳答案 取决于SOME_ENV_VAR的内容;假设它包含有效的命令行参数,例
我试图了解如何打包用 Clojure 编写的命令行应用程序进行分发。我不希望用户不得不使用 java -jar myproject.jar arg1 arg2运行程序。 PHP 有一个叫做“Phar”
在 gradle 中 - 如何将 jar 嵌入到 lib 中的构建输出 jar 中目录(特别是 lib/enttoolkit.jar 和 lib/mail.jar)? 最佳答案 如果您的项目中的一个目
查看 Google gson 2.8.5 ,我看到这里分发了几个 jar https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.5/
我正在将 jar 文件和一个主类合并到一个 jar 中。问题是我的主类使用这些 jar ,如果它在一个 jar 中,它就会抛出找不到类定义。如何让类(class)看到 jar 里的 jar ? 最佳答
我正在使用 Maven 进行开发。我有一个要求,我想在我的项目 jar 中包含一些第三方 jar 并排除 pom.xml 文件中指定的其他 jar。下面是我的 pom.xml 文件。 4.0.0 c
我正在开发一个 GUI 应用程序,宁愿只分发一个 jar 而不是多个。 你能用 list 来控制它吗? 最佳答案 另一种选择是使用自定义类加载器,例如这个: http://one-jar.source
我看到许多 Java 包都有 api、impl 和 bundle jar(name-api.jar、name-impl.jar、name-bundle.jar)。有人可以解释这些是什么意思吗?应用程序
我是一名优秀的程序员,十分优秀!