編譯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目錄下。