我已经为模拟器构建了Android源代码.我在Android Source文档中读到,在成功构建期间会自动添加"模拟器"的路径.但是我有两个问题:
如果我打开一个新shell或关闭我现有的shell,则不再找到"模拟器".当然我每次想要运行模拟器时都不需要构建?
如果模拟器需要AVD,我如何创建和管理这些,因为我的机器上没有Android SDK?
谢谢,杰克
第2部分的解决方案.
我需要创建一个名为ANDROID_PRODUCT_OUT的环境变量.从以下命令:
emulator -help-build-images
Run Code Online (Sandbox Code Playgroud)
我读...
通过查看环境中的ANDROID_PRODUCT_OUT变量,模拟器检测到您正在使用Android构建系统.
如果已定义,则应指向包含生成的系统映像的特定于产品的目录.
然后我在'out'目录中搜索'system.ing'.因为我正在为模拟器构建图像所在:
out/target/product/generic
Run Code Online (Sandbox Code Playgroud)
我将以下行添加到我的.bashrc文件中:
export ANDROID_PRODUCT_OUT=/home/jack.wootton/code/out/target/product/generic
Run Code Online (Sandbox Code Playgroud)
然后我能够从以下位置运行模拟器:
/home/jack.wootton/code/out/host/linux-x86/bin
Run Code Online (Sandbox Code Playgroud)
第1部分的解决方案.
我不知道Android虚拟设备,所以这个问题仍然存在 - 但是在成功构建并设置ANDROID_PRODUCT_OUT环境变量之后,我不需要提供一个来运行模拟器.
更新解决方案
显然,应该在构建期间使用envSetup.sh脚本自动创建ANDROID_PRODUCT_OUT等变量.我想我的环境设置出了问题就是没有发生.
我正在建设AOSP 4.2 Jelly Bean.当我构建默认full-eng配置并在模拟器上运行时,一切正常.
我需要构建自定义设备并运行它(打开emulator- 用于测试它是否真的有效,并且在真实设备上).当我基于full_base.mk文件创建自定义设备并运行它时emulator- emulator只需在带有ANDROID文本的第一个屏幕上挂起,并且根本不会加载.我system.img, userdata.img, ramdisk.img建立了out目录后.这就是构建自定义AOSP并在设备上运行所需的全部内容吗?我可以在模拟器上运行构建,还是只在真实设备上运行?
我是否应该为实际设备构建AOSP:内核,设备驱动程序等?
自定义设备文件夹文件(device/my_company/my_product):
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
ifneq ($(filter my_product,$(TARGET_DEVICE)),)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif
Run Code Online (Sandbox Code Playgroud)
AndroidProducts.mk
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/full_myproduct.mk
Run Code Online (Sandbox Code Playgroud)
BoardConfig.mk
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true
TARGET_ARCH := arm
TARGET_ARCH_VARIANT := armv7-a
TARGET_CPU_VARIANT := generic
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
HAVE_HTC_AUDIO_DRIVER := true
BOARD_USES_GENERIC_AUDIO := true
# no hardware camera
USE_CAMERA_STUB := true
# Enable …Run Code Online (Sandbox Code Playgroud) 我是Android设备ROM开发的新手.无论如何,我现在正在将AOSP构建到具有64位处理器的中国设备.我正在关注source.android.com上的菜单,当我运行"午餐"命令时,终端说:"午餐菜单...选择一个组合:".
我正在讨论两种选择:aosp_arm-eng和aosp_arm64_eng.
正如我所提到的,我正在为64位处理器设备构建.这是否意味着我需要选择aosp_arm64-eng?因为我已经尝试过但是模拟器由于某种原因没有工作..
我很乐意得到帮助,谢谢:)
我有一个基于AOSP的自定义ROM,我正在开发一个系统应用程序,它在rom构建期间打包就像任何其他系统应用程序一样.
是否可以将此应用程序切换为gradle风格的应用程序,并在AOSP构建期间使用gradle构建该特定应用程序?ie - 从makefile开始gradle构建?
Android N允许您将自己的活动链接到"设置"中的应用页面.只需添加一个<intent-filter>for android.intent.action.APPLICATION_PREFERENCES.Android N的"设置"应用会在您的应用中查找具有该活动的活动<intent-filter>.如果设置找到一个,它会在设置中的应用页面上添加一个齿轮图标,如果用户点击齿轮,它们将被带到您指定的活动.
我担心安全性,所以我提交了一个问题,寻找我们可以使用的权限android:permission,允许设置启动我们的活动,但不允许其他应用程序启动我们的活动(例如,WRITE_SECURE_SETTINGS).
然后cketti指出,您可以将活动标记为未导出,通过android:exported="false".令我惊讶的是,这很有效.
"设置"应用如何启动标记为未导出的活动?
我当然可以看到有一个权限可以控制它.但是,快速阅读"设置"应用程序的清单(主分支,n-developer-preview-5分支)并没有发现任何明显的问题.
所以:
是否有允许应用启动其他应用的非导出组件的权限?如果是这样,这是什么?
如果没有,设置如何将其关闭?
我想克隆Android支持库的存储库,看看版本24.1.1和24.2.0之间的变化.
我知道存储库位于此处,但是:
我怎样才能看到版本24.1.1和24.2.0之间的提交?
我正试图在我的Ubuntu 10.10机器上从头开始构建Android 2.3(Gingerbread).
我已按照此处的所有步骤操作:http: //source.android.com/source/building.html 没有构建错误.
但由于某种原因,模拟器启动并且屏幕保持空白(我确实尝试将其保留几个小时).几个月前我在这台机器上建了2.2而没有问题.
更新:正如您从图像中看到的那样 - adb会短暂地检测到仿真器,但是当我再次运行它大约30秒后它根本检测不到它.
我能错过什么?

我想开发自定义StatusBar.我知道我不是唯一有此要求的人.但还是想知道意见.
经过对StackOverflow的大量搜索,我发现人们已经使用工具修改了状态栏,但这不是我需要的.
我正在研究自己的状态栏的开发方向,我自己的品牌和系统图标的布局.
此外,我在谷歌游戏商店看到有一个自定义状态栏应用程序,如欧米茄状态栏和更多.我正在寻找相同的实现.我还了解到,这些应用程序安装在非root设备上,我需要的方式并使用"禁用或修改状态栏"权限.
我还为状态栏创建了一些基本布局,但不知道如何进一步制作我的状态栏应用程序并覆盖默认状态栏(Systemui.apk)
总结 - 如何在Android中以编程方式开发自己的状态栏应用程序?
帮助感谢!
我查看了Google LatinIME.然后我将java文件夹导入Android Studio.
我运行它,设置它(我在手机设置中选择了一个键盘,我选择了语言布局)但是在测试期间(通过关注edittext)application崩溃时出现错误:
android.view.InflateException:二进制XML文件行#29:二进制XML文件行#21:错误充气类com.android.inputmethod.keyboard.emoji.EmojiPalettesView
这是完整的StackTrace:
致命异常:主要进程:com.android.inputmethod.latin,PID:19332 android.view.InflateException:二进制XML文件行#29:二进制XML文件行#21:错误导致类com.android.inputmethod.keyboard.emoji. EmojiPalettes在android.view.LayoutInflater.inflate(LayoutInflater.java:539)的android.view.LayoutInflater.inflate(LayoutInflater.java:423)中的android.view.LayoutInflater.inflate(LayoutInflater.java:374)的com.android .inputmethod.keyboard.KeyboardSwitcher.onCreateInputView(KeyboardSwitcher.java:464)位于android.inputmethodservice.InputMethodService.updateInputViewShown(InputMethodService.java:1117)的com.android.inputmethod.latin.LatinIME.onCreateInputView(LatinIME.java:752) android.inputmethodservice.InputMethodService.showWindowInner(InputMethodService.java:1473)在android.inputmethodservice.InputMethodService.showWindow(InputMethodService.java:1447)的android.inputmethodservice.InputMethodService $ InputMethodImpl.showSoftInput(InputMethodService.java:437)at at android.inputmethodservice.IInputMethodWrapper.executeMessage(IInputMethodWrapper.java:203)位于android.os.Handler.dispatchMessage(Handler.java:102)的com.android.internal.os.HandlerCaller $ MyHandler.handleMessage(HandlerCaller.java:37)在android.os.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5551),位于com.android.internal的java.lang.reflect.Method.invoke(Native Method) .os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:730)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)引起:android.view.InflateException:二进制XML文件行#21:在android.view.LayoutInflater的android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)的android.view.LayoutInflater.createView(LayoutInflater.java:645)中输入com.android.inputmethod.keyboard.emoji.EmojiPalettesView类错误.parseInclude(LayoutInflater.java:941)位于android.view.LayoutInflater.rInflateCh的android.view.LayoutInflater.rInflate(LayoutInflater.java:831)位于android.view.LayoutInflater.inflate(LayoutInflater.java:423)的android.view.LayoutInflater.inflate(LayoutInflater.java:514)的android.view.LayoutInflater.inflate(LayoutInflater.java)中的ildren(LayoutInflater.java:798) :374)at com.android.inputmethod.keyboard.KeyboardSwitcher.onCreateInputView(KeyboardSwitcher.java:464)
问题: 帮帮我,我做错了什么?
android ×10
android-source ×10
java ×2
64-bit ×1
arm ×1
build ×1
git ×1
makefile ×1
open-source ×1