利用源码编译Android系统的APK和可执行命令的方法
作者:喝醉的毛毛虫 发布时间:2023-12-22 13:09:46
标签:源码编译,Android
编译Android系统APK
1、设置环境
export ANDROID_HOME=/home/administrator/soft/android
export PATH=$PATH:$ANDROID_HOME/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=$ANDROID_HOME/out/target/product/generic
2、创建项目
android create project -t 1 -k com.lhw.led -a MainActivity -p ./led
Avd id: 1,It's get by command "android list"
Project Name: led
Package: com.lhw.led
Main Activity:MainActivity
Project Path: ./
接下来就是自己编写Android程序了。
3、编写Android.mk
Android.mk需要放在项目根路径下,即led下,内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := led
LOCAL_JAVA_LIBRARIES :=
LOCAL_STATIC_JAVA_LIBRARIES :=
include $(BUILD_PACKAGE)
4、编译
在Android源码目录下执行:
./build/envsetup.sh
mmm /home/administrator/workspace/android_test/led/
执行结果:
Install: out/target/product/generic/system/app/led.apk
编译Android系统可执行命令
Android系统允许开发者,自己编写"ls"这样的命令放到Android系统中。
1、编写C文件:mycmd.c
#include <stdio.h>
int main(int argc, char **argv)
{
printf("This is my command!\n");
return 0;
}
2、编写Android.mk文件
LOCAL_PATH := $(call my-dir)
LOCAL_SRC_FILES := mycmd.c
LOCAL_MODULE := mycmd
LOCAL_MODULE_TAGS := mycmd
LOCAL_SHARED_LIBRARIES := libc
LOCAL_STATIC_LIBRARIES :=
include $(BUILD_EXECUTABLE)
3、编译
mmm /home/administrator/workspace/android_test/mycmd/
编译完成后信息:
Install: out/target/product/generic/system/bin/mycmd


猜你喜欢
- Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符:1.&nb
- 调试的时候,在循环里增加条件判断,可以极大的提高效率,心情也能愉悦。以下介绍下IDEA使用条件【Condition】断点的方法1、编写一段样
- 本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:一、环境:主机:WIN8开发环境:Android
- 最近根据项目需要,整理了一个相对比较全面的 WheelView 使用控件,借用之前看到的一句话来说,就是站在巨人肩膀上,进行了一些小调整。
- Android 调用系统相机拍摄获取照片的两种方法实现实例在我们Android开发中经常需要做这个一个功能,调用系统相机拍照,然后获取拍摄的
- EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。ehcach
- URL(Uniform Resource Locator)是统一资源 * ,它是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,
- 前言数据库存储是我们常用的存储方式之一,对大批量数据有增、删、改、查操作需求时,我们就会想到使用数据库,Flutter中提供了一个sqfli
- 本文实例讲述了Java基于分治算法实现的棋盘覆盖问题。分享给大家供大家参考,具体如下:在一个2^k * 2^k个方格组成的棋盘中,有一个方格
- Spring Boot 自动装配最重要的注解@SpringBootApplication@Target(ElementType.TYPE)@
- 首先来看一下效果: 大体思路如下: 总体布局用了一个自定义的ViewGroup,里面包了两个View(top Vie
- 最近重构了一下我的存档框架。我在这里对实现方法进行简单的解析。注意这里主要演示算法,所以,效率上并不是最佳。一个游戏中,可能有成百上千个物体
- 1、unity的脚本模板新版本unity中的C#脚本有三类,第一类是我们平时开发用的C# Script;第二类是Testing,用来做单元测
- mybatis in foreach 双层嵌套需求:根据角色id,返回角色名称,入参是List<List> 类型的二维数组,需要
- Flutter底部和顶部导航栏的实现,供大家参考,具体内容如下带文字图标的底部导航栏(使用BottomNavigationBar和Botto
- 刚学习c#的朋友要自己手动编译c#代码加深记忆,现在总结下如果手动编译!1、先找到系统的.net 环境在一般在 C:\Window
- 如何实现 WPF 代码查看器控件框架使用.NET40;Visual Studio 2019;代码展示需要使用到AvalonEdit是基于WP
- 点击按钮返回顶部,直接上代码吧布局文件<LinearLayout xmlns:android="http://schemas
- 目录 - JWT- JWT与其它的区别OAuthCookie/Session Auth- JWT的优点- 认证- JWT的缺点-
- 一、前言又见面了哈,今天为大家介绍时钟、钟表的实现方法教程。实现的方法有很多,这里只是提供了一个思路,本着抛砖引玉的心态,希望能和大家共同学