编译sdk版本
㈠ android 中编译版本,最小版本,目标版本都有什么区别
SDK 最低版本
以最低版本设置值为标准,操作系统会拒绝将应用安装在系统版本低于标准的设备上。
SDK 目标版本
目标版本的设定值告知Android:应用是为哪个API级别设计的。大多数情况下,目标版本即最新发布的Android版本。
SDK 编译版本
SDK最低版本和目标版本会通知给操作系统,而SDK编译版本只是你和编译器之间的私有信息。
Android的特色功能是通过SDK中的类和方法展现的。在编译代码时, SDK编译版本(即编译目标) 指定具体要使用的系统版本。 Android Studio在寻找类包导入语句中的类和方法时,编译目标确定具体的基准系统版本。
㈡ 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).
㈢ 如何在linux下编译windows版android sdk-czxttkl
1.下好Android源码
2.在Terminal中输入:$ sudo apt-get install mingw32
tofrodos
mingw32是一个交叉编译器,
tofrodos用于unix和dos之间命令转换
映像中交叉编译器的定义是能跨平台编译某些代码所需要的东西.
其他的还得仔细研究
3. 先编译好默认的android平台和linux版的sdk,在Terminal中跳转到android源码目录,输入:
$
. build/envsetup.sh
$ lunch full-eng
$
make
$
. build/envsetup.sh
$ lunch sdk-eng
$ make
sdk
若不先编译android默认的平台和linux版的sdk,很可能产生不可预知的错误,例如:
Error:
Install:
out/host/windows-x86/bin/sdklauncher.exe
make[1]: *** No rule to make
target out/host/linux-x86/bin/emugen,
needed
by
`out/host/windows-x86/obj/STATIC_LIBRARIES/
lib_renderControl_dec_intermediates/renderControl_dec.cpp'.
Stop.
make[1]: Leaving directory
make: *** [winsdk-tools] Error
2
4.正式开始编译windows版的android
sdk。在Terminal中跳转到android源码目录,输入:
$ . build/envsetup.sh
$ lunch
sdk-eng
$
make win_sdk
5.最后生成的sdk位于:
ANDROID_SOURCE_ROOT/out/host/windows/sdk
㈣ React Native 第三方库SDK版本不兼容
1.在RN项目中,经常会引入很多第三方插件库,如果只是单纯的JS库,一般比较好解决,但当引入一些原生插件库时,需要非常谨慎。
android工程经常因为SDK编译版本不一致导致报错。
下图所示错误初步以为是有第三方库使用28compileSdk,与主工程中告喊27不兼容导致,尝试使用
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}
对特定库进行强制依赖,通过编译,但在打包时始终会提示如下./gradle/cache中未找到两个资源。只得将主工程改为28进行尝试。
在RN项目的主工程Android目录下的build.gradle进行知友胡如下配置,可使的一些比较完善的库读取主工程中的配置信息,从而保证第三方库与主工程中compileSdkVersion等信息一致。
一些第三方库的老旧版本,在内部写死了搭拦配置信息,如下图所示,则需要我们手动更改与主工程配置保持一致
一些比较完善的第三方库,则获取主工程android/build.gradle文件里的ext配置信息,切记检查主工程中的配置无误。
使用gradlew app:dependencies 命令查看项目依赖结构时,发现只有react-native-pdf的依赖中引入了com.github.barteksc:android-pdf-viewer:3.1.0-beta.1,此中依赖于support-v4,故用 exclude mole:'support-v4'命令排除依赖,然而并未解决问题
对于无法排除的第三方依赖库问题,进行全部屏蔽,逐一放开测试,最终定位于react-native-device-info库中,该版本implementation了‘com.google.android.gms:play-services-gcm',导致。在主工程的build.gradle中配置如下解决。
ext{
googlePlayServicesVersion ="15.0.1"
}
RN项目通常固定package.json中的依赖版本,故该库过于老旧导致,github上最新的版本build.gradle如下
㈤ 如何编译android sdk
如果没有真正开发板,又想深入到android
framework里,或kernel里的话,就只能用android
的emulator了。
但是我们下载的android
SDK没有源代码,我们没办法跟踪修改framework和kernel里的东西。
所以有了想尝试自己从头生成SDK的想法。
1.
首先下载编译android所有source
code.
具体步骤这里不再赘述,参考ht
tp:/
/source.and
roid.c
om/download
cd
mydroid
repo
init
-u
git://android.git.kernel.org/platform/manifest.git
repo
sync
一点小提示:
有时候google的android服务器老是断,总不能让我们守在电脑旁边一直手工重新repo
sync吧,这可是需要N个小时才能下载完的啊。
我们就写个小脚本让电脑自动repo
sync,直到下载成功为止:
#!/bin/sh
count=0
ret=1
while
[
$ret
-ne
0
]
do
repo
sync
ret=$?
count=$((
$count
+
1))
echo
"try
$count,
ret:
$ret"
done
echo
"try
$count,
ret:
$ret"
把上面的内容复制到一个文件里tryrepo.sh
然后修改tryrepo.sh的属性,开始自动工作吧。第二点早上应该就大功告成了
chmod
a+x
tryrepo.sh
./tryrepo.sh
2.
编译android,
生成SDK
make
sdk
漫长的等待之后,SDK生成了,在目录:mydroid\out\host\linux-x86\sdk\android-sdk_eng.yanbin_linux-x86\platforms\
在linux下面可以直接运行mydroid\out\host\linux-x86\sdk\android-sdk_eng.yanbin_linux-x86\tools\android
就可以看到熟悉的android
emulator启动界面。
如果想在windows
XP下使用这个SDK和emulator,
最简单的方法是:
(1)自己下载一个最新的windows版本的android
2.0
SDK。
(2)把mydroid\out\host\linux-x86\sdk\android-sdk_eng.yanbin_linux-x86\platforms\下的东西复制到windows版SDK的platforms下。
(3)
然后把platforms下android-2.0下tools目录下的几个.exe文件复制到自己编译的SDK目录下的tools目录下。