導航:首頁 > 源碼編譯 > 安卓開源APP如何編譯

安卓開源APP如何編譯

發布時間:2022-11-22 07:22:49

㈠ 自己可以編譯安卓源碼

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

    ㈡ 如何通過Tesseract開源OCR引擎創建Android OCR應用

    Tesseract是遵守 Apache License 2.0協議的開源OCR引擎。這里介紹下如何在Android平台編譯Tesseract,以及如何快速創建一個簡單的OCR應用。

    要編譯Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。

    代碼獲取方式:

    git clone https://code.google.com/p/tesseract-android-tools/

    打開README,在命令行工具中執行下面的步驟:

    cd <project-directory>
    curl -O https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz
    curl -O http://leptonica.googlecode.com/files/leptonica-1.69.tar.gz
    tar -zxvf tesseract-ocr-3.02.02.tar.gz
    tar -zxvf leptonica-1.69.tar.gz
    rm -f tesseract-ocr-3.02.02.tar.gz
    rm -f leptonica-1.69.tar.gz
    mv tesseract-3.02.02 jni/com_googlecode_tesseract_android/src
    mv leptonica-1.69 jni/com_googlecode_leptonica_android/src
    ndk-build -j8
    android update project --target 1 --path .
    ant debug (release)

    注意:如果你在使用NDK r9,編譯的時候會出現錯誤:

    format not a string literal and no format arguments [-Werror=format-security]

    解決的方法就是在Application.mk中加入一行:

    APP_CFLAGS += -Wno-error=format-security

    編譯之後會生成class.jar和一些*.so。

    Android OCR Application
    創建一個Android應用,把生成的jar和so導入進來。
    創建TessOCR:

    public class TessOCR {
    private TessBaseAPI mTess;

    public TessOCR() {
    // TODO Auto-generated constructor stub
    mTess = new TessBaseAPI();
    String datapath = Environment.getExternalStorageDirectory() + "/tesseract/";
    String language = "eng";
    File dir = new File(datapath + "tessdata/");
    if (!dir.exists())
    dir.mkdirs();
    mTess.init(datapath, language);
    }

    public String getOCRResult(Bitmap bitmap) {

    mTess.setImage(bitmap);
    String result = mTess.getUTF8Text();

    return result;
    }

    public void onDestroy() {
    if (mTess != null)
    mTess.end();
    }

    }

    構造函數中需要在存儲卡上創建一個目錄tessdata,如果不創建程序運行就會出錯。因為源碼中會檢測這個目錄,不存在就拋出異常:

    public boolean init(String datapath, String language) {
    if (datapath == null) {
    throw new IllegalArgumentException("Data path must not be null!");
    }
    if (!datapath.endsWith(File.separator)) {
    datapath += File.separator;
    }

    File tessdata = new File(datapath + "tessdata");
    if (!tessdata.exists() || !tessdata.isDirectory()) {
    throw new IllegalArgumentException("Data path must contain subfolder tessdata!");
    }

    return nativeInit(datapath, language);
    }

    就這么簡單。現在通過三種方式獲取圖片做OCR:

    在圖庫中選取一張圖,選擇發送或者分享,選擇OCR應用

    在AndroidManifest.xml中加入IntentFilter,讓OCR應用出現在圖庫的分享列表中:

    <intent-filter>
    <action android:name="android.intent.action.SEND" />

    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
    <data android:mimeType="image/*" />
    </intent-filter>

    獲得URI之後,對URI解碼,獲取bitmap:

    if (Intent.ACTION_SEND.equals(intent.getAction())) {
    Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    uriOCR(uri);
    }
    private void uriOCR(Uri uri) {
    if (uri != null) {
    InputStream is = null;
    try {
    is = getContentResolver().openInputStream(uri);
    Bitmap bitmap = BitmapFactory.decodeStream(is);
    mImage.setImageBitmap(bitmap);
    doOCR(bitmap);
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    if (is != null) {
    try {
    is.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    }

    啟動OCR應用,從圖庫中選擇一張圖做OCR

    發送Intent調用圖庫,在onActivityResult中獲取返回的URI做OCR:

    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, REQUEST_PICK_PHOTO);

    啟動OCR應用,拍照之後做OCR
    為了獲取高質量的圖片,在Intent中加入圖片路徑。返回之後就可以直接使用這個圖片路徑解碼:

    private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // Ensure that there's a camera activity to handle the intent
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
    // Create the File where the photo should go
    File photoFile = null;
    try {
    photoFile = createImageFile();
    } catch (IOException ex) {
    // Error occurred while creating the File

    }
    // Continue only if the File was successfully created
    if (photoFile != null) {
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
    Uri.fromFile(photoFile));
    startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
    }
    }
    }

    最後不要忘記下載語言包,並push到存儲卡的tessdata目錄下。

    ㈢ android手機app應用開發,需要學習什麼語言需要什麼工具

    1、學java
    目前,Java語言在Android開發中占據絕對統治地位,所以開發Android的第一步就是學好Java,建議至少完整的看一本Java入門書籍,推薦:
    Java語言程序設計 :入門書籍,分為《基礎篇》和《進階篇》。
    Java編程思想 (第4版):從Java的基礎語法到最高級特性(深入的面向對象概念、多線程、自動項目構建、單元測試和調試等),更講述了java語言的前世今生,語言特性,設計理念等等,閱讀本書需要一定的java基礎,建議至少看完《Java語言程序設計-基礎篇》再看這本書。

    2、學Android
    第一行代碼 :郭霖大大編寫的Android入門書籍,推薦這本書的原因有兩個,一是郭霖大大的語言通俗易懂,二是這本書很新,是基於Android4.0的入門書籍,根據友盟指數的統計,Android4.0以下的設備已不足10%,所以,現在入門,拋棄那些仍舊停留在Android2.x的入門書籍吧。AndroidDevTools:從開發工具到入門教程,從代碼規范到版本控制工具,一切與android相關的都在這個網站上,Android入門請參考該網站的 Android Dev Tutorials 模塊,這個網站的github地址是inferjay/AndroidDevTools · GitHub,如果有什麼補充的可以push。
    Android學習之路:stormzhang大大編寫的Android入門文章,對於有一定java基礎的人來說,Android入門有這一篇文章就足夠了。(該文章同樣被收錄在AndroidDevTools中)
    郭霖的專欄:郭霖大大CSDN專欄。
    stormzhang.com 的頁面:stormzhang大大的個人博客。

    3、遇到問題怎麼辦
    Google:用google搜出來的結果比網路質量高。至於如何不翻·牆就使用google請自行知乎,但是作為一個Android開發者,早晚要學會翻牆。
    博客園 - 開發者的網上家園
    博客頻道 - CSDN.NET
    Stack Overflow:國外的開發者問答社區,無需翻牆。
    GitHub · Build software better, together.:國外的代碼託管平台,這里有很多Java/Android開源項目,無需翻牆。

    注意:遇到問題一定要搞清楚問題出現的原因,建議花點時間仔細閱讀一篇講解詳細的博文,而不是直接復制別人貼出來的代碼,直接套用別人發的解決方案。

    ㈣ 如何Python寫一個安卓APP

    前言:用Python寫安卓APP肯定不是最好的選擇,但是肯定是一個很偷懶的選擇,而且實在不想學習Java,再者,就編程而言已經會的就Python與Golang(註:Python,Golang水平都一般),那麼久Google了一下Python寫安卓的APP的可能性,還真行。

    既然要寫個APP,那麼總得要有個想法吧。
    其實筆者想做兩個APP來著,一個是自己寫著好玩的,一個是關於運維的。
    關於運維的APP,設計應該如下
    可能長這樣:

    主要由三部分組成,一是素材,圖片音頻之類的文件,二是Python代碼,三是kv文件,這個kv文件有點像html中的css。
    Python代碼的文件名一般命名為main.py
    然後一定有一個叫做XXXApp的類,並繼承App。
    比如該類叫做GameApp,那麼該目錄下的kv文件則必須為Game,如上圖所示,如果不是,那麼kv文件中的一些設定就不會生效。
    比如設定一個標簽

    Label:
    id: time
    text: 'xxxx'
    font_size: 6012345

    id為time,text文本內容為』xxxx』,然後字體為60
    好吧,點到為止吧,不過似乎什麼都沒點到~~~

    從無到有做一個App,我想我會另起一篇文章吧。

    ㈤ 安卓開源是什麼意思

    開源的意思是安卓系統的源代碼是面向用戶開放的,可以遵循開源協議(GNU)進行使用、編譯和再發布。在遵守GNU協議的前提下,任何人都可以免費使用,隨意控制軟體的運行方式。最著名的開源操作系統是linux。
    開源系統相對於不開源的操作系統,如Windows和Mac,開源操作系統最大的特點就是開放源代碼和自由定製,但也會因為使用者的技術水平等關系出現很多不可預知的情況及維護問題,並且由於多數硬體和軟體廠商並不支持開源軟體.所以在驅動和軟體源方面有很大困難,這就要求個人用戶在選擇系統時需要注意根據自己的實際情況來選擇,這也是目前個人使用開源操作系統較為困難的最主要原因。
    開源系統的分類:Unix-like類:Linux(這一族開發者眾多,發行版本以千計,覆蓋所有平台,並支持所有文件格式和所有網路協議)、FreeBSD、OpenBSD、NetBSD(覆蓋所有平台)、DrangonflyBSD、Darwin/OpenDarwin/PureDarwin、Minix、GNU Mach/GNU Hurd、L4/Fiasco/Pistachio、syllable、禪OS
    Unix類:Opensolaris、AuroraUX、Plan9、Inferno – Plan 9。
    dos類:Freedos
    windows-like類:ReactOS
    原創類:House、KolibriOS、MenuetOS、HelenOS、Openvms
    還有其他的開源操作系統有:XFree86、ReactOS。

    ㈥ 怎麼編譯原生安卓

    您好,
    很高興為您解答。
    Android SDK是安卓開發人員開發必用的開發工具,比如ADB,Fastboot等工具,其並不能製作刷機包。您要製作原生刷機包,安卓原生刷機包是根據Aosp(安卓開源項目),編譯來的。
    希望我的回答能幫上您。

    ㈦ 如何破解安卓系統中已提取的APK程序

    一、APK生成 odex文件方法:
    編譯開源GIT上的build/tools /dexpreopt/dexopt-wrapper這個,使用dexopt-wrapper即可,操作步驟將dexopt-wrapper放到/data/local目錄中,使用adb shell執行linux命令行,使用cd命令進入/data/local目錄,cd /data/local./dexoptwrapper android123.apk android123.odex
    二、合並odex和 少dex的apk 為完整的apk文件

    需要用到的工具是smali,一個開源的java處理軟體:

    1.下載的baksmali和 smali的jar文件到工作目錄

    2.把ROM裡面的core.odex, ext.odex, framework.odex, android.policy.odex, services.odex這5個文件也放在同一目錄(也可以放在別的目錄,通過設置BOOTCLASSPATH指定,默認就是當前目錄)。
    例:以teeter為例子 (HTC一些Android常常會內置),ROM裡面拿出來的可能是2個文件,teeter.apk + teeter.odex。
    1、分解odex文件:java -jar baksmali-1.2.1.jar -x teeter.odex如果沒其他問題,會在工作目錄生成一個out的目錄,裡面是分解出來的一些文件,我們在此不深究這些文件的作用。
    2、把分解得到的文件變成classes.dex:java -Xmx512M -jar smali-1.2.1.jar out -o classes.dex,這樣得到了一個有用的classes.dex文件

    3、用WinZip或者WinRAR打開teeter.apk文件,把這個classes.dex 放進去

    4、最後再用signapk把最新得到的這個包含classes.dex的apk重新簽署一下 (Auto Sign簽名工具往期的文章里有下載),就生成一個可以安裝的單獨APK程序了。

    5、簽名完成後即可安裝使用了

    ㈧ APP的源代碼是什麼意思(安卓的)

    開源(Open Source,開放源碼)被非盈利軟體組織(美國的Open Source Initiative協會)注冊為認證標記,並對其進行了正式的定義,用於描述那些源碼可以被公眾使用的軟體,並且此軟體的使用、修改和發行也不受許可證的限制。

    安卓的開源就是開放源代碼,安卓2.x的內核是Linux2.6.方便軟體商開發,多數軟體可以免費,手機商不用買系統版權,降低成本和零售價.這些都是對用戶直接或間接的好處.

    ㈨ 怎麼開發app軟體

    不論是ios還是android的應用開發,其實都遵循著一定的開發流程,只有如此才能使開發過程有章可循而不是一團亂。

    你的app應用是開發給誰用的?
    是寫給小孩玩的游戲,還是用來理財的記賬類應用,每個應用都有固定的適用人群,而這決定你應用的內容是什麼,也決定了要給使用者以什麼樣的用戶體驗。
    互聯網是個神奇的大網,大數據開發和軟體定製也是一種模式,這里提供最詳細的報價,如果你真的想做,可以來這里,這個手機的開始數字是一八七中間的是三兒零最後的是一四二五零,按照順序組合起來就可以找到,我想說的是,除非你想做或者了解這方面的內容,如果只是湊熱鬧的話,就不要來了。

    你的app應用是做什麼的?
    一個app有明確的使用目的是必須的。如何來明確?一個辦法就是要去想清楚什麼能吸引用戶來使用你的app。

    你的app能解決什麼問題?
    一個app應該致力於解決好一個問題而不是想能處理很多好無相關的問題,因為那樣你就要考慮開發幾個不同的app。每個app都應該專註解決一類問題。

    設計用戶界面。
    有了明確的理念和構想,下面就是該設計用戶界面了,用戶界面是app使用者與你的app交互的地方,應該遵循簡潔美觀,便捷的原則,從app使用者的角度出發,帶給用戶良好的使用體驗。

    定義交互方式。
    用戶界面因為有了交互才變得有活起來。在app開發中,交互的啟用都是通過用戶操作的事件來觸發的,比如手指的點擊,滑動,捏合等操作。通過定義這些事件,我們可以精確地對用戶的操作來給出響應,或者打開新的界面,或者提供展現的內容在當前界面上。

    部署用戶行為。
    定義好交互方式後,接下來就要通過代碼來實現這些定義好的行為了。可以說用戶的所有操作都是通過我們實現的定義來得到響應的,如果沒有前面明確的定義,那麼會給用戶帶來困擾,這是一個好的app所不能出現的錯誤。

    數據交互的部署。
    有了設計好的用戶界面和交互方式,接下來就要考慮數據的存儲問題。
    在界面與數據之間必須要定義明確的交互方式,盡管使用app的人是不直接和這些數據交互。一個好的數據模型是你app的堅實基礎,使你的app更有擴展性,更易於將來的修改

    上面講解了APP開發的流程,下面來講解開發APP的費用,簡單來說就是這個APP需要多少人、做多長時間、人員的工資是多少。
    對於APP外包開發的報價,一般取決於下面幾個因素:

    1、APP支持平台:
    常見的APP移動平台包括谷歌Android、蘋果iOS(iPhone/iPad),做的手機APP是針對其中某一個、還是兩個平台都需要,對應了不同的開發成本。
    除了APP本身,很多APP還有網站版的管理後台,管理後台的開發成本也需要考慮在內。

    2、開發人員工資
    一般來說,外包項目報價的基礎是開發人員的工資,而工資又是和工作年限、經驗、水平等決定的。這里的開發人員包括產品經理、UI設計師、前端工程師、服務端工程師、iOS和Android客戶端工程師等,不同的外包項目需要的開發人員不同。
    舉個例子,假設一個iOS開發工程師一月工資22000元(工資數值僅舉例),按照每月21.75個工作日來計算每天的開發費用,這里是每天(22000/21.75)=1000元,如果你考慮20%的利潤,則每天費用變為了1000x(1+20%)=1200元。致電一八六零零三一四起吳零
    (註:現實中,開發人員的工資之外,還有社保等其他人力成本支出)

    3、產品功能的復雜程度
    產品功能的復雜程度決定了所需要的開發人員和時間,開發需要30人/天和100人/天,價格是不同的。
    接前面的例子,如果一個項目需要一個iOS開發工程師30人/天,那麼按照1200元每天的價格,項目總費用就是(1200x30)=36000元。

    4、外包團隊經驗和素質
    如果是產品功能復雜的項目,外包團隊的素質對最終結果影響很大,而好的團隊則報價自然會更高一些。產品功能簡單的項目,另當別論。

    5、外包團隊的所在地
    同樣能力的外包團隊,在不同的城市也會導致開發成本的差異,比如在北京、深圳和上海的外包團隊成本自然高一些,因為當地開發人員薪資和其他支出相對更高。

    ㈩ 如何Python寫一個安卓APP

    1. 更新pip,setuptools;

    閱讀全文

    與安卓開源APP如何編譯相關的資料

    熱點內容
    帶伺服器的電腦怎麼用 瀏覽:997
    什麼app可以調整手機幀率 瀏覽:313
    說苑pdf 瀏覽:872
    安裝包加密有什麼用 瀏覽:584
    舍利子靈力演算法 瀏覽:501
    javacalendar天數 瀏覽:567
    anyview閱讀器java 瀏覽:361
    怎麼降為安卓10 瀏覽:996
    javaweb程序設計郭 瀏覽:249
    gm聲望命令 瀏覽:486
    pdf轉換器電腦版免費 瀏覽:43
    解壓歌曲什麼歌最好 瀏覽:153
    諾貝爾pdf 瀏覽:969
    雲伺服器快速安裝系統原理 瀏覽:790
    蘋果騰訊管家如何恢復加密相冊 瀏覽:117
    手機軟體反編譯教程 瀏覽:860
    sqlserver編程語言 瀏覽:650
    gpa國際標准演算法 瀏覽:238
    伺服器編程語言排行 瀏覽:947
    怎麼下載快跑app 瀏覽:968