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脚本,继续下一步。
Ⅱ 如何制作Android源码编译脚本
编译生成的 boot.img, system.img, userdata.img 用fastboot 就可以直接刷到机器去啊!由于android源码里不包含手机的驱动,所以编译前需要将驱动先提出来以备后用!
Ⅲ 如何单独编译Android源代码中的模块
第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。
一.首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$../build/envsetup.sh
注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用:
-croot:.
-m:Makesfromthetopofthetree.
-mm:.
-mmm:.
-cgrep:GrepsonalllocalC/C++files.
-jgrep:Grepsonalllocaljavafiles.
-resgrep:Grepsonalllocalres/*.xmlfiles.
-godir:.
这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。
二.使用mmm命令来编译指定的模块,例如Email应用程序:
USER-NAME@MACHINE-NAME:~/Android$mmmpackages/apps/Email/
编译完成之后,就可以在out/target/proct/generic/system/app目录下看到Email.apk文件了。Android系统自带的App都放在这具目录下。另外,Android系统的一些可执行文件,例如C编译的可执行文件,放在out/target/proct/generic/system/bin目录下,动态链接库文件放在out/target/proct/generic/system/lib目录下,out/target/proct/generic/system/lib/hw目录存放的是硬件抽象层(HAL)接口文件。
三.编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。
USER-NAME@MACHINE-NAME:~/Android$makesnod
四.参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器:
USER-NAME@MACHINE-NAME:~/Android$emulator
这样一切就搞定了。
Ⅳ 想给安卓模拟器编辑脚本,用什么编译好呢
如果单纯是按键的话可以用按键精灵+bili圈重力大师写重力脚本配合估计可以,重力脚本是模拟器本身自带的功能
Ⅳ 【安卓实践】apex导致的安卓编译失败原因调查
在实现功能的时候,我把我的功能逻辑实现在libmeminfo.so库当中。
由于我的功能需要调用libmemtrack.so库中的一些函数,我就在libmeminfo的Androidbp中将libmemtrack.so动态连接过来了。如下:
这样增加之后无论是在 其他so库中调用我提供的方法,还是单独编译libmeminfo都可以编译通过,并且功能验证不会有问题。
但是当我带patch编译整个rom包的时候,却报了以下错误:
拿到这个错误的时候,由于这个错误最多是“Unexpected file 'lib64/libmemtrack.so'”这一行与我的修改有关系,
所以我一度觉得不是我的问题。后来调查了两个小时我才发现编译错误的原因。
确实我的修改不会导致问题,但是在安卓编译的过程中编译com.android.runtime.debug时,编译脚本会检查/apex/com.android.runtime.debug/目录下多个目录lib/lib64/bin/以及lib/bionic等路径下是否包含非法的so库。
如果包含非法的so库,就会在编译脚本中报错,导致rom包的编译失败。
修改编译脚本,执行“make art-check-debug-apex-gen -j16”打印expected_paths如下:
可以看到libmeminfo.so包含在这些库当中。
这意味着,如果我在libmeminfo.so中想要动态连接其他非expected_paths中的so库,如libmemtrack,就会在编译的时候把libmemtrack放在apex/com.anroid.runtime.debug/lib64/路径下。
而编译脚本会检查此路径下的库是否都是expected_paths中所包含的库,如果不是,就会报错。
而这次报错中之所以会有其他库如libhwbinder.so,原因是libmemtrack动态连接了这些库。
至此,问题原因调查完毕。
那只能换一种方式实现我的功能了,至少不能放在libmeminfo.so中去实现。
Ⅵ android编译命令的说明
android源码目录下的build/envsetup.sh文件,描述编译的命令
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
要想使用这些命令,首先需要设置android脚本编译环境,在源码根目录执行 source build/envsetup.sh
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
下面举个例子说明,假设我要编译android下的\framework\av\cmds\screenrecord模块,
当前目录为源码根目录,方法如下:
1、source build/envsetup.sh
2、mmm framework/av/cmds/screenrecord
或者 :
1、source build/envsetup.sh
2、cd framework/av/cmds/screenrecord
3、mm
Ⅶ Android源码编译是干什么
编译Android系统。
Ⅷ Android make 基础
Android编译演进过程:
build/ 目录下
source build/envsetup.sh
输入指令hmm 就可以查看信息
lunch 2
通过soong执行编译构建,这里执行make命令时,main.mk文件把一些环境变量和目标都配置好后,会执行envsetup.sh中的make()进行编译。
build/soong/soong_ui.bash --make-mode
------->
soong的编译过程:
soong_ui.bash 调用流程:
可以看到include 了main.mk文件,从main.mk开始,将通过include命令将其所有需要的.mk文件包含进来,最终在内存中形成一个包括所有编译脚本的集合,这个相当于一个巨大Makefile文件。Makefile文件看上去很庞大,其实主要由三种内容构成: 变量定义、函数定义和目标依赖规则,此外mk文件之间的包含也很重要。
5.工具链的关系
REF
https://blog.csdn.net/yiranfeng/article/details/109082489
Ⅸ android.mk ubuntu怎么编译
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块。每个模块属下列类型之一:
1)APK程序,一般的Android程序,编译打包生成apk文件
2)Java库,java类库,编译打包生成jar文件
3) CC++应用程序,可执行的CC++应用程序
4)CC++静态库,编译生成CC++静态库,并打包成.a文件
5)CC++共享库,编译生成共享库(动态链接库),并打包成.so, 有且只有共享库才能被安装/复制到您的应用软件(APK)包中。
(1)先看一个简单的例子:一个简单的"hello world",比如下面的文件:
sources/helloworld/helloworld.c
sources/helloworld/Android.mk
相应的Android.mk文件会像下面这样:
---------- cut here ------------------
普通的.mk一样
=====================================m、mm、mmm编译命令===========================================
android源码目录下的build/envsetup.sh文件,描述编译的命令
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
所以要想使用这些命令,首先需要在android源码根目录执行build/envsetup.sh 脚本设置环境。
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
下面举个例子说明,假设我要编译android下的hardwarelibhardware_legacypower模块,当前目录为源码根目录,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
或者 :
1、. build/envsetup.sh
2、cd hardware/libhardware_legacy/power/
3、mm
m没有试过。默认上述两个编译命令,只编译发生变化的文件。如果要编译模块的所有文件,需要-b选项,例如mm -b或者mmm -b
make命令,也可以用来编译。如果是include $(BUILD_PACKAGE),用makeLOCAL_PACKAGE_NAME值;如果是include $(BUILD_EXECUTABLE)或者include $(BUILD_JAVA_LIBRARY),用makeLOCAL_MODULE值(未验证)。