问题标签 [android-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
15051 浏览

android - 如何“安装”Action Bar Sherlock?

我正在尝试使用 Action Bar Sherlock 构建示例项目“Action Bar Styled”。

我在这里http://actionbarsherlock.com/下载了包含 ABS 的 .zip 文件,但我不知道在哪里解压缩,以便它出现在 Project>Properties>Add library 上。

有人可以帮帮我吗?

另外,我在某处读到(现在找不到,抱歉)当前的 Android 兼容性库支持 3.0 之前版本的操作栏,因此它与操作栏 Sherlock 具有基本相同的“效果” - 有人可以证实这一点吗?我应该安装哪个库?

0 投票
1 回答
547 浏览

java - Android 应用程序和 (Android) 库架构

我正在设计一个 Android 应用程序,我有几个问题想听听你的意见。

现在,我正在考虑的架构如下:

  • 用于用户界面的 Android 应用程序,
  • 用于业务逻辑的库(Android 或“纯”Java?),
  • 用于访问 SQLLite 数据库的 Android 库(将由业务逻辑使用),
  • 用于访问 Wifi/BT 模块的 Android 库(将由业务逻辑使用)。

架构快速架构

由于很可能在不久的将来可能会为 Win/Mac/Linux 开发此 Android 应用程序的基于 Java 的版本,因此我试图将业务逻辑与 Android 特定的 API 分开。

基本上,业务逻辑将需要使用嵌入式 SQLite DB 以及使用 BT 适配器并通过 Wifi 访问 Internet,例如,这可以使用两个专用的 Android 库来完成。问题是我希望业务逻辑只是一个“纯”Java 库,而不是建立在 Android 项目之上。根据这种架构是否可行,知道 Android 应用程序可能会有一个配置“模块”负责设置和配置,并在需要时启动两个基于 Android 的库。

当前选择的架构在您看来有意义吗?

您对此申请有何建议:

  1. 尽可能模块化,具有良好的抽象级别(在 DB 和 BT/Wifi 适配器上),
  2. 尽可能让业务逻辑与 Android API 保持清晰,
  3. 只需极少的更改即可使整个解决方案适应经典的 Java 应用程序。

提前感谢您的时间和意见。

0 投票
2 回答
3731 浏览

android - Android 库项目:混淆并保留资源

我想用 Proguard 编译我的 Android 项目和一些额外的 Android 库项目。事实上,大部分代码和资源都在这些库中。

我已经在主项目的 project.properties 中添加了行“proguard.config=proguard.cfg”,我已经配置了 cfg 文件(-libraryjars ..\libs)。然后 - 右键单击​​,Android 工具 -> 导出签名的应用程序包。ADT 编译项目以供发布,但应用程序在第一次启动时崩溃:当我从日志中读取时,这是因为资源指针错误。

我反编译了项目,发现很奇怪:如果我在库中声明资源,那么它上面的资源指针就变成了0。

当我将行“proguard.config=proguard.cfg”添加到我所有的 Android 库项目的 project.properties 中时,问题并没有消失。

有什么解决办法吗?

编辑:查看 proguard.cfg 的片段:

0 投票
0 回答
3288 浏览

android - Android 库项目 Jar + IntelliJ IDEA 11

我正在使用IntelliJ IDEA 11。

如何为我的 android 库项目创建 JAR 文件?

我有一个相同的 android 库项目及其 JAR 文件。我设法从Module Settings->Project Settings->Artifacs->+

我试图将我的 Jar 文件与原始文件进行比较,但内容不同。

任何人都可以确认我的程序是否正确?

0 投票
1 回答
1121 浏览

android - 使用其他 3rd 方库的 Android 库项目

我有一个库 android 项目“Library”(包含活动和所有)和一个使用源代码中的“Library”的普通 android 项目“App”。库不是单独编译的。

一切正常。问题是使用第 3 方编译的罐子“外部罐子”。我的“图书馆”正在使用所有的“外部罐子”。“App”只能访问“Library”。“外部罐子”只能由“库”访问。

问题是“应用程序”需要在其构建路径中包含所有“外部罐子”,应用程序才能正常运行。那是什么必需品?“应用程序”不直接调用任何“外部罐子”。

所以我已经将罐子包含在“应用程序”和“库”中。有什么方法可以让“应用程序”在其构建路径中不必包含“罐子”?

我问这个是因为我担心额外的应用程序大小,并且因为我无法让 proguard 以这种方式工作。

0 投票
1 回答
2718 浏览

java - Android 项目引用的 Android 库中的 Java 库抛出 NoClassDefFound

我有一个 Android 库项目(由我编写,我有源代码),我在我的 Android 项目中使用它——到目前为止一切都很好,没有问题。但是在那个库项目中,我引用了一个外部 .jar 文件(Bixolon 移动打印机的 SDK),它构建得很好,我可以在我的代码中引用 SDK 的方法。但是在运行时我得到这个:

这让我想知道,如果我在我的 Android 库项目中引用的 .jar 得到正确部署......我有一个来自 Bixolon 的示例项目,它直接包含他们的 .jar 文件(与我在我的 Android 库项目中引用的相同)和它工作正常。我已经确保在我自己的 Android 项目和我的 Android 库项目中是相同的(因为它在 Bixolon 提供的示例项目中定义)。所以我现在有点不知所措。不幸的是,我没有引用的 Bixolon SDK .jar 的源文件——只有 .jar。

0 投票
1 回答
670 浏览

java - 我们可以在android项目中使用任何jar文件(由java代码制作)吗?

我有一个使用导入的类,例如:

我们知道 Android 没有附带 java.awt.font.Gly​​phVector 或 font.FontRenderContext。

我可以为这个类“FontEx”制作jar文件并将其直接导入我的android eclipse项目并使用它吗???

..................................................... ………………………………………………………………………………………………………………………………………………………… ..................................................... ............

0 投票
1 回答
322 浏览

android - Android 库中复合组件的自定义样式

我想知道是否有一种方法可以为库中的 Android 复合控件(小部件)指定和样式。

我们已将库中的复合控件移动为可重用,但是当我们在 android 应用程序项目的活动中使用它们时,我们不知道如何指定自定义样式。

我们发现了这个有用的博客,可以做类似的事情,但它必须将自定义样式指定为应用程序主题,我们希望将一种样式直接应用于复合组件。

我已经尝试过这样的事情,但应用程序崩溃了。

0 投票
4 回答
6368 浏览

android - 对于android库项目,是在清单中有意义吗?

这几乎都在标题中。尽管我在我见过<uses-sdk>的所有示例库项目中都看到了指定,但AndroidManifest.xml我觉得这无关紧要。

事实上,我怀疑这<uses-permission>也是无关紧要的,除了 , 之外的所有属性也是<manifest>如此package

任何人都可以确认吗?

0 投票
2 回答
1759 浏览

android - 如何在 Android 上使用带有 c 和 java api 的库项目

我在 google android-ndk group 中问过这个问题,但没有得到任何答案。

我正在尝试通过单击“Is Library”在独立项目中构建一个通用模块是 Eclipse。本项目同时提供c api和java api。虽然其中一些 API 是相关的。(这意味着将它们分成 2 个项目并不是一个好主意)让我们将其命名为 common 和 libcommon.so。

当我在另一个项目中使用这个库时(假设 testcommon),我在项目资源管理器中将公共项目添加为 Eclipse 中的库 - > 属性 - > Android - > 库 - > 添加。但这只会让我有可能在库中使用 java api。

我还在 testcommon 项目的 android.mk 中添加 libcommon.so 作为 PREBUILT_SHARED_LIBRARY,以便我可以访问 c api。( 如下 )

这样,ndk-build 是成功的,但是当我运行它时,出现以下错误:

我认为这是因为对库和预构建共享库的引用都将 libcommon.so 添加到 testcommon 项目中。事实上,我测试过只引用该库或添加预构建共享库,它们都将 libcommon.so 复制到 testcommon。

问题是,如果我需要一个同时具有 c 和 java apis 的库,我该怎么办。(不仅是代码)

谢谢


阅读后共享库可以调用另一个共享库吗?,我找到了解决这个问题的方法,但仍然不太确定。

在 Android.mk 中使用以下行代替 PREBUILT_SHARED_LIBRARY 也可以使本机部分正常工作,并且不会以这种方式复制库。这样可以修复重复的副本。

这在我之前的测试中无法工作的原因是即使这样,两个库都应该在 java 中加载,而不仅仅是 libtestCommon。


我想我现在很清楚了。

LOCAL_SHARED_LIBRARIES 和 -L plus -l 都应该在 NDK 中正常工作。

问题是当我打电话时

它会尝试在 /data/data/$(app path)/lib (System.java::loadLibrary --> Runtime.java::loadLibrary --> DexPathList.java::findLibrary )找到so文件,但是当 libtestCommon 尝试要找到它的依赖项 libCommon.so,它只会在 /vendor/lib 和 /system/lib 中找到它,因为

如果我首先调用 System.loadLibrary("common"),dlopen 会将其加载到缓存中(Linker.c::alloc_info)。我猜这使得 libtestCommon.so 加载 libCommon.so 成功。所以一切正常。

我还注意到 ndk-r7 中 SYSTEM-ISSUES.html 末尾的这些词:

  • 一个错误会阻止一个应用程序共享库依赖于另一个应用程序共享库。例如,如果您为您的应用程序同时构建 libfoo.so 和 libbar.so,并在 bar/Android.mk 中将 libfoo.so 列为 libbar.so 的依赖项(使用 LOCAL_SHARED_LIBRARIES := foo),那么加载 libbar.so 将总是失败,即使你已经在你的进程中加载​​了 libfoo.so。

有一点不同。如果我已经在我的进程中加载​​了 libfoo.so,那么 libbar.so 将会成功。

所以,最后的答案是:

  • 如果您需要 android 库项目中的任何共享库,请使用 LOCAL_LDFLAGS := -Lxx -lxx。
  • 您必须为所需的每个共享库调用 System.loadLibrary。这也是在一个库中使用另一个共享库的方法。
  • /libs/ 的库路径放在/data/data//lib/。