问题标签 [android-build]

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 回答
170 浏览

android - 构建android ICS时头文件中的歧义

这是问题所在:msm_camera.h 存在于以下路径中

  1. ./external/kernel-headers/original/media/
  2. ./bionic/libc/kernel/common/media/
  3. ./prebuilt/ndk/android-ndk-r4/platforms/android-8/arch-x86/usr/include/media/
  4. ./内核/包括/媒体/

当我尝试构建错误时,会抛出一些诸如“MSM_PMEM_VIDEO_VPE”之类的定义不存在。当它们存在于其中一条路径中时,例如。./external/kernel-headers/original/media/

所以,我想知道一个 C 源文件什么时候正在编译,并且它以这种方式添加了头文件:

如何确定从哪个路径中选择标头?是来自选项 1、2、3 还是 4?

构建日志似乎也无济于事。我不想在数百个文件中添加绝对路径,因为这绝对不是正确的方法。

提前致谢!

0 投票
1 回答
2235 浏览

android - 来自 ANT 的 Android 库项目 JAR

我在这篇博文中读到:http ://android-developers.blogspot.nl/2011/10/changes-to-library-projects-in-android.html我可以为我的库项目创建一个 .JAR 文件可以将其分发给外部人员以供利用。

我在哪里可以找到有关如何创建此 Library Jar 的文档?

有谁知道我需要通过 ANT 完成的步骤?

0 投票
1 回答
2703 浏览

android - 无法在 android 中使用 init shell 脚本执行 chroot

我想在 Android ICS Emulator 中运行 glibc,为此我将 glibc 捆绑为 AOSP 根文件夹中的一个单独文件夹,其中包含 Android.mk,内容如下:

它将整个 glibc 文件夹复制到 out/target/product/generic/system/ 文件夹。并使snod包含在system.img中

带有 glibc 文件夹的 startglibc.sh 和 init.sh 脚本分别被复制到 /system/glibc 和 /system/glibc/root/ 文件夹。

我已经编译了busybox并将其复制到/system/bin/文件夹中。

/system/glibc/startglibc.sh 的内容如下:

startglibc.sh 从 init.goldfish.rc 调用如下:

我已使用 system/core/include/private/android_filesystem_config.h 将 777 和 root:root 作为 init.sh 的文件权限,如下所示:

在启动期间,会调用 startglibc.sh 脚本,但在执行 chroot 时会出现权限被拒绝错误。

我是否错过了使用 init.sh 进行 chroot 的任何内容?还是我在 Android AOSP 构建期间错误地复制了 glibc 文件夹?

0 投票
0 回答
270 浏览

android - android运行时链接问题与接口

我正在尝试在 Linux 中使用他的 android 构建系统构建一个应用程序和一个界面 jar 我的应用程序与我的界面有依赖关系,因此我必须在应用程序制作之前准备好界面 jar。

但是我们在使用我们新构建的接口 jar 时遇到了构建/运行时问题。我们试图以两种不同的顺序制作应用程序。

案例 1. 将接口构建为本地模块并将其与 apk 链接为 LOCAL_JAVA_LIBRARIES。案例 2. 将接口构建为本地模块并将其与 apk 链接为 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES。

以下是主界面和界面的 Android.mk 文件。

1.Andriod.mk主文件: /source/Android.mk

========================================

STACK_PATH:= $(调用我的目录)

LOCAL_PATH := $(STACK_PATH)

包括 $(CLEAR_VARS)

包括 $(LOCAL_PATH)/interface/Android.mk

包括 $(CLEAR_VARS)

LOCAL_PATH := $(STACK_PATH)

包括 $(LOCAL_PATH)/application/Android.mk

========================================

2.接口Android.mk:/source/interface/Android.mk

========================================

LOCAL_PATH:= $(调用我的目录)

包括 $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-subdir-java-files, src)

LOCAL_MODULE := 我的界面

LOCAL_MODULE_TAGS := 可选

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_JAVA_RESOURCE_DIRS := src

包括 $(BUILD_JAVA_LIBRARY)

$(call dist-for-goals, droidcore, $(full_classes_jar):MyInterface.jar)

========================================

以下是案例 1 中应用程序的 Android.mk 文件。

应用 Android.mk:/source/application/Android.mk

========================================

TOP_LOCAL_PATH:= $(调用我的目录)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

包括 $(CLEAR_VARS)

LOCAL_SRC_FILES := $(调用 all-subdir-java-files)

LOCAL_PACKAGE_NAME := MyApplication

LOCAL_JAVA_LIBRARIES := MyInterface

包括 $(BUILD_PACKAGE)

包括 $(BUILD_MULTI_PREBUILT)

========================================

构建成功完成。但是在尝试运行此应用程序时,它显示此错误。I/dalvikvm(XXXX):解析 Lcom/test/example/application 失败;接口 XXX 'Lcom/test/example/interface;' W/dalvikvm(XXXX): 类 'Lcom/test/example/application;' 的链接 失败的

以下是案例 2 中应用程序的 Android.mk 文件。

应用程序 Android.mk /source/application/Android.mk

========================================

TOP_LOCAL_PATH:= $(调用我的目录)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

包括 $(CLEAR_VARS)

$(shell (cp $(LOCAL_PATH)/../out/target/common/obj/JAVA_LIBRARIES/Interface_intermediates/classes-jarjar.jar $(LOCAL_PATH)/applications/libs/MyInterface.jar))

LOCAL_STATIC_JAVA_LIBRARIES += 我的界面

LOCAL_SRC_FILES := $(调用 all-subdir-java-files)

LOCAL_PACKAGE_NAME := MyApplicationss

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += MyInterface:libs/MyInterface.jar

包括 $(BUILD_PACKAGE)

包括 $(BUILD_MULTI_PREBUILT)

========================================

这导致如下构建错误。

build/core/base_rules.mk:166: * source/applications: MODULE.TARGET.JAVA_LIBRARIES.MyInterface 已经由 source/interface 定义。停止。

但是当它们单独构建而不使用构建系统时,这个问题就不存在了。应用程序也可以正常运行。


当使用eclipse将接口构建到Myinterface.jar,并在Linux中使用这个接口jar(通过静态链接)构建application-apk时,应用程序运行顺利。

我们的 Android.mk 文件有问题吗?请查看并提出您的建议

0 投票
2 回答
4182 浏览

android - 在 Android apk 中打包 linux 二进制文件

如果我想在我的 .apk 文件中包含一个 linux 二进制文件(如 ffmpeg)(仅适用于基于 ARM 的设备),这是否可以分发给非 root 手机?我知道可以使用 Runtime.exec() 调用包含的二进制文件,但这是推荐的做法吗?

0 投票
2 回答
1405 浏览

android - Android运行时链接问题

我正在尝试使用 Linux 中的 android 构建系统构建一个应用程序和一个界面 jar 我的应用程序与我的界面有依赖关系,因此我必须在应用程序制作之前准备好界面 jar。

但是我们在使用我们新构建的接口 jar 时遇到了构建/运行时问题。我试图以两种不同的顺序制作应用程序。

案例 1. 将接口构建为本地模块并将其与 apk 链接为 LOCAL_JAVA_LIBRARIES。案例 2. 将接口构建为本地模块并将其与 apk 链接为 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES。

以下是主界面和界面的 Android.mk 文件。

1.Andriod.mk主文件: /source/Android.mk

========================================

STACK_PATH:= $(调用我的目录)

LOCAL_PATH := $(STACK_PATH)

包括 $(CLEAR_VARS)

包括 $(LOCAL_PATH)/interface/Android.mk

包括 $(CLEAR_VARS)

LOCAL_PATH := $(STACK_PATH)

包括 $(LOCAL_PATH)/application/Android.mk

========================================

2.接口Android.mk:/source/interface/Android.mk

========================================

LOCAL_PATH:= $(调用我的目录)

包括 $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-subdir-java-files, src)

LOCAL_MODULE := 我的界面

LOCAL_MODULE_TAGS := 可选

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_JAVA_RESOURCE_DIRS := src

包括 $(BUILD_JAVA_LIBRARY)

$(call dist-for-goals, droidcore, $(full_classes_jar):MyInterface.jar)

========================================

以下是案例 1 中应用程序的 Android.mk 文件。

应用 Android.mk:/source/application/Android.mk

========================================

TOP_LOCAL_PATH:= $(调用我的目录)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

包括 $(CLEAR_VARS)

LOCAL_SRC_FILES := $(调用 all-subdir-java-files)

LOCAL_PACKAGE_NAME := MyApplication

LOCAL_JAVA_LIBRARIES := MyInterface

包括 $(BUILD_PACKAGE)

包括 $(BUILD_MULTI_PREBUILT)

========================================

构建成功完成。但是在尝试运行此应用程序时,它显示此错误。I/dalvikvm(XXXX):解析 Lcom/test/example/application 失败;接口 XXX 'Lcom/test/example/interface;' W/dalvikvm(XXXX): 类 'Lcom/test/example/application;' 的链接 失败的

以下是案例 2 中应用程序的 Android.mk 文件。

应用程序 Android.mk /source/application/Android.mk

========================================

TOP_LOCAL_PATH:= $(调用我的目录)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

包括 $(CLEAR_VARS)

$(shell (cp $(LOCAL_PATH)/../out/target/common/obj/JAVA_LIBRARIES/Interface_intermediates/classes-jarjar.jar $(LOCAL_PATH)/applications/libs/MyInterface.jar ))

LOCAL_STATIC_JAVA_LIBRARIES += 我的界面

LOCAL_SRC_FILES := $(调用 all-subdir-java-files)

LOCAL_PACKAGE_NAME := MyApplicationss

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += MyInterface:libs/MyInterface.jar

包括 $(BUILD_PACKAGE)

包括 $(BUILD_MULTI_PREBUILT)

========================================

这导致如下构建错误。

build/core/base_rules.mk:166: * source/applications: MODULE.TARGET.JAVA_LIBRARIES.MyInterface 已经由 source/interface 定义。停止。

但是当它们单独构建而不使用构建系统时,这个问题就不存在了。应用程序也可以正常运行。


当使用eclipse将接口构建到Myinterface.jar,并在Linux中使用这个接口jar(通过静态链接)构建application-apk时,应用程序运行顺利。

我的 Android.mk 文件有问题吗?请帮忙

0 投票
1 回答
2262 浏览

android - 如何使用“android update”命令添加“android.library=true”

我想从命令行构建一个 Android 项目,并希望将android.library=true标志添加到 project.properties。我也想用android来自 sdk 的命令来做这件事,而不是手动将它添加到文件中,因为文件名和属性名可能会改变。

该命令android update lib-project -p PATH不再添加此标志。

该命令android create lib-project ...确实“添加”了这个标志,但会覆盖一些文件,如字符串资源

所以我的问题是:有可能使用该android工具制作一个将这个 android.library 标志设置为 true 的 project.properties,并且不做更多事情吗?

我不能在 lib-project 中使用某些标志android update project和旁边有什么区别?android update lib-project

0 投票
2 回答
3947 浏览

android - 针对不同环境的不同 Android 版本

我希望能够(同时)构建和安装我的应用程序的多个版本,针对不同的环境,例如开发、暂存,当然还有生产。

中的包名称AndroidManifest.xml似乎是这里的主要障碍,因为它是唯一标识应用程序的东西。我认为可以简单地在com.mydomain.prod, com.mydomain.stagingandcom.mydomain.dev或某种类似的约定之间切换,但到目前为止,我还没有找到适用于这种方法的包结构。

我可以采用什么策略来尽可能减少痛苦?

0 投票
3 回答
640 浏览

android - 运行应用程序和导出未签名应用程序有什么区别?

.apk运行应用程序和导出未签名的应用程序(关于构建的)文件有什么区别?

由于我的应用程序无法导出并转换为 Dalvik 格式失败并出现错误 1 ​​,但是当通过Run as Android App运行它时,它会运行并安装在设备上。

我搜索了所有问题并尝试了所有答案,但没有任何效果,我什至不知道如何调试它,没有错误,日志中也没有问题。

仅供参考,我的应用程序使用:

  • ActionBarSherlock(杰克沃顿)
  • ViewPagerIndicator(由 JakeWarton 提供)
  • 拉取刷新
  • 谷歌广告
  • 谷歌分析
0 投票
3 回答
366 浏览

android - 通过命令行指定不同的服务器来构建我的应用程序的 Ant 脚本

我开发了一个与服务器通信的 Android 应用程序。我有 2 台服务器。一种用于开发,另一种用于生产

在我的 Android 源代码中,我必须在构建时手动更改服务器 URL 。

例如:对于调试模式 release,我使用:

对于生产版本,我使用:

url变量被传递给请求发送函数,如sendReqToServer(url);.

我厌倦了手动更改此 url 更改为不同的版本。相反,我想使用Ant 脚本url在进行不同的发布构建时使用命令行来指定,例如ant release-develop(使用开发服务器)和ant release-product(使用生产服务器)。

为此,我认为在build.xml中我需要创建<target name="release-develop">& <target name="release-product">。但我不确定如何让 ant 脚本通过命令行为我的应用程序指定 url?

有人可以向我提供有关如何操作的更详细信息吗?