当前位置:首页 » 编程软件 » android编译运行版本

android编译运行版本

发布时间: 2022-07-08 22:24:33

⑴ Android编译版本eng,user和userdebug的区别

Android编译版本eng、user和userdebug的区别:
一、Android官网的解释
eng This is the default flavor. A plain make is the same as make eng.
* Installs moles tagged with: eng, debug, user, and/or development.
* Installs non-APK moles that have no tags specified.
* Installs APKs according to the proct definition files, in addition to tagged APKs.
* ro.secure=0
* ro.debuggable=1
* ro.kernel.android.checkjni=1
* adb is enabled by default.
* Setupwizard is optional
user make user
This is the flavor intended to be the final release bits.
* Installs moles tagged with user.
* Installs non-APK moles that have no tags specified.
* Installs APKs according to the proct definition files; tags are ignored for APK moles.
* ro.secure=1
* ro.debuggable=0
* adb is disabled by default.
* Enable dex pre-optimization for all TARGET projects in default to speed up device first boot-up
userdebug make userdebug
The same as user, except:
* Also installs moles tagged with debug.
* ro.debuggable=1
* adb is enabled by default.
二、对编译版本MTK的补充说明
MTK 补充说明差异:(
(1) Debug/LOG 方面,原则上user 版本只能抓到有限的资讯,eng 可以抓到更多的资讯,Debug 能力更强,推崇使用eng 版本开发测试
* 因user/eng 版本设置ro.secure不同,导致user 版本adb 只拥有shell 权限,而eng 版本具有root 权限
* MTK System LOG 在ICS 以后,在user 版本默认关闭全部LOG, 在eng 版本中默认打开,以便抓到完整的资讯
* 在eng 版本上,LOG 量 >= user 版本的log 量,一些地方会直接check eng/user 版本来确认是否打印LOG
* user 版本默认关闭uart, eng 版本默认开启uart
* 在eng 版本上,开启ANR 的premp, 会抓取ftrace,可以得到更多ANR的资讯
* 在eng 版本上,可用rtt 抓取backtrace,可开启kdb 进行kernel debug, 可用ftrace 抓取cpu 执行场景
* MTK aee 在ENG 版本抓取更多的异常资讯,比如native exception 会抓取core mp 信息
(2) 性能方面,原则上进行性能测试请使用user 版本测试
* user 版本为提高第一次开机速度,使用了DVM 的预优化,将dex 文件分解成可直接load 运行的odex 文件,ENG 版本不会开启这项优化
* 更少的LOG 打印,uart 的关闭,原则上user 版本的性能要优于eng 版本
(3) 如何确认user/eng 版本
* java 层,check android.os.Build 类中的TYPE 值
* native 层,property_get("ro.build.type", char* value, "eng"); 然后check value 值
* Debug 时, adb shell getprop ro.build.type 返回值如果是user 即user 版本,eng 即eng 版本
* Log 确认, mobile log/Aplog_xxxxx/versions 中查看ro.build.type 属性
(4) 如何编译user/eng 版本
* 默认编译是eng 版本,如果需要编译user 版本,请加入参数 -o=TARGET_BUILD_VARIANT=user 如:
./mk -o=TARGET_BUILD_VARIANT=user mt6577_phone new
default.prop和/system/build.prop
三、编译版本与ADB、root的控制关系
1. root权限:adb.c中与属性ro.kernel.qemu(是否是模拟器)、ro.secure、ro.debuggable、service.adb.root几个相关联。
service.adb.root : services.c -> restart_root_service()中设置
build/core/main.mk的如下地方决定了了ro.secure和ro.debuggable的值
user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
enable_target_debugging := true
tags_to_install :=
ifneq (,$(user_variant))
# Target is secure in user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
...
else # !user_variant
# Turn on checkjni for non-user builds.
ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1
# Set device insecure for non-user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
# Allow mock locations by default for non user builds
ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1
endif # !user_variant
ifeq (true,$(strip $(enable_target_debugging)))
# Target is more debuggable and adbd is on by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
# Include the debugging/testing OTA keys in this build.
INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
# Target is less debuggable and adbd is off by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
endif # !enable_target_debugging
## eng ##
...
endif
2. 是否开启adbd服务:UsbDeviceManager.java中与属性persist.sys.usb.config、sys.usb.config、persist.service.adb.enable几个相关联
persist.sys.usb.config:/build/tools/post_process_props.py中根据ro.debuggable来设置persist.sys.usb.config的初始值
sys.usb.config:UsbDeviceManager.java -> setUsbConfig
文件init.clippers.usb.rc中监听了sys.usb.config属性变化时的动作
on property:sys.usb.config=adb

⑵ 那个版本的ecplise用来开发android编译运行比较快

我用的是3.7.0的 这个版本,我觉得整体上的编译速度还是可以的。其实最重要的是兼容性和稳定才是关键。

⑶ Android编译和运行在手机上使用的系统源码版本各是什么版本

如果app是和android系统一起进行编译,如果想让app的源码保持一套,却能够同时在android4.1和android4.2下进行编译。如果app源码与android系统的版本无关,那么,不存在问题。
但,如果app的实现代码与所依赖的framework的版本强相关,譬如,Location相关的API,在android4.1和android4.2上的差异比较大。应用如果是采用4.2的API来实现的,在配合android4.1系统编译时就会报错。此时,可以采用在Android.mk文件中,根据PLATFORM_SDK_VERSION的值,在编译时决定要编入哪些Java文件,源码中同时保留针对android4.1和android4.2的特有实现。
源码目录为:

⑷ 编译android4.4用哪个版本的gcc

一般来说编译安卓4.4用ggc的4.4.3版本即可,版本过高可能会引起错误。
gcc:它是一套GNU编译器套装以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC在微软的Windows下的移植版本叫MinGW。[1]GCC是自由软件过程发展中的着名例子,由自由软件基金会以GPL协议发布

⑸ android 中编译版本,最小版本,目标版本都有什么区别

  • SDK 最低版本

    以最低版本设置值为标准,操作系统会拒绝将应用安装在系统版本低于标准的设备上。

  • SDK 目标版本

    目标版本的设定值告知Android:应用是为哪个API级别设计的。大多数情况下,目标版本即最新发布的Android版本。

  • SDK 编译版本

    SDK最低版本和目标版本会通知给操作系统,而SDK编译版本只是你和编译器之间的私有信息。
    Android的特色功能是通过SDK中的类和方法展现的。在编译代码时, SDK编译版本(即编译目标) 指定具体要使用的系统版本。 Android Studio在寻找类包导入语句中的类和方法时,编译目标确定具体的基准系统版本。

⑹ 开发一个android程序,可以在不同安卓系统版本的手机上运行吗

可以的,在新建一个 android project 时,要求输入 minSdkVersion 这一项,一般我们是指定和我们使用的 SDK 版本相一致的 API Level. 然后,在androidManifest.xml 文件中会有一个对应的属性:android:minSdkVersion .那这个属性就决定了本程序最低兼容的android系统版本。

由于andrid系统是向下兼容的,也就是说,高版本的SDK会兼容低版本的SDK

举例说明:
1. 我们新建一个 Android Project (HelloAndroid), 指定为 Android 2.2 版本,对应的 minSdkVersion 填8,finish;
2. 此时我们运行 HelloAndroid ,会运行一个 2.2 版本的模拟器。
3. 假若我们现在去 AndroidManifest.xml 文件 中修改 android:minSdkVersion=7,再次运行,那么会在我们已经打开的 2.2 模拟器上运行。因为 Android API 都是向后兼容的,所以系统在编译时,这个 Project 是利用 2.1 版本来编译的,但也可以在 2.2 模拟器上运行;若我们先把 2.2 模拟器关闭,再运行 HelloAndroid 这个Project 的话,那么会新建一个 API Level=7 的 模拟器来运行这个程序(也就是 2.1模拟器)。
4. 假若我们修改 android:minSdkVersion=10, 那么无论你是否打开了 2.2 版本的模拟器,都会报错:
ERROR: Application requires API version 10. Device API version is 8 (Android 2.2).
Launch canceled!

⑺ 创建一个Android应用程序时,需要明确目标版本和编译版本,不需要最小版本

摘要 compiledSdkVersion: 编译SDK版本是将要编译APP的平台版本. 默认情况下它应该设置为SDK中最新的Android可用版本. 我们依然可以编译APP来支持更早的版本, 但是设置它为最新版本让我们可以使用新功能并优化APP使其在最新版本上拥有更好的用户体验.

⑻ android sdk多个版本 编译用哪个

永远只用最新的SDK版本,这是Google官方强烈建议的。开发者的app能运行的Android版本不是由SDK决定的,是由每一个项目的minSDK决定的。SDK都是向下兼容的。SDK在不断改进中,新的SDK会提供更强大开发工具,而且用4.0的SDK编译的2.1的apk的执行效率会比用2.1的SDK编译的更高。
至于每个app应该用什么minSDK ,应该根据应用具体的API来,如果app没有用到1.6以上SDK新提供的API,那么用1.6会在提供相同体验下反而会比2.1兼容更多机型.

附谷歌原版建议:
In order to provide the best user experience on the latest devices, we recommend that you use the latest platform version as your build target. You'll still be able to run your app on older versions, but you must build against the latest version in order to use new features when running on devices with the latest version of Android.To get started, download the latest Android version, plus the lowest version you plan to support (we recommend Android 2.2 for your lowest version).

⑼ 为什么在android源码下编译的可执行程序在别的android版本下不能运行

你需要设置程序的向上兼容、向下兼容版本。。。在AndroidMainfest.xml里设置
比如你用api17(android4.2)编译出来的程序在没设置向下兼容版本的情况下,就不能兼容api8(android2.2)的版本。
在AndroidMainfest里加上这个:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

⑽ android studio新建工程时怎么设置编译版本

安装Android Studio的准备工作 1.下载好JDK 去官网上找一个下载下来 2.安装JDK.并配置环境变量.安装过程可以一直下一步,无脑操作 3.下载Android Studio的安装包 去官网上找一个,下载下来 (jdk的环境变量一定要配置) 准备工作完成之后,就可以开始我们的安装了 1.安装Android studio也是无脑操作,一直点下一步。直到安装结束 2.安装好之后,我们要新建我们的项目。重点从这里开始 点击 New Project会出现.我们设置好名称,也可以无脑操作,一直点击next,直至结束,不过这个过程需要我们耐心的等待。(时间有点漫长)。 然后我们就会进入我们的开发界面。点击图片中红圈的图标(SDK manager)会出现下图 这个步骤是安装Android的sdk,推荐,Android1.6~Android4.4.2全部安装。(这个耗费时间挺长的,请在网速良好且大量闲暇时光下安装,安装过程中可以看部电影) 安装完之后,就开始配置我们的avd(Android Virtual Device),也就是Android的虚拟环境。点击,图片中红圈的图标 点击New(Test是我配置好的) 随便设置AVD name,建议如图设置 设置完成之后,就可以点击下图的三角号编译我们的程序了。

热点内容
怎么解压qq文件 发布:2025-02-09 09:18:14 浏览:580
安卓最新怎么调灵敏度更稳 发布:2025-02-09 09:12:44 浏览:399
豌豆荚如何用安卓手机下载 发布:2025-02-09 09:11:57 浏览:212
吃鸡脚本辅助 发布:2025-02-09 09:09:29 浏览:5
sessionidpython 发布:2025-02-09 09:08:53 浏览:275
华为手机验证码和密码忘了是多少 发布:2025-02-09 08:53:53 浏览:798
逆战笔记哪个配置好玩 发布:2025-02-09 08:53:04 浏览:599
怎么打开电脑云服务器 发布:2025-02-09 08:36:01 浏览:219
日元对人民币算法 发布:2025-02-09 08:35:52 浏览:39
安卓手机微信语音怎么不能转文 发布:2025-02-09 08:25:30 浏览:922