【发布时间】:2014-04-04 01:13:59
【问题描述】:
在 Android 中,调试构建和生产构建有什么区别?还有其他类型的构建吗?
谢谢。
【问题讨论】:
标签: android
在 Android 中,调试构建和生产构建有什么区别?还有其他类型的构建吗?
谢谢。
【问题讨论】:
标签: android
我不确定您问的是调试/生产应用还是调试/产品框架。所以我将介绍框架。
有两种不同类型的 android 框架构建(整个系统映像)用户(也称为生产)和用户调试。
所有标准设备制造商都使用“用户”版本发布他们的设备。 Userdebug 用于开发,通常只为内部使用而构建。
获取根:
在 userdebug build 中,您只需执行“adb root”即可将您的 adb shell 切换到 root 模式。此外,您还可以通过“adb remount”将系统分区重新挂载为可写模式,以便进一步控制。
在用户构建中,您可以通过安装特殊的 su 二进制文件和相应的控制应用程序(如 supersu)来获得 root 访问权限。这样,在 adb shell 中,您可以使用“su”来获得特权 shell。不如 userdebug build 方便。
在 AOSP 中,您可以通过午餐命令选择构建类型。例如 午餐 aosp_hammerhead-userdebug
对
午餐 aosp_hammerhead-user
【讨论】:
嗯,这三只小猪有 3 种类型的构建,但大多数都没有那么好。
无论如何,你应该see the docs here。当您在 IDE 中构建应用程序时,您会获得一个调试密钥,这与生产密钥不同。拥有调试版本使您无需每次都输入凭据,但是当您准备好发布生产版本时,您显然会想要此提示。
我想这就是你在说的,但如果你有其他想法,请详细说明。
【讨论】:
这两个版本之间没有区别。生产构建将与调试构建运行相同,但有一些有限的例外。有限的例外与依赖于签名的功能有关,即它们要求您注册调试或生产密钥才能正常工作。这将包括大多数 API,例如 GoogleMaps 或 Facebook,以及使用您的构建密钥生成唯一标识符的任何其他东西(想想大多数 OAuth2 产品)。
您的问题令人困惑/含糊,因为实际上这两个版本没有区别。两者都将运行完全相同的代码。区别在于谁可以运行它们以及如何运行它们。所有 android 应用程序都在由唯一密钥构建时进行签名。此密钥可识别应用程序创建者,并且在生产中很有用,可确保开发人员不会向 Google Play 商店中的人发送垃圾恶意软件(或者至少如果他们知道在哪里可以找到它们)。
在调试模式下创建的构建使用本地化到特定机器的调试密钥进行签名。这意味着,如果我在调试模式下构建一个应用程序以安装到我的手机上,而坐在我旁边的另一个开发人员构建完全相同的代码库以在他的手机上运行,我们的两个应用程序将使用不同的调试密钥进行签名。为什么这很重要?好吧,回到上面提到的 API 注册过程,如果我使用我的调试密钥(坏主意)创建我们公司范围内的 Google Maps API 注册,当我坐在我旁边的朋友在他的机器上以调试模式构建应用程序时,他会遇到错误。问题是对 Google Maps API 的访问取决于安装的应用程序是否已使用正确的密钥注册。因为我们的两个键不同,他的应用程序将无法正确加载。
发布/生产模式允许您将应用程序签名为一个通用密钥,而不是绑定到特定机器。这样就避免了上面提到的问题。通过对所有安装使用一个密钥,每个应用程序都可以访问相同的 API,只要您使用生产密钥注册它们。此生产密钥不是特定于机器的。您可以将其发送给您的朋友(请不要),以便他们可以像您一样签署应用程序。
差不多就是这样。您可以在此处阅读有关building and running apps 的更多信息。如果您有更具体的问题,请澄清。
【讨论】: