如果沒有真正開發板,又想深入到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目錄下。
『貳』 Android 集成三方SDK編譯時classes.jar文件沖突
這幾天的任務是將mapbox的工程合到程序中去,但是合並過程卻出現了問題
合並方法:在app的build.gradle中添加
dependencies {
compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:0.7.4@aar'){
transitive=true
}
}
但是合並後會報錯:
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
這個錯誤是由於jar包沖突,解決方法如下:
方法一:找到沖突包,將沖突包刪除,一般沖突包為'com.android.support:appcompat-v7:22.2.0'或者'com.android.support:support-v4:22.2.0',但是我刪除沖突包後,依然報錯,於是使用方法二
方法二:因為我的沖突包是'com.android.support:support-v4:22.2.0',所以找到項目根目錄-build-intermediates-dex-cache-cache.xml文件,將其中跟v4有關的全部刪除,然後clean project,然後將compile改為provided如下:
dependencies {
compile 'com.vividsolutions:jts:1.13'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.jakewharton:disklrucache:2.0.2'
provided 'com.android.support:support-v4:21.0.0'
}
『叄』 博通編譯SDK時候怎麼指定工具鏈
LINUX 的內核編譯 1.編譯內核指的時通常的內核 2.應為內核可以將驅動和功能模塊動態的載入內核,所以在需要的時間把功能模塊 動態載入,所以就有了,內核模塊的編譯
度平移法:方法如圖:(a)測硬幣直徑; (b)測乒
『肆』 如何應用sdk開發包和通信協議開發上位機軟體
利用裡面的函數開發起來,自己組織開發
『伍』 SDK的編譯命令
直接運行make或make install
里邊有source和tools目錄,里邊有沒有新生成的文件?
『陸』 如何編譯hi3520d sdk
第一章 Hi3520D_SDK_Vx.x.x.x版本升級操作說明
如果您是首次安裝本SDK,請直接參看第2章。
第二章 首次安裝SDK
1、hi3520D SDK包位置
在"hi3520D_V100R001***/01.software/board"目錄下,您可以看到一個 hi3520D_SDK_Vx.x.x.x.tgz 的文件,
該文件就是hi3520D的軟體開發包。
2、解壓縮SDK包
在linux伺服器上(或者一台裝有linux的PC上,主流的linux發行版本均可以),使用命令:tar -zxf hi3520D_SDK_Vx.x.x.x.tgz ,
解壓縮該文件,可以得到一個hi3520D_SDK_Vx.x.x.x目錄。
3、展開SDK包內容
返回hi3520D_SDK_Vx.x.x.x目錄,運行./sdk.unpack(請用root或sudo許可權執行)將會展開SDK包打包壓縮存放的內容,請按照提示完成操作。
如果您需要通過WINDOWS操作系統中轉拷貝SDK包,請先運行./sdk.cleanup,收起SDK包的內容,拷貝到新的目錄後再展開。
4、在linux伺服器上安裝交叉編譯器
1)安裝uclibc交叉編譯器(注意,需要有sudo許可權或者root許可權):
進入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目錄,運行chmod +x cross.install,然後運行./cross.install即可。
2) 安裝glibc交叉編譯器(注意,需要有sudo許可權或者root許可權,暫時不支持glibc版本):
進入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目錄,運行chmod +x cross.install,然後運行./cross.install即可。
3) 執行source /etc/profile, 安裝交叉編譯器的腳本配置的環境變數就可以生效了,或者請重新登陸也可。
5、編譯osdrv
參見osdrv目錄下readme
6、SDK目錄介紹
hi3520D_SDK_Vx.x.x.x 目錄結構如下:
|-- sdk.cleanup # SDK清理腳本
|-- sdk.unpack # SDK展開腳本
|-- osdrv # 存放操作系統及相關驅動的目錄
| |-- busybox # busybox源代碼
| |-- drv # drv源代碼
| |-- kernel # linux內核源代碼
| |-- pub # 編譯好的鏡像、工具、drv驅動等
| |-- rootfs_scripts # rootfs源代碼
| |-- toolchain # 交叉編譯器
| |-- tools # linux工具源代碼
| |-- uboot # uboot源代碼
| `-- Makefile # osdrv Makefile
|-- package # 存放SDK各種壓縮包的目錄
| |-- osdrv.tgz # linux內核/uboot/rootfs/tools源碼壓縮包
| |-- mpp.tgz # 媒體處理平台軟體壓縮包
| `-- image # 可供FLASH燒寫的映像文件,如內核、根文件系統
|-- scripts # 存放shell腳本的目錄
|-- mpp # 存放媒體處理平台的目錄
|-- component # 組件源代碼
|-- extdrv # 板級外圍驅動源代碼
|-- include # 對外頭文件
|-- ko # 內核模塊
|-- lib # release版本庫以及音頻庫
|-- tools # 媒體處理相關工具
`-- sample # 樣例源代碼
第三章、安裝、升級hi3520DDEMO板開發開發環境
# 如果您使用的hi3520D的DEMO板,可以按照以下步驟燒寫u-boot,內核以及文件系統,以下步驟均使用網路來更新。
# 通常,您拿到的單板中已經有u-boot,如果沒有的話,就需要使用模擬器進行燒寫。
# 更詳細的操作步驟及說明,請參見01.software\board\documents目錄下的《Linux開發環境用戶指南》。
# 以下操作假設您的單板上已經有u-boot,使用網口燒寫uboot、kernel及rootfs到Flash中。
# Demo單板默認為從SPI Flahs啟動。
1、配置tftp伺服器
# 可以使用任意的tftp伺服器,將package/image_uclibc(或image_glibc)下的相關文件拷貝到tftp伺服器目錄下。
2、參數配置
# 單板上電後,敲任意鍵進入u-boot。設置serverip(即tftp伺服器的ip)、ipaddr(單板ip)和ethaddr(單板的MAC地址)。
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx
setenv ethaddr xx:xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping serverip,確保網路暢通。
3、燒寫映像文件到SPI Flash
以16M SPI Flash為例。
1)地址空間說明
| 1M | 4M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
以下的操作均基於圖示的地址空間分配,您也可以根據實際情況進行調整。
2)燒寫u-boot
sf probe 0
mw.b 82000000 ff 100000
tftp 0x82000000 u-boot-hi3520D.bin
sf probe 0
sf erase 0 100000
sf write 82000000 0 100000
reset
3)燒寫內核
mw.b 82000000 ff 400000
tftp 82000000 uImage_3520d
sf probe 0
sf erase 100000 400000
sf write 82000000 100000 400000
4)燒寫文件系統
mw.b 82000000 ff b00000
tftp 0x82000000 rootfs_3520d_64k.jffs2
sf erase 500000 b00000
sf write 82000000 500000 b00000
5)設置啟動參數
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
sa
4、啟動新系統
reset # 重啟進入新系統。
第四章、開發前環境准備
1、管腳復用
與媒體業務相關的管腳復用都在mpp/ko_hi3520D目錄下的sh腳本中配置,如果與實際情況不符請直接修改,此腳本被load3520D調用,在載入mpp內核模塊之前被執行;
mpp之外的其他管腳復用統一在uboot中配置,詳細說明請參見《U-boot移植應用開發指南》。
第五章、使用SDK和DEMO板進行開發
1、開啟Linux下的網路
# 設置網路
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx;
ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;
route add default gw xx.xx.xx.xx
# 然後ping一下其他機器,如無意外,網路將能正常工作。
2、使用NFS文件系統進行開發
# 在開發階段,推薦使用NFS作為開發環境,可以省去重新製作和燒寫根文件系統的工作。
# 掛載NFS文件系統的操作命令:
mount -t nfs -o nolock -o tcp xx.xx.xx.xx:/your-nfs-path /mnt
# 然後就可以在/mnt目錄下訪問伺服器上的文件,並進行開發工作。
3、開啟telnet服務
# 網路正常後,運行命令 telnetd& 就可以啟動單板telnet服務,然後才能使用telnet登錄到單板。
4、運行MPP業務
# 在單板linux系統下,進入mpp/ko目錄,載入KO
cd mpp/ko
./load3520D -i
# 進入各sample目錄下執行相應樣常式序(sample需要先在伺服器上成功編譯過)
cd mpp/sample/vio
./sample_vio 0
第六章 地址空間分配與使用
1、DDR內存管理說明
1)所有DDR內存中,一部分由操作系統管理,稱為OS內存;另一部分由MMZ模塊管理,供媒體業務單獨使用,稱為MMZ內存。
2)OS內存起始地址為0x80000000,內存大小可通過bootargs進行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配給操作系統內存為64M,您可以根據實際情況進行調整。
3)MMZ內存由MMZ內核模塊管理(mpp/ko_hi35xx目錄下的mmz.ko),載入mmz模塊時,通過模塊參數指定其起始地址及大小,例如:
insmod mmz.ko mmz=anonymous,0,0x84000000,186M:jpeg,0,0x8fa00000,5M anony=1 || report_error
表示mmz兩塊區域,區域一的名稱為anonymous,起始地址為0x84000000,大小為186M;區域二的名稱為jpeg,起始地址為0x8fa00000,大小為5M。
您可以通過修改mpp/ko_hi35XX目錄下load3520D腳本中的mmz模塊參數,來修改其起始地址和總大小。
4)請注意MMZ內存地址范圍不能與OS內存重疊。
2、DEMO板DDR內存管理示意
1) 以容量為256MBytes的DDR內存為例,以下為根據本文檔和SDK默認配置得到的內存管理示意圖:
DDR:
-----|-------| 0x80000000 # Memory managed by OS.
64M | OS |
| |
-----|-------| 0x84000000 # Memory managed by MMZ block anonymous.
187M | MMZ |
| |
-----|-------| 0x8fa00000 # Memory managed by MMZ block jpeg.
5M | |
| |
-----|-------| 0x8ff00000 # Not used.
1M | |
| |
-----|-------| 0x90000000 # End of DDR.
注意:
(1)用戶在配置啟動參數時需要設置OS的管理內存為64M,「setenv bootargs 'mem=64M ...」。
(2)系統啟動後,配置load3520D的腳本中mmz的管理內存為191M,「insmod mmz.ko mmz=anonymous,0,0x84000000,186M:jpeg,0,0x8fa00000,5M anony=1 || report_error」。
『柒』 如何編寫一個靠譜的基於tcp協議的客戶端SDK
1、先保證ping通 2、在dos下寫入telnet ip 1433不會報錯 3、用ip連如企業管理器: 企業管理器-->右鍵SQlserver組-->新建sqlserver注冊-->下一步-->寫入遠程實例名(IP,機器名)-->下一步-->選Sqlserver登陸-->下一步-->寫入登陸名與密碼
『捌』 sdk 編譯器 之間關系
SDK,即軟體開發包,裡面一般包含有編譯器和編譯時需要的支持庫。(有時候不一定有編譯器)
Symbian平台的開發,我沒做過。VC,我們看到的界面,只是一個編輯窗口,編譯的時候,它會調用相關的編譯器,並使用某些設定的編譯參數。我猜測如下:
Symbian的軟體包里,應該帶有編譯器和相關的支持庫,並且在安裝的時候,它會修改VC的配置文件,使得其中關於Symbian的工程,調用自帶的編譯器和自設的參數來編譯程序。
『玖』 eclipse android sdk怎麼編譯
還是推薦使用Android Studio,畢竟是谷歌的親兒子,開發Android會事半功倍的。