導航:首頁 > 源碼編譯 > 安卓編譯工具鏈谷歌限制

安卓編譯工具鏈谷歌限制

發布時間:2022-09-13 06:46:52

A. 自己可以編譯安卓源碼

用最新的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內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用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源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    B. 如何解除對谷歌網的限制

    糾正一下,谷歌沒有被限制,是谷歌列出的鏈接目標被限制了。

    C. 為什麼谷歌依然可以單方面禁止使用安卓

    安卓系統是開源的,是全球程序員的共同勞動成果,為什麼總有人認為谷歌可以禁用安卓?

    安卓是基於Linux系統開發的,而Linux是一款免費的操作系統(有GNU GPL授權證約束,要求免費),任何人可以免費獲得,並參與修改,從這個角度說Linux是全球程序員的共同勞動成果沒錯,但這么說安卓就不對。

    於是谷歌決定不走蘋果的產業鏈通吃的商業模式,改學微軟的橫吃整個市場,為迅速佔領市場,手機廠商可以免費使用安卓系統。不花錢,大家自然願意用,加上谷歌不斷推出新版本消除BUG,安卓很快就打敗塞班,超越iOS,成為市場份額最大的手機操作系統。

    從這里可以看出,安卓的開源和Linux的開源有本質不同:Linux允許修改底層代碼,所以版本眾多,而安卓沒有達到這個程度,更多的是改良,即聯合手機廠商優化軟硬體,最核心的東西還是掌握在谷歌手中,所以安卓系統才會每隔一段時間推出新版本。

    D. 安卓SDK配環境 沒法連到谷歌 網上很多方式都試了(改hosts等)都沒用

    二個方法

    1.直接下開發集成環境 裡面都集成好了adt sdk都有,搜就行,很多的

    2.自己更新,去下 《自由門 》fan牆軟體 然後

    E. 谷歌限制華為,安卓系統受影響嗎

    額,國內的基本都是深度定製的,基本都用不到谷歌框架,可能沒什麼影響

    F. 華為公布的方舟編譯器到底對安卓軟體會有多大影響

    安卓7.0之後,谷歌也意識到了程序佔地方、開機慢的問題,怎麼辦?谷歌發現,人們使用一個程序,不可能用所有的功能。那麼只編譯一部分常用的是不是就效率高了呢?所以這時候其實是把JIT又拉回到安卓上來,並且安裝的時候也不用全編譯,直接裝就是了,速度當然快了。這其實就是中間層、JIT、AOT一起來,並且根據用戶的習慣,把它常用的程序的常用功能代碼解釋好了存起來,用戶再用也飛快。


    現在安卓手機的一大特色就是內存越來越大,6GB都是老人機的配置了。這除了程序大以外還有安卓的程序運行產生垃圾多有關系。那麼清理垃圾呢?則需要暫停程序,也就會頓一下,即所謂的「卡」。華為方舟編譯器則是利用程序多線程運行的特點。打個比方,您現在正在用的「中關村在線」這個APP用了AB兩個線程,在華為的P30手機中,那麼線程A運行的時候,B在清理垃圾,然後A線程清理垃圾的時候B線程在運行,程序運行不中斷,垃圾處理不停,做到了又連貫、又節約系統資源。

    G. 安卓系統怎麼控制對linux的驅動程序,比如對I/O口的控制

    安卓系統貌似刪除了部分遵從GPL協議的linux驅動,自己實現的很多底層控制,我這個了解不多,不好意思,幫不到你了

    H. 如何制定android交叉編譯工具鏈

    經常搞嵌入式開發的朋友對於交叉編譯環境應該並不陌生,說白了,就是一組運行在x86 PC機的編譯工具,可以讓你在PC機上編譯出目標平台(例如ARM)可識別的二進制文件。Android平台也提供了這樣的交叉編譯工具鏈,就放在Android的NDK開發包的toolchains目錄下,因此,我們的Makefile文件中,只需給出相應的編譯工具即可。
    廢話就先說到這,直接上例子,我們目標是把下面這個math.c文件編譯成一個靜態庫文件:
    #include <stdio.h>
    int add( int a , int b ) {
    return a+b;
    }
    你需要編寫一個Makefile文件,這里假設你的Android ndk被安裝在 /opt/android/ndk 目錄下,當然,你可以根據自己的實際情況修改Makefile中相關路徑的定義,Makefile文件示例如下:
    # Makefile Written by ticktick
    # Show how to cross-compile c/c++ code for android platform
    .PHONY: clean
    NDKROOT=/opt/android/ndk
    PLATFORM=$(NDKROOT)/platforms/android-14/arch-arm
    CROSS_COMPILE=$(NDKROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-
    CC=$(CROSS_COMPILE)gcc
    AR=$(CROSS_COMPILE)ar
    LD=$(CROSS_COMPILE)ld
    CFLAGS = -I$(PWD) -I$(PLATFORM)/usr/include -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp
    LDFLAGS =
    TARGET = libmath.a
    SRCS = $(wildcard *.c)
    OBJS = $(SRCS:.c=.o)
    all: $(OBJS)
    $(AR) -rc $(TARGET) $(OBJS)
    clean:
    rm -f *.o *.a *.so
    這里不講Makefile文件的基本原理,只說明一下針對Android環境的Makefile文件編寫的注意事項。
    (1) CROSS_COMPILE
    必須正確給出Android NDK編譯工具鏈的路徑,當在目錄中執行make命令的時候,編譯系統會根據 CROSS_COMPILE 前綴尋找對應的編譯命令。
    (2) -I$(PLATFORM)/usr/include
    由於Android平台沒有使用傳統的c語言庫libc,而是自己編寫了一套更加高效更適合嵌入式平台的c語言庫,所以系統頭文件目錄不能再使用默認的路徑,必須直到Android平台的頭文件目錄
    (3) -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp
    這些參數的意義網上基本上都有介紹,我就不一一解釋了,並不都是必須添加的,但比較常用。
    編譯方法:
    寫好makefile文件,並且保存之後,就可以直接在當前目錄下執行make命令,編譯完成後,當前目錄下會生成 libmath.a ,即可直接拿到Android的jni工程中和使用了。

    I. 安卓系統不支持谷歌框架

    支持的,安卓系統是谷歌公司開發的客戶端操作系統,谷歌框架可以在安卓系統中運行

    J. 安卓11無法訪問data文件限制

    因谷歌許可權限制原因,將Android/data目錄進行了隱藏,第三方應用無法訪問,所以通過文件管理不能查看該目錄下的文件。後期我們會推出新的文件管理版本,升級後訪問這個目錄時,會跳轉到谷歌原生文件管理界面查看其中內容,請後續留意文件管理版本升級提醒。

    閱讀全文

    與安卓編譯工具鏈谷歌限制相關的資料

    熱點內容
    卡爾曼濾波演算法書籍 瀏覽:761
    安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:837
    安卓怎麼下載60秒生存 瀏覽:796
    外向式文件夾 瀏覽:229
    dospdf 瀏覽:425
    怎麼修改騰訊雲伺服器ip 瀏覽:380
    pdftoeps 瀏覽:486
    為什麼鴻蒙那麼像安卓 瀏覽:730
    安卓手機怎麼拍自媒體視頻 瀏覽:180
    單片機各個中斷的初始化 瀏覽:718
    python怎麼集合元素 瀏覽:475
    python逐條解讀 瀏覽:827
    基於單片機的濕度控制 瀏覽:493
    ios如何使用安卓的帳號 瀏覽:877
    程序員公園采訪 瀏覽:805
    程序員實戰教程要多長時間 瀏覽:968
    企業數據加密技巧 瀏覽:129
    租雲伺服器開發 瀏覽:807
    程序員告白媽媽不同意 瀏覽:330
    攻城掠地怎麼查看伺服器 瀏覽:595