精华内容
下载资源
问答
  • 适用于 Kitkat、Jelly Bean 应用程序的 Android Lollipop 小部件/效果:将 Android 5.0 小部件实施到 Pre-Lollipop 版本(Jelly Bean/Kitkat): 回收器视图 FloatingActionButton (FAB) 带动画的 FAB 拉动刷新...
  • Android Jellybean 相机应用 此应用程序是 AOSP 相机应用程序。 我必须开发相机应用程序。 我需要参考。 所以从下载 AOSP jellybean 但是相机应用程序的构建并不困难。 最后我构建了 AOSP 相机应用程序 警告 这...
  • Android源码,只包括android包下源码,体积小,共学习使用。
  • Ultimate N7000 XXLT4:...
  • 带回 JellyBean GPS 通知。 需要 变更日志 1.81 修复了 XSharedPreferences 上的写入 1.8 俄语翻译 移至 Android Studio 更好地挂钩 GPSStatus 解决了一些错误 1.7 修复了 CM11(资源)错误 修复了快速设置中...
  • Jellybean-开源

    2021-04-23 14:06:19
    用Perl编写并可扩展的对象服务器。 当前提供HTTP接口。 体积小,速度快,足以在台式机或服务器上运行。
  • Jellybean 有两个目的: 教这个该死的傻瓜如何编写基本的元编译器,包括逐步检查和调试词法分析和解析步骤。 提供一个简单的语言设计工作室来处理语法和句法规则以进行快速周转调查。 最终,当 Jellybean 达到...
  • Android 4.1~4.3 Jelly Bean

    2017-07-03 18:05:33
    标题Android 4.1Android 4.2Android 4.3

    标题

    Android 4.1

    简介
    Android 4.1 发布时,Google 推出了 Nexus 7、Nexus Q 媒体串流设备以及 Google Glass,虽然后两者最终都停止了更新,但 Nexus Q 的后继者 Chrome Cast 继承了衣钵,Google Glass 依然是最酷炫的科技产品之一。

    Android 4.2

    Android 4.3

    展开全文
  • 孤立的文本 Orphaned Texts 是一个 Android 应用程序,旨在让用户查看、导出和删除由于成为... 此存储库中的应用程序专为 Android 4.3 Jelly Bean 及以下版本设计。 对于较新的设备,请参阅。 下载 从 Play 商店下载。
  • 该库允许使用Jelly Bean +中的Material活动选择器,例如,使用漂亮的Material对话框共享文本或链接。 物料活动选择器显示为底部对话框。 下面介绍了底页: ://material.google.com/components/bottom-sheets.html...
  • Android-JB-翻译 Jelly Bean 4.2.1 希腊语翻译 (联发科) 包括嘉鱼乐娃启动器 如果您有佳宇 G3S,您可以在或找到希腊语安装包和说明
  • 最新Android SDK (4.1): 下载安装顺序: 首先下载安装 【Android 4.1 SDK Tools 20.0.1】 ... 然后下载以下包解压到SDK Tools的安装目录 ...【ARM EABI v7a System Image】 文件超过上传限制,分割为2个部分, 下载后使用...
  • 最近的帖子是很久以前的! 我最近很忙...但是从Android中学到了很多! (还有Node js……我爱上了这... 显然,作为一名Android开发人员,Google I / O已成为学习新事物的重要来源……其中之一就是Jelly Bean(对于尚...
    最近的帖子是很久以前的! 我最近很忙...但是从Android中学到了很多! (还有Node js……我爱上了这个平台!)
    我为跟随我的人决定的其他事情是,从现在开始,文章将仅以英文显示(对不起= /),示例的所有源代码都将在github上提供。
    显然,作为一名Android开发人员,Google I / O已成为学习新事物的重要来源……其中之一就是Jelly Bean(对于尚不知道的人来说是Android 4.1)。
    Jelly Bean带给我们的最重要的新功能之一就是新的通知功能。 你可以看到他们在谷歌I / O主题演讲或一些文章的所有在互联网上( 1234
    那么,我们必须从哪里开始呢? 首先,您必须使用Jelly Bean SDK版本创建一个Android项目。
    可能大多数人都使用NotificationManager在Android设备上推送通知…对于新的Jelly Bean通知,它几乎必须以相同的方式使用。 您可以使用如下形式:
    NotificationManager notificationManager = getNotificationManager();
    Notification notification =
         new Notification(android.R.drawable.ic_menu_camera, "Hello camera!", System.currentTimeMillis());
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notification.number += 1;
    
    Intent intent = new Intent(this, MainActivity.class);
    PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0);
    notification.setLatestEventInfo(this, "title", "content", activity);
    
    notificationManager.notify(0, notification);
    使用新的Jelly Bean通知我们必须做什么? 这很容易…。 而且我必须承认,我更喜欢使用Builder模式的这种方式。 这是大图片风格的示例:
    Builder build = new Notification.Builder(this)
       .setContentTitle("New mail from me")
       .setContentText("subject")
       .setTicker("New email with photo")
       .setSmallIcon(R.drawable.ic_action_search)
       .addAction(
        android.R.drawable.ic_btn_speak_now,
        "Speak!",
        PendingIntent.getActivity(getApplicationContext(), 0,
         getIntent(), 0, null))
       .addAction(
        android.R.drawable.ic_dialog_map,
        "Maps",
        PendingIntent.getActivity(getApplicationContext(), 0,
         getIntent(), 0, null))
       .addAction(
        android.R.drawable.ic_dialog_info,
        "Info",
        PendingIntent.getActivity(getApplicationContext(), 0,
         getIntent(), 0, null));
    
    Notification notification = new Notification.BigPictureStyle(build)
        .bigPicture(
          BitmapFactory.decodeResource(getResources(),
            R.drawable.jellybean)).build();
    
    Intent notificationIntent = new Intent(this, MainActivity.class);
    
    notificationManager.notify(0, notification);
    在以下链接上,所有代码都可以在我的github帐户上找到(您可以在其中找到Android的新ORM解决方案的开始,我希望有一天可以完成= /)。 您也可以在该项目中找到新通知的其他示例(收件箱样式和大文本)。
    这是三个通知将如何显示在您的Android设备上的方法...。 (如果您上面有果冻豆 :-P
    我希望您喜欢这篇文章,您可以问我任何疑问,在Twitter上关注我,或者给我写信和发送电子邮件。
    参考:Javier Manzano的Blog博客中使用 JCG合作伙伴 Javier Manzano的Jelly Bean通知

    翻译自: https://www.javacodegeeks.com/2012/07/android-using-jelly-bean-notifications.html

    展开全文
  • Android 4.2 improves on Android 4.1 in numerous ways, adding a variety of new ... Android 4.2 isn’t as big an update as Android 4.1, also called Jelly Bean, but it’s a definite improvement. And...
    android-4.2-header

    Android 4.2 improves on Android 4.1 in numerous ways, adding a variety of new features. Android 4.2 isn’t as big an update as Android 4.1, also called Jelly Bean, but it’s a definite improvement.

    Android 4.2在Android 4.1上进行了多种改进,增加了许多新功能。 Android 4.2的更新不如Android 4.1(也称为Jelly Bean)那么大,但这是一个明显的改进。

    If you have a Nexus 7 or Galaxy Nexus, you should be getting this update very soon. Unfortunately, it will likely take quite a bit longer for manufacturers to ship Android 4.2 on non-Nexus devices.

    如果您有Nexus 7或Galaxy Nexus,则应该很快得到此更新。 不幸的是,制造商可能需要更长的时间才能在非Nexus设备上发布Android 4.2。

    多个用户帐户 (Multiple User Accounts)

    Android 4.2 includes support for multiple user accounts. It only functions on tablets, so it’s named Tablet Sharing. (Some people speculate that Nokia may have a patent on multiple user accounts for smartphones.)

    Android 4.2包括对多个用户帐户的支持。 它仅在平板电脑上起作用,因此称为“平板电脑共享”。 (有人推测诺基亚可能拥有智能手机多个用户帐户的专利。)

    Each user account has its own “space,” as Android calls it. You can leave an Android tablet laying around and multiple people can have their own accounts, settings, home screen setups and apps whenever they pick up the tablet and unlock it.

    每个用户帐户都有自己的“空间”,就像Android所说的那样。 您可以将Android平板电脑摆在身边,每当他们拿起平板电脑并将其解锁时,多个人都可以拥有自己的帐户,设置,主屏幕设置和应用。

    android-user-accounts

    手势输入 (Gesture Typing)

    Android 4.2’s feature includes a Swype-like Gesture Typing feature. You can type a word by quickly swiping over the letters with your finger – ideal for quickly typing with a single finger. Unlike Swype, the keyboard automatically guesses the word you’re trying to type in real-time, so you get instant feedback and don’t end up accidentally typing a word you didn’t mean to type.

    Android 4.2的功能包括类似Swype的手势输入功能。 您可以通过用手指快速在字母上滑动来输入单词-非常适合单根手指快速输入。 与Swype不同,键盘会自动猜测您要实时输入的单词,因此您可以获得即时反馈,并且不会最终意外输入您不想输入的单词。

    android-gesture-typing

    快速设定 (Quick Settings)

    Android 4.2 now includes a quick settings panel that gives you quick access to frequently used settings, including Wi-Fi and Bluetooth settings, airplane mode, a brightness control, and battery information. To access it, pull down from the upper right corner of the panel on a tablet or pull down from the panel with two fingers on a smartphone.

    Android 4.2现在包括一个快速设置面板,可让您快速访问常用设置,包括Wi-Fi和蓝牙设置,飞行模式,亮度控制和电池信息。 要访问它,请在平板电脑上从面板的右上角向下拉,或在智能手机上用两根手指从面板上拉下。

    Samsung’s TouchWiz and other Android skins have long included a similar feature, but it’s now integrated into stock Android.

    三星的TouchWiz和其他Android外观长期以来都包含类似的功能,但现在已集成到库存的Android中。

    android-quick-settings

    锁屏小部件 (Lock-Screen Widgets)

    Android 4.2’s lock screen now supports widgets, similar to the popular WidgetLocker app. Out of the box, you can add Gmail, Calendar, and Clock widgets to easily view your emails and calendar events without unlocking your device.

    Android 4.2的锁定屏幕现在支持小部件,类似于流行的WidgetLocker应用。 开箱即用,您可以添加Gmail,日历和时钟小部件,以轻松查看电子邮件和日历事件而无需解锁设备。

    android-gmail-lock-screen-widget

    新的相机应用程序和Photo Sphere全景照片 (New Camera App & Photo Sphere)

    Android 4.2 includes a new Camera app with a clever interface. Instead of toolbars and buttons you have to hunt for, a quick settings menu appears wherever you touch in the camera app. This allows you to quickly change settings with one hand while taking a photo.

    Android 4.2包括一个具有巧妙界面的新Camera应用。 无论您在相机应用程序中触摸什么位置,都将显示快速设置菜单,而不必寻找工具栏和按钮。 这使您可以在拍照时用一只手快速更改设置。

    android-4.2-camera-app

    There’s also a Photo Sphere feature, which allows you to take Google Streetview-style 360-degree photos of a scene.

    还有Photo Sphere功能,可让您拍摄Google Streetview风格的场景360度照片。

    Google即时改进 (Google Now Improvements)

    Along with Android 4.2 come new cards for Google Now, although the new Google Now features aren’t exclusive to Android 4.2. There are new cards that display information about flights, hotels, packages, restaurants, and events – Google watches your Gmail account for confirmation or tracking emails and displays this data in Google Now.

    尽管新的Google即时功能并非Android 4.2独有,但随着Android 4.2的出现,Google Now有了新的功能。 有一些新的卡片可以显示有关航班,酒店,套餐,餐厅和活动的信息-Google会监视您的Gmail帐户以进行确认或跟踪电子邮件,并在Google即时中显示此数据。

    google-now-flight-card

    白日梦 (Daydream)

    Android 4.2 includes a Daydream feature that allows Android to function as a smart screensaver. When docked or charging, you can have your Android’s screen stay on and display content from any app with Daydream support. For example, you can display a clock, view a photo slideshow, or show new content from Google Currents.

    Android 4.2包含Daydream功能,可让Android充当智能屏保。 停靠或充电时,您可以让Android屏幕保持打开状态并显示任何支持Daydream的应用程序中的内容。 例如,您可以显示时钟,查看照片幻灯片或显示Google Currents中的新内容。

    android-daydream

    Miracast (Miracast)

    Android 4.2 supports the new Miracast industry standard for display-mirroring over Wi-Fi, allowing you to wirelessly stream video from your Android device to any Miracast-supporting display. You’ll be able to buy televisions and other displays with integrated supports for Miracast, as well as receivers that plug into HDMI ports on displays without integrated Miracast support. In time, Miracast could be the rest of the world’s answer to Apple’s AirPlay.

    Android 4.2支持新的Miracast行业标准,用于通过Wi-Fi进行显示镜像,使您可以将视频从Android设备无线流式传输到任何支持Miracast的显示器。 您将能够购买具有对Miracast的集成支持的电视和其他显示器,以及在不集成Miracast的支持下插入显示器HDMI端口的接收器。 随着时间的流逝,Miracast可能会成为全球其他地区对Apple AirPlay的答案。

    Gmail改进 (Gmail Improvements)

    The Gmail app has a few improvements Gmail users will appreciate. In the message list, you can swipe an email to the left to archive it, or swipe the email to the right to delete it. Gmail also finally has support for pinch-to-zoom, allowing you to deal with HTML emails much more easily.

    Gmail应用程序有一些改进,Gmail用户将不胜感激。 在邮件列表中,您可以向左滑动电子邮件以将其存档,或向右滑动电子邮件以将其删除。 Gmail最终还支持缩放功能,使您可以更轻松地处理HTML电子邮件。

    新时钟应用 (New Clock App)

    Android 4.2 includes a new Clock app. While this isn’t a groundbreaking new feature, the Clock app looks a little different from the stock apps we’re used to, complete with unusual-looking fonts. Along with the Camera, this could be a hint of where Android’s interface may be headed in the future – who knows!

    Android 4.2包括一个新的Clock应用程序。 虽然这不是一项突破性的新功能,但“时钟”应用程序看起来与我们习惯的普通应用程序有些不同,并带有外观奇特的字体。 与Camera一起,这可能暗示了Android界面未来的发展方向-谁知道!

    android-4.2-clock


    Android 4.2’s support for multiple users is probably its biggest new feature – there’s no new feature quite as groundbreaking as the Project Butter performance improvements or Google Now in Android 4.1. Gesture typing, quick settings, and lock-screen widgets bring popular third-party features into stock Android and make them part of the operating system.

    Android 4.2对多个用户的支持可能是其最大的新功能–没有比Project Butter性能改进或Android 4.1中的Google Now更具突破性的新功能。 手势输入,快速设置和锁屏窗口小部件将流行的第三方功能带入了库存的Android中,并使它们成为操作系统的一部分。

    翻译自: https://www.howtogeek.com/128846/10-new-features-in-android-4.2-jelly-bean/

    展开全文
  • 第一个补丁使用: patch -p1 < 使用 interdiff 打补丁: interdiff -z <your> <your> | patch -p1 构建命令: echo make_kernel.sh gedit make_kernel.sh - 写入该文件 make ... find ....
  • 据我所知,Galaxy S4 是唯一一款支持 4.2 的,这意味着当前的主流设备包括 Galaxy S3、Note 2(目前最新的官方更新为 Jellybean 4.1.x - Level 16)将无法获得支持在此刻。 这实际上取决于三星何时推出这些“旧”...
  • 消息复制 android平台软糖4.1.2中消息应用程序的副本。该应用程序将按照android平台软糖中的原样进行编码,然后分析如何自定义它或根据用户需要进行讲述。
  • 翻译自:Using app encryption in Jelly Bean关键词 : adb install -l最新的 Android 4.1(Jelly Bean)版本在上周的 Google I / O 大会上发布了,它有一大堆新功能和改进。 其中一个有趣的功能是应用程序加密,除了...

    翻译自:Using app encryption in Jelly Bean

    关键词 : adb install -l


    最新的 Android 4.1(Jelly Bean)版本在上周的 Google I / O 大会上发布了,它有一大堆新功能和改进。 其中一个有趣的功能是应用程序加密,除了简短的说明还没有任何细节:“从 Jelly Bean 版本起,Google Play 中的付费应用程序在分发和存储之前,会使用设备特定的密钥加密”。缺乏细节当然会引起猜测,有些人甚至担心,当他们使用一个新的设备时必须回购他们的付费应用程序。 在本文中,我们将介绍如何在操作系统中实施应用加密,展示如何在不通过 Google Play 的情况下安装加密的应用,并了解 Google Play 如何提供加密的应用。

    操作系统对加密应用程序的支持

    本文之前的版本是基于 Eclipse 框架和二进制的系统镜像,并且缺少一部分。由于 Jelly Bean 已经开源,下面的讨论已经修改,现在是基于 AOSP 代码(4.1.1_r1)。如果你回来重读本文,重点放在第二部分。

    Android 上的应用可以通过几种不同的方式安装:

    • 通过应用商店(例如 Google Play Store,也称为 Android Market)
    • 直接在手机上打开应用文件或电子邮件附件(如果启用“位置来源”选项)
    • 使用通过 USB 连接的计算机的 adb install SDK 命令

    前两个不提供任何选项或者特定视角的底层实现,让我们探索第三个。看看使用 adb 命令的输出,可以看到 install 命令在最新的 SDK 版本中获得了几个新选项:

    $ adb install [-l] [-r] [-s] [--algo <algorithm name> --key <hex-encoded key> 
    --iv <hex-encoded iv>] <file>

    显然 —algo—key—iv 参数与加密应用程序有关,所以在进入详细信息之前,首先尝试安装一个加密的 APK。使用 OpenSSL enc 命令加密文件相当容易,通常它已经在大多数 Linux 系统上安装。我们使用 CBC 模式下的 AES 算法,配合一个128 bit 的 Key(下文可以看到,这一个不是很安全的密钥),为使事情更简单,这里使用与密钥相同的初始化向量(initialization vector, IV)。

    $ openssl enc -aes-128-cbc -K 000102030405060708090A0B0C0D0E0F 
    -iv 000102030405060708090A0B0C0D0E0F -in my-app.apk -out my-app-enc.apk

    让我们尝试安装它来检查 Android 是否喜欢我们新加密的应用程序:

    $ adb install --algo 'AES/CBC/PKCS5Padding' --key 000102030405060708090A0B0C0D0E0F 
    --iv 000102030405060708090A0B0C0D0E0F my-app-enc.apk
            pkg: /data/local/tmp/my-app-enc.apk
    Success

    “Success” 的输出结果看起来似乎很有前途,然后确认应用的图标显示在系统面板中并且启动时无错误。实际的 APK 文件像往常一样被复制在 /data/app 中,将其哈希值与我们加密的 APK 进行比较,发现它实际上是一个不同的文件。安装后的文件的哈希值和原始(未加密) APK 的完全相同,因此我们可以得出结论,APK 在安装是使用我们提供的加密参数(算法、密钥和 IV)进行解密。让我们看看这是如何实现的。

    adb install 命令根本上是调用 pm Android 命令行实用程序,它允许我们列出、安装和删除包(应用程序)。 通常 PackageManagerService 是负责在 Android 上安装应用程序的组件,pm 只是一个方便的前端。 应用程序通常通过 PackageManager 类来访问包服务。 浏览其代码并检查加密相关方法,我们发现:

    public abstract void installPackageWithVerification(Uri packageURI,
            IPackageInstallObserver observer, int flags, String installerPackageName,
            Uri verificationURI, ManifestDigest manifestDigest,
            ContainerEncryptionParams encryptionParams);

    ContainerEncryptionParams 类看起来特别有可能,所以让我们看看里面:

    public class ContainerEncryptionParams implements Parcelable {
        private final String mEncryptionAlgorithm;
        private final IvParameterSpec mEncryptionSpec;
        private final SecretKey mEncryptionKey;
        private final String mMacAlgorithm;
        private final AlgorithmParameterSpec mMacSpec;
        private final SecretKey mMacKey;
        private final byte[] mMacTag;
        private final long mAuthenticatedDataStart;
        private final long mEncryptedDataStart;
    }

    我们使用的 adb install 参数完全对应于类的前三个字段。 除此之外,该类还存储 MAC 相关参数,因此可以安全地假设 Android 现在可以检查应用程序二进制文件的完整性。 不幸的是,pm 命令没有任何 MAC 相关的参数(它实际上有,但由于某些原因,在当前生成中禁用),所以为了尝试 MAC 支持,我们需要直接调用 installPackageWithVerification 方法。

    该方法对于 SDK 应用程序是隐藏的,因此从应用程序里调用它的唯一方法是使用反射。事实证明,它的大多数参数类( IPackageInstallObserver,ManifestDigest 和 ContainerEncryptionParams )也被隐藏,但这只是一个小陷阱。 对于 Android 预加载框架类,即使你的应用程序捆绑了一个框架类,系统副本仍旧会在运行时使用它。这意味着我们必须做的是为 installPackageWithVerification 方法获取一个句柄,将所需的类添加到我们的应用程序中的 andorid.content.pm 包中。一旦我们有一个方法句柄,我们只需要实例化 ContainerEncryptionParams 类,然后提供所有的加密和 MAC 相关的参数。需要注意的是,由于我们的整个文件是加密的,并且 MAC 是在其所有内容上计算的(见下文),我们为加密和认证数据的开头指定为 0,将文件大小指定为数据的结尾(查看示例代码)。为了计算 MAC 值(标签),我们再次使用 OpenSSL:

    $ openssl dgst -hmac 'hmac_key_1' -sha1 -hex my-app-enc.apk
    HMAC-SHA1(my-app-enc.apk)= 0dc53c04d33658ce554ade37de8013b2cff0a6a5

    请注意,dgst 命令不支持使用十六进制或 Base64 的 HMAC 密钥,因此您只能使用 ASCII 字符。 这对于生产使用可能不是一个好主意,因此请考虑使用真正的密钥并以某种其他方式(使用 JCE 等)来计算 MAC。

    我们的应用程序现在大部分已准备就绪,但安装应用程序需要 INSTALL_PACKAGES 权限,该权限与保护级别 signatureOrSystem 一起定义。 因此,它只被授予使用系统(ROM)密钥签名的应用程序或安装在 /system 分区中的应用程序。 构建 Jelly Bean ROM 是一个有趣的练习,但现在,我们只需将我们的应用程序复制到 /system/app,以获得安装软件包(在模拟器或 Root 过的设备上)的必要权限。 一旦完成,我们可以通过 PackageManager 安装加密的应用程序,Android 将通过比较指定的 MAC 标记与基于实际文件内容计算的值来解密 APK 并验证包没有被篡改。 您可以通过稍微更改加密和 MAC 参数来使用示例应用程序进行测试,这将导致安装错误。

    jb-app-encryption

    android.content.pm 包有一些更有趣的类,例如 MacAuthenticatedInputStreamManifestDigest ,但实际的 APK 加密和 MAC 验证是由 DefaultContainerService$ApkContainer 做的,它是 DefaultContainerService(aka,Package Access Helper)的一部分。

    前向锁定(Forward locking)

    在移动(功能)手机上,通常当铃声、壁纸或者其他数字商品开始进行销售时,Forward locking 会弹出。它的名称来自它的意图:阻止用户转发他们已经购买的文件给自己的朋友和家人。Android 上的主要数字内容是原生应用程序,随着付费应用越来越受欢迎,共享(二次销售)成为一个问题。应用程序包(APKs)在 Android 上是公共可读的,这使得即使是在生产设备中提取应用程序也相对容易。虽然公共可读的应用程序文件可能听起来像是一个坏主意,它根植于 Android 的开放和可扩展性—第三方启动器、Widget 容器和应用程序可以轻松的提取 APKs 的 Icon、Widget 的可定义 Intents等等。为了锁定付费应用程序而不失去任何操作系统的灵活性,Android 引入了 Forward locking(又称“拷贝保护”)。它的想法是把应用程序包分为两部分:一个公共可读的部分,包括资源文件和 manifest (保存在 /data/app );一个系统用户可读的包含可执行代码的包(保存在 /data/app-private )。代码包受文件系统权限保护,虽然这使得大多数消费者设备上的用户无法访问它,但是只需要获得 root 访问权限即可提取它。这种方法很快就被启用,引入了在线 Android 授权(LVL)作为替代品。然而,这将应用程序保护实施从操作系统转移到应用程序开发人员,并取得了不同的结果。

    在 Jelly Bean 中,Forward locking 的实现已经重新设计,现在提供了将 APK 存储在加密容器中的能力,该加密容器需要在运行时安装设备特定密钥。让我们更详细地研究一下实现。

    Jelly Bean 实现

    虽然对于 JB(Jelly Bean),把加密的应用程序容器作为一个前向锁定机制是新加的,但加密容器的想法开始于 Froyo。 当时(2010年5月),大多数Android 设备都配备有有限的内部存储空间和相当大(几GB)的外部存储设备,通常采用 micro SD 卡的形式。 为了使文件共享更容易,外部存储使用 FAT 文件系统进行了格式化,该文件系统缺少文件权限。 因此,任何人(任何应用程序)都可以读取和写入 SD 卡上的文件。 为了防止用户简单地将付费应用程序复制到 SD 卡上,Froyo 创建了一个加密的文件系统映像文件,并在您选择将应用移动到外部存储时将 APK 存储在其中。 然后使用 Linux 的设备映射程序在运行时安装映像,系统将从新创建的安装点(每个应用程序一个)加载应用程序文件。 基于此,JB 的容器使用 EXT4 文件系统,它允许权限。 典型的前向锁定应用程序的挂载点现在如下所示:

    shell@android:/mnt/asec/org.mypackage-1 # ls -l
    ls -l
    drwxr-xr-x system   system            2012-07-16 15:07 lib
    drwx------ root     root              1970-01-01 09:00 lost+found
    -rw-r----- system   u0_a96    1319057 2012-07-16 15:07 pkg.apk
    -rw-r--r-- system   system     526091 2012-07-16 15:07 res.zip

    这里 res.zip 拥有应用程序资源,是公共可读的,而保存完整 APK 的 pkg.apk 文件只能由系统和应用程序的专用用户(u0_a96)读取。 实际的应用程序容器存储在/data/app-asec 中,文件名为 pacakge.name-1.asec 。 ASEC 容器管理(创建/删除和挂载/卸载)在系统卷守护程序(vold)中实现,框架服务通过通过本地 socket 发送命令与之通信。 我们可以使用 vdc 实用程序从 shell 管理转发锁定的应用程序:

    # vdc asec list
    vdc asec list
    111 0 com.mypackage-1
    111 0 org.foopackage-1
    200 0 asec operation succeeded
    
    # vdc asec unmount org.foopackage-1
    200 0 asec operation succeeded
    
    # vdc asec mount org.foopackage-1 000102030405060708090a0b0c0d0e0f 1000
    org.foopackage-1 000102030405060708090a0b0c0d0e0f  1000                    
    200 0 asec operation succeeded
    
    # vdc asec path org.foopackage-1
    vdc asec path org.foopackage-1
    211 0 /mnt/asec/org.foopackage-1

    所有命令都将命名空间 ID(实际上基于包名称)作为参数,对于 mount 命令,您需要指定加密密钥和装载点的所有者 UID(1000是系统)。 那就是如何存储和使用应用程序,剩下的是找出实际的加密算法和密钥。 两者从原始的 Froyo 应用程序到 SD 实现没有变化:Twofish 与128位密钥存储在 /data/misc/systemkeys

    shell@android:/data/misc/systemkeys $ ls
    ls
    AppsOnSD.sks
    shell@android:/data/misc/systemkeys $ od -t x1 AppsOnSD.sks
    od -t x1 AppsOnSD.sks
    0000000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
    0000020

    通过指定 pm install命令的 -l 选项或为 PackageManagerinstallPackage* 方法指定 INSTALL_FORWARD_LOCK 标志(请参阅示例应用程序)来触发转发锁定应用程序。

    加密应用程序和 Google Play

    所有这一切都很有趣,但正如我们所见,安装应用程序、加密或其他都需要系统权限,因此它只能由自定义运营商Android 固件和下一个版本友好的 CyanogenMod ROM 使用。 目前唯一利用了新的加密应用程序和前向锁定基础设施的应用程序是 Play Store(谁出来了这些名字,真的?)Android 客户端。 要详细了解 Google Play 客户端的工作原理,需要详细了解底层协议(这始终是一个移动目标),但随意查看最新的 Android 客户端确实显示了一些有用的信息。 Google Play 服务器会发送相当多的有关您即将下载和安装的应用的元数据,例如下载网址,APK 文件大小,版本代码和退款窗口。 其中新增的是 EncryptionParams ,它看起来非常类似于上面显示的ContainerEncryptionParams

    class AndroidAppDelivery$EncryptionParams {
      private int cachedSize;
      private String encryptionKey;
      private String hmacKey;
      private int version;
    }

    加密算法和 HMAC 算法总是分别设置为 'AES / CBC / PKCS5Padding''HMACSHA1' 。 IV 和 MAC 标签与加密的APK 捆绑在一个 blob 中。 一旦读取和验证所有参数,它们基本上将转换为 ContainerEncryptionParams 实例,并使用熟悉的 PackageManager.installPackageWithVerification() 方法安装应用程序。 如可能预期的,安装付费应用程序时,将设置 INSTALL_FORWARD_LOCK 标志。 操作系统从这里获取它,并且过程与上一节中描述的相同:免费应用程序被解密,APK最终在 /data/app 中,而在 /data/app-asec 中的加密容器被创建和装载在付费应用的 /mnt/asec/package.name 下。

    那么在实践中这是什么意思? Google Play 现在声称,付费应用程序始终以加密形式传输和存储,因此,如果您决定使用 Jelly Bean 提供的应用程序加密设施实现它,则您自己的应用程序分发渠道也会如此。 应用程序必须在某些时候可用于操作系统,所以如果你有 root 用户访问正在运行的 Android 设备,仍然可以提取前向锁定 APK 或容器加密密钥,但这确实是所有软件的解决方案。

    更新:虽然正向锁定使得复制付费应用程序更难,似乎它与其他服务的集成仍然有一些问题。 根据这里的多个开发人员和用户的报告,它目前打破了应用程序注册自己账户管理的实现,包含大多数付费小部件的应用程序。 这是由于一些服务在 /mnt/asec 被挂载之前被初始化,因此不能访问它。 据说有一个可用的修复(没有Gerrit链接),并应在 Jelly Bean 维护版中发布。

    更新2:似乎最新版本的 Google Play 客户端(3.7.15)安装了带有小部件的付费应用程序,并且可能还会在 /data/app 中管理帐户(临时?)解决方法。 下载的 APK 仍会加密传输。 例如:

    shell@android:/data/app # ls -l|grep -i beautiful
    ls -l|grep -i beautiful
    -rw-r--r-- system   system    6046274 2012-08-06 10:45 com.levelup.beautifulwidgets-1.apk

    这就是现在的情况。 希望,很快就会从官方来源获得有关应用加密操作系统实施和设计以及 Google Play 商店的使用情况的更详细信息。 在那之前,获取示例项目,启动 OpenSSL 并尝试。

    —— Nikolay Elenkov

    展开全文
  • 井字游戏 一个简单的 Android (4.2.2 Jelly Bean) 游戏应用程序,使用 Eclipse 用 Ja​​va 编写。
  • class jelly_bean_sb_subscriber extends uvm_subscriber#( jelly_bean_transaction ); `uvm_component_utils( jelly_bean_sb_subscriber ) function new( string name, uvm_component parent ); super.new( ...
  • Android.Application.Development.Cookbook.SourceCode 基于Android SDK v4.1(Jelly Bean
  • Jelly Bean风格相机 Camera JB+ v3.1 当前版本:3.1软件语言:非中文软件类别:特效相机软件大小:7.59 MB适用固件:4.0.3及更高固件内置广告:没有广告适用平台:Android 软件介绍 Camera JB+是一款果冻豆风格的...
  • 翻译自:Using app encryption in Jelly Bean 关键词 : adb install -l 最新的 Android 4.1(Jelly Bean)版本在上周的 Google I / O 大会上发布了,它有一大堆新功能和改进。 其中一个有趣的功能是应用程序加密,...
  • 转化次数 一个 Android (4.2.2 Jelly Bean) 应用程序,用于执行通用单位转换,它扩展了使用 Eclipse 用 Ja​​va 编写的 PreferenceFragment。
  • 最新Android SDK (4.1): 下载安装顺序: 首先下载安装 【Android 4.1 SDK Tools 20.0.1】 ... 然后下载以下包解压到SDK Tools的安装目录 ...【ARM EABI v7a System Image】 文件超过上传限制,分割为2个部分, 下载后使用...
  • Android 4.1 (Jelly Bean) 源码编译过程总结

    万次阅读 热门讨论 2012-07-11 23:10:52
    昨天google官方发布了Android 4.1 Jelly Bean的源码,本人第一时间将源码托了下来(托了一个通宵),今天又花了一早上时间编译ROM并刷到自己的Galaxy Nexus中,虽说Android 4.1已经用了一个多星期了,但是作为Android...
  • Sony 宣布为中阶手机 Xperia M 发放 Android 4.3 Jelly Bean 系统升级。升级版本为 15.4.A.0.23,将会带来一系列的优化功能,其中包括新的相机介面,自动拍摄模式等。另外,升级亦会加入电池优化的“STAMINA”模式,...
  • jellybean适配教程.pdf

    2013-08-13 16:44:37
    “工欲善其事,必先利其器” 。在开始定制 MIUI ROM 之前,我们需要搭建好必要的开 发环境。 本教程的主旨是如何基于原厂 ROM 修改。 我们所涉及的修改理论上说是不需要源码的, ...对于 ROM 开发者来说,我们建议 ...
  • 1. 访问以下Android官方网站: http://developer.android.com/sdk/index.html ...然后根据系统是32位还是64位下载相应的zip压缩文件。  3.下载完成后解压缩,包含了eclipse和sdk两个文件夹。打开
  • sultan-kernel-celox:适用于Samsung Skyrocket(SGH-I727)和Samsung Hercules(SGH-T989)的AOSP内核,基于官方的Samsung Jelly Bean内核源代码发布,并重新基于CAF jb_1.9.6

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,941
精华内容 4,376
关键字:

jellybean