android的linux版本
2013-07-16 12:06:37 sagane 阅读数 840

   为什么写这篇文章,原因很简单,大家在使用安卓手机时往往最注重三点:稳定性、实用性、耗电情况,MIUI无疑在这方面做的是比较突出的,尽管它现在还不完美BUG也不少,但是它一直坚持一个“橙色的信念”在孜孜不倦的改进和优化。

   好了扯远了话题转回来,安卓手机ROM内核(
Android kernel ) 可以说是系统的“心脏”,它“跳动的频率”和“运行的状况”直接影响着手机的稳定和耗电量,一个好的内核往往能给用户带了不一样的惊喜。
其实安卓内核版本就是手机的硬件(如主板,GPS,摄像头,WiFi,蓝牙等)驱动集合体的版本号。不同的内核可以使手机具有不同的运转速度,特别是对于手机的耗电量和发热量控制具有非常不同的效果!有些机油反映发热量很大,烫手,电池不经用,那就是因为使用了效率低下的内核。


   Android的kernel本源来自Linux kernel,说起他们的历史渊源和矛盾纠葛就比较多了,估计得好几页一大堆,但为了大家更好的理解和接受,我查阅了很多资料后将其全部梳理了一遍,做成如下编年史的表格便于大家收藏和使用(目前来说应该是最全的)!

Android和Linux kernel发展史(BY 夕つ云 整理)
英文名 中文名 Android系统版本 发布时间 Linux kernel内核版本 备注
Astro 铁臂阿童木 Android  beta 2007年11月5日 未知 它作为一个面向开发者的软件开发包(SDK)进行发布。
Wind Up Robots 发条机器人 1.0 2008年9月23日 未知 全球第一台Android设备HTC  Dream(G1)就是搭载Android 1.0操作系统。
1.1 2009年2月2日 未知 由于版权问题和员工喜好Android系统开始是以A-Z的字母开头的甜品命名!
Cupcake 纸杯蛋糕 1.5 2009年4月30日 2.6.27 拍摄/播放影片,支持立体声蓝牙耳机,支持复制/贴上和页面中搜索等。
Donut 甜甜圈 1.6 2009年9月15日 2.6.29 重新设计的Android  Market,手势支持,支持CDMA网络,文字转语音系统等。
Eclair 松饼 2.0 2009年10月26日 2.6.29 优化硬件速度,支持内置相机闪光灯和数码变焦,新的浏览器的用户接口和支持HTML5等。
2.0.1 2009年12月3日 部分API进行修改变化,BUG修复。
2.1 2010年1月12日 部分API进行修改变化,BUG修复。
Froyo 冻酸奶 2.2 2010年5月20日 2.6.32 支持将软件安装至扩展内存,USB分享器和WiFi热点功能,速度和性能优化。
2.2.1 2011年1月18日 存在的bug修复,安全性的提高,性能提升以及流畅性提升。
2.2.2 2011年1月22日 存在的bug修复,修复了Nexus  One中的短信问题。
2.2.3 2011年11月21日 修复了两个存在的安全性问题。
Gingerbread 姜饼 2.3 2010年12月7日 2.6.35 Linux  Kernel 2.6.33版代码库移除了Android代码。
2.3.3 2011年2月9日 进行了API改进
2.3.4 2011年4月28日 屏幕截图功能
2.3.5 2011年7月25日 改进了个别机型的功能,优化相机和电池续航。
2.3.6 2011年9月2日 修复了语音搜索存在的bug
2.3.7 2011年9月21日 增加NFC功能
Honeycomb 蜂巢 3.0 2011年2月2日 2.6.36 平板专用
3.1 2011年5月11日
3.2 2011年7月13日
3.2.1 2011年8月30日
3.2.2 2011年9月20日
Ice  Cream Sandwich 冰淇淋三明治 4.0 2011年11月14日 3.0.X

(目前miui V4-4.0.4的内核版本是3.0.8)
统一了手机和平板电脑使用的系统,提升硬件的性能以及系统的优化,支持在系统中使用虚拟按键等。
4.0.1 2011年10月19日  
4.0.2 2011年11月28日 修复了存在于Verizon版本Galaxy  Nexus中的bug。
4.0.3 2011年12月16日 包括修复bug和系统的优化,并且针对图形,数据库,拼写检查,蓝牙功能和其他功能的改进。
4.0.4 2012年2月6日 更快的运行性能,电池漏洞修复,3G/4G切换改进,信号强度增强,更快速启动等。
4.0.9   由美国Spirit定制的非官方Android版本。
Jelly  Bean 果冻豆 4.1/4.1.1 2012年6月28日 3.0.31/3.1.10 “黄油计划”。
4.1.2 2012年10月9日 加入主画面的旋转功能,单手指开合通知中心讯息,提升性能及稳定性。
A new flavor of Jelly Bean 一种新口味的果冻豆 4.2 2012年10月30日 3.4.0 Android  的Linux kernel代码重新回归Linux kernel 3.3代码库。
4.2.1 2012年11月28日 PhotoSphere  360°全景拍摄,手势输入键盘,支援多重帐户,修复丢失的12月等。
Key Lime Pie 青柠派 5.0 2013年待定 未知  
备注:2012年5月18日,Linux kernel  3.3发布,这个版本更新上第一个新特性也是最重要的新特性,便是Android 的Linux kernel代码重新回归Linux kernel  代码库,同时,内核中也包含着Android的硬件驱动。今后的Android内核将直接驱动硬件,对于软硬件开发者而言都是好事情,而芯片制造商则需要调整硬件架构,以兼容更强大的Linux  3.3以上版本内核了。对于Google而言,这是必须要做的事情,并且越快越好——为了更好的体验,和系统版本更好的融合与升级。

2017-08-22 09:00:32 zzwwm 阅读数 151
Android Version    |API Level  |Linux Kernel in AOSP
----------------------------------------------------
1.5   Cupcake      |3          |2.6.27
1.6   Donut        |4          |2.6.29
2.0/1 Eclair       |5-7        |2.6.29
2.2.x Froyo        |8          |2.6.32
2.3.x Gingerbread  |9, 10      |2.6.35
3.x.x Honeycomb    |11-13      |2.6.36
4.0.x Ice Cream San|14, 15     |3.0.1
4.1.x Jelly Bean   |16         |3.0.31
4.2.x Jelly Bean   |17         |3.4.0
4.3   Jelly Bean   |18         |3.4.39
4.4   Kit Kat      |19, 20     |3.10
5.x   Lollipop     |21, 22     |3.16.1
6.0   Marshmallow  |23         |3.18.10
7.0   Nougat       |24         |4.4.1
7.1   Nougat       |25         |4.4.1 (To be updated)
2013-05-06 22:55:58 chenshangsong 阅读数 657

64位ubuntu12.04,下了个adt-bundle-linux-x86_64-20130219.zip, 在eclipse中新建blankActivity出错,R找不到,注释掉,没错误了,点AndroidManifest.xml-->run as-->android application,出错:adb:no such file or directory!。 

到adb目录下,执行./adb,提示找不到这个命令!。就在眼皮底下居然找不到这个命令!。查一下:file adb,是ELF 32-bit LSB executable,32位程序,google了下,说要安装ia32-libs,于是sudo apt-get install ia32-libs,提示

The following packages have unmet dependencies:

 ia32-libs : Depends: ia32-libs-multiarch

不死心,继续:sudo apt-get install ia32-libs-multiarch,更多的unmet dependencies. 

不想-f再装这些32位lib了,搞的我的64位系统杂七杂八什么都有。android sdk不支持64位系统!那就算了。估计还没到那个时候。

2017-06-28 18:38:34 m0_37826678 阅读数 4145

背景

我目前使用的是豆荚vpn代理才能访问webrtc开源项目,通过给开发环境配置代理可以顺利完成其源码的下载。

安装depot_tools

mkdir webrtc
cd webrtc
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH="$PATH:/home/suirui/webrtc/depot_tools"

下载源码

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc


solutions = [
  {
    "url": "https://chromium.googlesource.com/external/webrtc.git",
    "managed": False,
    "name": "src",
    "deps_file": "DEPS",
    "custom_deps": {},
  },
]
target_os = ["android", "unix"]

这里需要加入 linux 和 android 的下载选项, target_os

同步代码

gclient sync

问题

  • 下载过程中遇到类似
 Failed to fetch file gs://chromium-binutils/5e71702981e5f3b45632f2f209eb3a85d65ca764 for /home/suirui/webrtc/webrtc-source/src/third_party/binutils/Linux_x64/binutils.tar.bz2, skipping. [Err: /home/suirui/webrtc/depot_tools/external_bin/gsutil/gsutil_4.26/gsutil/third_party/boto/boto/pyami/config.py:69: UserWarning: Unable to load AWS_CREDENTIAL_FILE ()
 Failed to fetch file gs://chromium-android-tools/play-services/10.2.0/31843001b7ce94fbdf71f2a9db76b28548a795fa for /tmp/tmpgymXSg/LICENSE, skipping. [Err: Failure: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.
]
Traceback (most recent call last):
  File "src/build/android/play_services/update.py", line 526, in <module>
    sys.exit(main(sys.argv[1:]))
  File "src/build/android/play_services/update.py", line 96, in main
    return args.func(args)
  File "src/build/android/play_services/update.py", line 191, in Download
    config.version_number)):
  File "src/build/android/play_services/update.py", line 381, in _CheckLicenseAgreement
    with open(expected_license_path) as license_file:
IOError: [Errno 2] No such file or directory: '/tmp/tmpgymXSg/LICENSE'
Error: Command '/usr/bin/python src/build/android/play_services/update.py download' returned non-zero exit status 1

wget的方式

使用wget的方式获取
wget --no-check-certificate https://storage.googleapis.com/chromium-webrtc-resources/a5e8c268936d7c8d03edd708c675254474aed944 -O /home/suirui/webrtc/webrtc-sour
ce/src/resources/audio_coding/F01_tlm10.OUT20

原因是由于使用vpn这种情况我们对gs://(Google云存储)的访问权限受限制
将”gs://”替换成”https://storage.googleapis.com/“,即通过HTTPS协议进行下载

这里可以参考参考”http://www.idom.me/articles/843.html“博客写的方法, 可以根据dep的内容进行下载, 里边也配有脚本

修改下载脚本

这里参考”https://segmentfault.com/a/1190000009443082

所有的下载都会通过depot_tools下download_from_google_storage.py
在depot_tools文件夹下添加download_helper.py脚本

import urllib2
import os

httpsPrefix = "https://storage.googleapis.com/"
gsPrefix = "gs://"

def download_gs_to_file(url, fileName):
    download_http_to_file(url.replace(gsPrefix, httpsPrefix), fileName)

def download_http_to_file(url, fileName):
    path=os.path.dirname(fileName)
    if not os.path.exists(path):
        os.makedirs(path)
    response = urllib2.urlopen(url)
    CHUNK = 16 * 1024
    with open(fileName, 'wb') as f:
        while True:
            chunk = response.read(CHUNK)
            if not chunk:
                break
            f.write(chunk)
    print ('download ......ok')


if __name__ == "__main__":
    print ('This is main of module "hello.py"')
    download_gs_to_file('gs://chromium-android-tools/play-services/10.2.0/31843001b7ce94fbdf71f2a9db76b28548a795fa', '/tmp/tmpl1RB43/LICENSE')

这里通过urllib2来自动下载
然后将download_helper.py脚本添加到download_from_google_storage.py

diff --git a/download_from_google_storage.py b/download_from_google_storage.py
index c9f5f67..177982d 100755
--- a/download_from_google_storage.py
+++ b/download_from_google_storage.py
@@ -19,6 +19,7 @@ import threading
 import time

 import subprocess2
+import download_helper


 GSUTIL_DEFAULT_PATH = os.path.join(
@@ -239,20 +240,6 @@ def _downloader_worker_thread(thread_num, q, force, base_url,
           continue
     # Check if file exists.
     file_url = '%s/%s' % (base_url, input_sha1_sum)
-    (code, _, err) = gsutil.check_call('ls', file_url)
-    if code != 0:
-      if code == 404:
-        out_q.put('%d> File %s for %s does not exist, skipping.' % (
-            thread_num, file_url, output_filename))
-        ret_codes.put((1, 'File %s for %s does not exist.' % (
-            file_url, output_filename)))
-      else:
-        # Other error, probably auth related (bad ~/.boto, etc).
-        out_q.put('%d> Failed to fetch file %s for %s, skipping. [Err: %s]' % (
-            thread_num, file_url, output_filename, err))
-        ret_codes.put((1, 'Failed to fetch file %s for %s. [Err: %s]' % (
-            file_url, output_filename, err)))
-      continue
     # Fetch the file.
     out_q.put('%d> Downloading %s...' % (thread_num, output_filename))
     try:
@@ -262,7 +249,7 @@ def _downloader_worker_thread(thread_num, q, force, base_url,
       if os.path.exists(output_filename):
         out_q.put('%d> Warning: deleting %s failed.' % (
             thread_num, output_filename))
-    code, _, err = gsutil.check_call('cp', file_url, output_filename)
+    download_helper.download_gs_to_file(file_url, output_filename)
     if code != 0:
       out_q.put('%d> %s' % (thread_num, err))
       ret_codes.put((code, err))

下载的过程中会出现下面错误:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/suirui/webrtc/depot_tools/download_from_google_storage.py", line 253, in _downloader_worker_thread
    if code != 0:
UnboundLocalError: local variable 'code' referenced before assignment

这个跟 code的 定义有关, 还不知道代表什么意思, 我暂时忽略了

同步完成后, 删除修改在运行一遍

gclient  runhooks 

编译

编译生成ninja文件

gn gen --args='target_os="android" target_cpu="arm"' out/Android_Default


    To build for ARM64: use target_cpu="arm64"
    To build for 32-bit x86: use target_cpu="x86"
    To build for 64-bit x64: use target_cpu="x64"


#编译需要依赖的库
sudo ./install-build-deps-android.sh 

#设置android 环境
. build/android/envsetup.sh


ninja -C out/Android_Default

linux 版本编译

不用指定target os 直接在ubuntu 上编译
gn gen  out/Linux_Default

ninja -C out/Linux_Default

成果

linux 版本和windows版本可以互相连通, android版本目前还没有试

image

联系

qq:690759587 h264学习过程交流 191884149

2019-02-28 10:12:46 ms03001620 阅读数 54

#问题背景:linux系统安装android studio后无法直接打开,一种方式是执行bin目录下的sh文件。另一种是手动建立快捷方式。以下为介绍如何使用linux系统中的"desktop规则"创建快捷方式

1.在application目录下建立Studio.desktop文件。
sudo gedit /usr/share/applications/Studio.desktop

2.输入一下内容。注意Exec和Icon写入的目录位置。Name可以自己起名。完成后保存退出

[Desktop Entry]
Version=1.0
Type=Application
Name=Android Studio3.0
Exec=/home/kitty/Documents/android-studio/bin/studio.sh
Icon=/home/kitty/Documents/android-studio/bin/studio.png
Categories=Development;IDE;
Terminal=false
StartupNotify=true
StartupWMClass=jetbrains-android-studio

3.执行一下命令找到相关ICON(android studio icon)然后拖入DOCK或其他操作
sudo nautilus /usr/share/applications

#常见错误
1.There was an error launching the application. 这个错误一般表示在Studio.desktop文件中由于复制粘贴的代码导致行尾有多余空格或其他字符导致整行语句失效或一些关键字子拼写错误

2在Studio.desktop文件中的路径填写错误。举个例子如果ICON路径错误那么在第三步在APPLICATION中查看icon时会发现图标显示错误。

3.由于操作系统版本差异在语法上也会出现不兼容情况。该例子版本为ubuntu14.04 LTS

AndroidStudio安装与配置过程记录。

博文 来自: aitazhixin
没有更多推荐了,返回首页