导航:首页 > 源码编译 > 安卓开源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如何编译相关的资料

    热点内容
    诺贝尔pdf 浏览:965
    云服务器快速安装系统原理 浏览:788
    苹果腾讯管家如何恢复加密相册 浏览:115
    手机软件反编译教程 浏览:858
    sqlserver编程语言 浏览:650
    gpa国际标准算法 浏览:238
    服务器编程语言排行 浏览:947
    怎么下载快跑app 浏览:966
    小红书app如何保存视频 浏览:170
    如何解开系统加密文件 浏览:809
    linux切换root命令 浏览:283
    c编译之后界面一闪而过怎么办 浏览:880
    怎么看ic卡是否加密 浏览:725
    lgplc编程讲座 浏览:809
    cnc手动编程铣圆 浏览:723
    cad中几种命令的意思 浏览:327
    oraclelinux安装目录 浏览:134
    安卓系统可以安装编译器吗 浏览:571
    javajson实体类 浏览:691
    板加密钢筋是否取代原钢筋 浏览:68