編譯安卓修改設備信息
㈠ ROM製作工具如何製作手機刷機包
具體步驟如下:
㈡ android targetsdkversion怎麼改
當你發布一個應用之後,(取決於具體的發布時間)可能沒過幾個月 Android 系統就發布了一個新版本。這對你的應用意味著什麼,所有東西都不能用了? 別擔心,向前兼容是 Android 非常關注的事情。用戶在升級到新版 Android 的時候,用以前版本的 SDK 構建的現有應用應該不會出問題。這就是 compileSdkVersion, minSdkVersion 和 targetSdkVersion 的作用:他們分別控制可以使用哪些 API ,要求的 API 級別是什麼,以及應用的兼容模式。 compileSdkVersion compileSdkVersion 告訴 Gradle 用哪個 Android SDK 版本編譯你的應用。使用任何新添加的 API 就需要使用對應 Level 的 Android SDK。 需要強調的是修改 compileSdkVersion 不會改變運行時的行為。當你修改了 compileSdkVersion 的時候,可能會出現新的編譯警告、編譯錯誤,但新的 compileSdkVersion 不會被包含到 APK 中:它純粹只是在編譯的時候使用。(你真的應該修復這些警告,他們的出現一定是有原因的) 因此我們強烈推薦總是使用最新的 SDK 進行編譯。在現有代碼上使用新的編譯檢查可以獲得很多好處,避免新棄用的 API ,並且為使用新的 API 做好准備。 注意,如果使用 Support Library , 那麼使用最新發布的 Support Library 就需要使用最新的 SDK 編譯。例如,要使用 23.1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 23 (大版本號要一致!)。通常,新版的 Support Library 隨著新的系統版本而發布,它為系統新增加的 API 和新特性提供兼容性支持。 minSdkVersion 如果 compileSdkVersion 設置為可用的最新 API,那麼 minSdkVersion 則是應用可以運行的最低要求。minSdkVersion 是 Google Play 商店用來判斷用戶設備是否可以安裝某個應用的標志之一。 在開發時 minSdkVersion 也起到一個重要角色:lint 默認會在項目中運行,它在你使用了高於 minSdkVersion 的 API 時會警告你,幫你避免調用不存在的 API 的運行時問題。如果只在較高版本的系統上才使用某些 API,通常使用運行時檢查系統版本的方式解決。 請記住,你所使用的庫,如 Support Library 或 Google Play services, 可能有他們自己的 minSdkVersion 。你的應用設置的 minSdkVersion 必需大於等於這些庫的 minSdkVersion 。例如有三個庫,它們的 minSdkVersion 分別是 4, 7 和 9 ,那麼你的 minSdkVersion 必需至少是 9 才能使用它們。在少數情況下,你仍然想用一個比你應用的 minSdkVersion 還高的庫(處理所有的邊緣情況,確保它只在較新的平台上使用),你可以使用 tools:overrideLibrary 標記,但請做徹底的測試! 當你決定使用什麼 minSdkVersion 時候,你應該參考當前的 Android 分布統計,它顯示了最近 7 天所有訪問 Google Play 的設備信息。他們就是你把應用發布到 Google Play 時的潛在用戶。最終這是一個商業決策問題,取決於為了支持額外 3% 的設備,確保最佳體驗而付出的開發和測試成本是否值得。 當然,如果某個新的 API 是你整個應用的關鍵,那麼確定 minSdkVersion 的值就比較容易了。不過要記得 14 億設備中的 0.7% 也是個不小的數字。 targetSdkVersion 三個版本號中最有趣的就是 targetSdkVersion 了。 targetSdkVersion 是 Android 提供向前兼容的主要依據,在應用的 targetSdkVersion 沒有更新之前系統不會應用最新的行為變化。這允許你在適應新的行為變化之前就可以使用新的 API (因為你已經更新了 compileSdkVersion 不是嗎?)。 targetSdkVersion 所暗示的許多行為變化都記錄在 VERSION_CODES 文檔中了,但是所有恐怖的細節也都列在每次發布的平台亮點中了,在這個 API Level 表中可以方便地找到相應的鏈接。 例如,Android 6.0 變化文檔中談了 target 為 API 23 時會如何把你的應用轉換到運行時許可權模型上,Android 4.4 行為變化闡述了 target 為 API 19 及以上時使用 set() 和 setRepeating() 設置 alarm 會有怎樣的行為變化。 由於某些行為的變化對用戶是非常明顯的(棄用的 menu 按鈕,運行時許可權等),所以將 target 更新為最新的 SDK 是所有應用都應該優先處理的事情。但這不意味著你一定要使用所有新引入的功能,也不意味著你可以不做任何測試就盲目地更新 targetSdkVersion ,請一定在更新 targetSdkVersion 之前做測試!你的用戶會感謝你的。 Gradle 和 SDK 版本 所以設置正確的 compileSdkVersion, minSdkVersion 和 targetSdkVersion 很重要。如你所想, Gradle 和 Android Studio 都在構建系統中集成了它們。在你的模塊的 build.gradle 文件中(也可以在 Android Studio 的項目結構選項中)設置: android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "com.example.checkyourtargetsdk" minSdkVersion 7 targetSdkVersion 23 versionCode 1 versionName 「1.0」 } } 編譯時用到的 compileSdkVersion 是和構建工具版本一起設置的 Android 設置之一。其他兩個稍有不同,他們在構建變體(build variant)的那裡聲明。defaultConfig 是所有構建變體的基礎,也是設置這些默認值的地方。你可以想像在一個更復雜的系統中,應用的某些版本可能會有不同的 minSdkVersion 。 minSdkVersion 和 targetSdkVersion 與 compileSdkVersion 的另一個不同之處是它們會被包含進最終的 APK 文件中,如果你查看生成的 AndroidManifest.xml 文件,你會看到類似下面這樣的標簽: <uses-sdk android:targetSdkVersion="23" android:minSdkVersion="7" /> 如果你在 manifest 文件中手工設置,你會發現 Gradle 在構建時會忽略它們(盡管其它構建系統可能會明確依賴它們)。 綜合來看 如果你按照上面示例那樣配置,你會發現這三個值的關系是: minSdkVersion <= targetSdkVersion <= compileSdkVersion 這種直覺是合理的,如果 compileSdkVersion 是你的最大值,minSdkVersion 是最小值,那麼最大值必需至少和最小值一樣大且 target 必需在二者之間。 理想上,在穩定狀態下三者的關系應該更像這樣: minSdkVersion (lowest possible) <= targetSdkVersion == compileSdkVersion (latest SDK) 用較低的 minSdkVersion 來覆蓋最大的人群,用最新的 SDK 設置 target 和 compile 來獲得最好的外觀和行為。#BuildBetterApps 關於本文的內容您可以參與我們 Google+ 帖子上的討論,關注我們的 Android Development Patterns 信息流獲得更多信息。
㈢ 如何定製android源碼的編譯選項
現僅就工作遇到的問題做個總結。所用硬體平台為amlogic stvm3。---------------------------------------------------------------------------關於版本號:文件build/core/version_defaults.mk用來檢查一些跟版本相關的變數是否定義;如果未定義,則使用默認值。這些變數包括 PLATFORM_VERSION # 如 2.2.5 PLATFORM_SDK_VERSION # 8, 對應2.2.5 PLATFORM_VERSION_CODENAME # REL,即發行版 DEFAULT_APP_TARGET_SDK # 同SDK_VERSION或VERSION_CODENAME BUILD_ID # 默認為UNKNOWN BUILD_NUMBER # 默認eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 version_defaults.mk首先包含進build_id.mk。用戶應當配置build_id.mk,而不應該改動version_defaults.mk文件。然後檢查上述變數,如未定義則賦值默認值。---------------------------------------------------------------------------關於調試功能(adb)的開啟編譯android源碼之前總是要先運行build/envsetup.sh,以初始化一些常用命令(實際上是bash的函數,如add_lunch_combo)。其中也從以下文件中引入了一些編譯設置: device/${CHIPSET_VENDOR}/vendorsetup.sh我們這里使用的CHIPSET_VENDOR為amlogic。比如我們有文件device/amlogic/vendorsetup.sh,內容為"產品名-編譯類型(flavor)"列表(稱為combo),如下: add_lunch_combo m1ref-eng add_lunch_combo m1ref-user add_lunch_combo m2ref-eng add_lunch_combo m2ref-user add_lunch_combo stvm3-eng add_lunch_combo stvm3-user其中,m1ref和stvm3是產品名(作前綴),後面為編譯類型。除此前綴外可選的combo值有: eng, user, userdebug, tests。(參考文件build/core/main.mk中對於變數TARGET_BUILD_VARIANT的篩查條件)我們可以修改vendorsetup.sh文件,來改變為特定設備編譯的結果。以下是各個編譯類型的特點: eng: 工程模式,用於平台級的調試,是默認的編譯類型。
㈣ android 所謂的修改框架是指什麼
首先,修改框架不是做應用程序員的事,一般是一些手機廠商需要定製自己的android系統才去修改框架,例如修改一些啟動界面,替換一些圖片,修改底層庫等,修改完成後再自行編譯,便成了自己的定製版android系統。如小米手機,魅族手機需要自己定製的android系統,
其次,Android的開發分為三個類型:
a,移植開發移動設備系統;
b,android系統級開發
c,android應用程序開發。
1、移植開發移動設備系統: 移植開發移動設備涉及到linux內核(包括其驅動);主要是一個手機製造商
2、Android系統級開發,指的是擴展android的框架或者是修改bug,這方面比較少,
除非有些開發移動設備的廠商,比如做gps,可以往裡面加入一些自己的特定系統東西,這可能導致一些不兼容。當然也可能是簡單的修復bug,android系統級開發涉及到C/C++庫的開發及給上層java框架;其產品是不同的android應用程序,
3、開發應用程序,這應該是比較主流的開發,也就是給android系統寫應用程序。android應用程序開發就是調用java的框架寫應用程序,簡單的從上到下.
adroid開發就分為居於sdk開發和源代碼開發。
1、SDK開發,主要是應用程序開發,就是我們平常的android 應用開發
2、源代碼的開發,主要在獲取所有源代碼的基礎上進行,可以開發Android應用程序,進
行系統移植或者開發Android系統本身而SDK源碼的修改,也就是我們在創建項目時需導入那個android.jar 包不再是android官方下載SDK文件夾下各個平台中那個andorid.jar
包了,而是得導入自己修改後的android.jar包,這就是所謂的SDK源碼修改,但是一般的應用開發是完全沒有必要去修改SDK源碼的,因為它需要相應的硬體支持。
㈤ 求在安卓設備上運行的Android程序編譯器,可以是可視化編程,最好編程語言是C ,編譯器佔用資源
如你所願,終端模擬器,完全符合你的要求,不過我的手機是系統自帶的,名稱就叫終端模擬器,你可以網路搜搜下。
㈥ 如何定製android源碼的編譯選項 後期安裝
Android編譯過程比較長,配置起來也很麻煩。現僅就工作遇到的問題做個總結。所用硬體平台為amlogic stvm3。---------------------------------------------------------------------------關於版本號:文件build/core/version_defaults.mk用來檢查一些跟版本相關的變數是否定義;如果未定義,則使用默認值。這些變數包括 PLATFORM_VERSION # 如 2.2.5 PLATFORM_SDK_VERSION # 8, 對應2.2.5 PLATFORM_VERSION_CODENAME # REL,即發行版 DEFAULT_APP_TARGET_SDK # 同SDK_VERSION或VERSION_CODENAME BUILD_ID # 默認為UNKNOWN BUILD_NUMBER # 默認eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 version_defaults.mk首先包含進build_id.mk。用戶應當配置build_id.mk,而不應該改動version_defaults.mk文件。然後檢查上述變數,如未定義則賦值默認值。---------------------------------------------------------------------------關於調試功能(adb)的開啟編譯android源碼之前總是要先運行build/envsetup.sh,以初始化一些常用命令(實際上是bash的函數,如add_lunch_combo)。其中也從以下文件中引入了一些編譯設置: device/${CHIPSET_VENDOR}/vendorsetup.sh我們這里使用的CHIPSET_VENDOR為amlogic。比如我們有文件device/amlogic/vendorsetup.sh,內容為"產品名-編譯類型(flavor)"列表(稱為combo),如下: add_lunch_combo m1ref-eng add_lunch_combo m1ref-user add_lunch_combo m2ref-eng add_lunch_combo m2ref-user add_lunch_combo stvm3-eng add_lunch_combo stvm3-user其中,m1ref和stvm3是產品名(作前綴),後面為編譯類型。除此前綴外可選的combo值有: eng, user, userdebug, tests。(參考文件build/core/main.mk中對於變數TARGET_BUILD_VARIANT的篩查條件)我們可以修改vendorsetup.sh文件,來改變為特定設備編譯的結果。以下是各個編譯類型的特點: eng: 工程模式,用於平台級的調試,是默認的編譯類型。 待安裝的模塊tag有: eng, debug, user, development. 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性: ro.secure=0, ro.deuggable=1, ro.kernel.android.checkjni=1 adbd默認開啟,adb以root身份運行。 user: 即最終用戶版; 待安裝的應用tag有: user 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性有ro.secure=1, ro.debuggable=0; 默認關閉adbd服務(但可通過應用settings來打開,且adb以shell身份運行); userdebug: 與user類似,除了: 支持有限的調試功能; 待安裝的應用tag有:debug;
㈦ AndroidTv開發怎麼把自己修改的代碼寫進系統
要看你的目的是什麼了.
* 如果你是需要替換原來的 launcher 應用,那麼首先你需要滿足以下兩個條件:
你有該TV設備的 adb shell root 許可權
你持有該TV設備的系統簽名
以上兩個條件滿足了的話,以下是步驟:
編譯你的代碼,應用包名必須和原來一樣.編譯完後用系統簽名文件進行簽名.
adb shell 進入 /system 分區(必須有root許可權才能進入),在
以下兩個目錄(早期版本只有第一個目錄):
/system/app
/system/priv-app/
找到你要替換的那個應用的位置.在 adb shell 下可以用 pm 這個內置命令方便的根據包名找apk位置,不展開,如需要請追問.
/system分區默認是只讀的,必須使用 adb remount 命令,或者在 adb shell 下使用 mount 命令,將此分區重新掛載為可讀分區,才能寫入.具體不展開,如果需要知道命令的具體格式可以再追問.
用 adb push 命令將原有的那個應用替換為你編譯的那個應用,或者先將你編譯的 apk 拷貝進設備,再在 adb shell 下用 cp 命令替換原應用.兩種方法都需要root許可權.
系統會實時監視 /system/app 和 /system/priv-app/ 這兩個目錄的變化,所以在你替換了原有位置的那個應用後,系統立刻就會自動識別這個應用. 一般應用推進去立刻就可以使用了. launcher這類特殊的應用有可能會造成系統異常,不過重啟一次肯定也就可以運行了(前提是你自己的修改沒有問題).
之所以需要系統簽名,是因為系統會對系統應用的簽名和系統自身簽名比對,不一樣的話是無法運行的.
* 如果你的目的僅僅是為了研究代碼,並不需要替換原來的launcher,那就簡單啦.步驟:
把你修改的launcher的應用包名改一下,不要和原來系統的那個包名一樣就行.
如果你可以對這台TV設備連接adb調試,那就直接用eclipse編譯並在此設備上運行就可以了.adb是可以由wifi無線連接的,一般電視開發都是用的adb無線連接.
如果你無法連接adb調試,那就弄一個自己的apk簽名,然後用此簽名打包apk,然後拷貝到這台TV設備上進行安裝就可以了.
這里用到簽名是因為調試簽名不能用作apk安裝,必須是正式簽名.
以上.
㈧ 如何在Android設備中用NDK編譯SQLite並且對SQLite進行操作
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, python)都使用了 SQLiteSQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。SQLite 通過利用虛擬機和虛擬資料庫引擎
(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
1. Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。
2. 資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。
3. Android 提供了 SQLiteOpenHelper 創建一個資料庫,只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
4. SQLiteOpenHelper 的子類,至少需要實現三個方法:
構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2.onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3.onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
㈨ 自己可以編譯安卓源碼嗎
用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」
其中[email protected]為你自己的郵箱.
簡要說明
android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.
源碼下載
由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)
repo工具下載及安裝
通過執行以下命令實現repo工具的下載和安裝
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:
我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:
這里寫圖片描述
執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.
錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:
通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.
結束吧
到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.
㈩ 在電腦上為android設備編寫Python腳本的好用編譯器
Android模擬器上安裝Python解釋器
我了解的有兩種方法可以下載並安裝Android軟體。一個是通過Android直接訪問網路,下載安裝;另一個是通過PC下載,然後通過模擬器工具ADB安裝。這里介紹第二種方式。
下載Python for Android解釋器;
解釋器框架,點擊下載:http://code.google.com/p/android-scripting/downloads/detail?name=sl4a_r3.apk&can=2&q=
python解釋器,點擊下載:http://code.google.com/p/android-scripting/downloads/detail?name=PythonForAndroid_r4.apk&can=2&q=
安裝Python for Android解釋器;
設置環境變數,加入Android模擬器工具 adb.exe所在的路徑。
打開cmd運行界面,輸入adb。你會看到如下信息:
輸入adb device。
輸入adb install –s <解釋器框架所在路徑>;比如adb install –s c:/sl4a_r3.apk。安裝完畢後,在你的android中就會出現SL4A圖標。
同上的步驟,再把python解釋器安裝上。比如adb install –s c:/PythonForAndroid_r4.apk。安裝完畢後,在你的Android中就會出現Python for Android圖標。
在Android中點擊Python for Android。進去後,有一個install的button,點擊安裝。這個程序會通過網路,下載到所需要的所有程序包。
測試Python for Android解釋器;
當一切安裝妥當後,在Android中點擊SL4A圖標。
在出現的列表中點擊hello_world.py(或者其他的腳本);界面左上角會出現一個小的SL4A的圖標,同時界面也會出現「hello world!」
如果你的Android運行結果如上所述,證明你的安裝成功了,繼續下一步。
Step4 : 編寫可在Android模擬器運行的Python Script並執行
編寫Python Script For Android;
傳遞Python Script到Android模擬器;
假設你編寫的python腳本存放在c:/Hello_world.py中
打開cmd界面,運行adb push <local> <remote>;例如,adb push c:/Hello_world.py /sdcard/sl4a/scripts/Hello_wold.py
在Android模擬器上運行Python Script;
在Android上運行腳本,你會看到「Hello world!」出現在屏幕上。 (如同step3的結果)
如果你的運行結果如上所述,那麼恭喜你,你已成功上傳並運行了你的第一個android python腳本,繼續下一步。