导航:首页 > 源码编译 > 怎么看android编译进度

怎么看android编译进度

发布时间:2024-02-08 22:00:50

A. 怎么查看反编译出来的androidmanifest文件

apktool反编译xml等资源文件:

a. 安装java环境,下载文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2;把这两个文件解压到同一目录下,该目录cmd中运行apktool获得帮助信息;

b. apktool d XXX.apk ABC : 反编译XXX.apk到文件夹ABC

c. apktool b ABC :从反编译后的文件夹ABC重建APK,输出到ABC\dist\out.apk(该apk没有签名)

d. 这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;

B. android studio 导出项目

Android Studio导入项目的几种方法
主题 Android Studio Gradle Eclipse
Android Studio默认使用 Gradle 构建项目, Eclipse 默认使用 Ant 构建项目。建议Android Studio导入项目时,使用 Gradle 构建项目。
导入Eclipse项目
本例中,使用到的 Eclipse 项目结构
-demo为主项目, appcompat_v7 为 library 项目。
导入Generate Gradle build files项目
Google官方建议是通过本方法进行Android Studio导入 Eclipse 项目。
这种方式有一个好处就是兼容 Eclipse 的文件目录结构,通过版本控制中的文件过滤,可以在一个项目组中,同时使用 Eclipse 和Android Studio。
讲解1
File--> Export
讲解2
选择导出类型。选择 Android --> Generate Gradle build files 。
点击 Next 。
讲解3
很长一段英语(完全看不懂是什么意思)。
点击 Next 。
讲解4
选择要导出的项目。
因为我的 e-demo 项目依赖了 appcompat_v7 项目,所以我将 e-demo 和 appcompat_v7 都选择了导出。
点击 Next 。
讲解5
最终确认要导出的项目。
Force overriding of existing files表示覆盖导出文件。使用 Generate Gradle build files 的方式导出项目,会在项目目录中生成一些文件。这里的覆盖文件指的就是覆盖这些可能已经生成过的文件。如果你之前有使用这种方式导出过项目,建议勾选。
点击 Finish 。
讲解6
这一步没有什么好说的,直接点击 Finish 。
讲解7
Finish点击完毕,并没有弹出窗口显示导出的项目,就好像什么事情都没有做一样。其实,使用这个方式导出项目,是在项目中添加了一些文件,我们可以到项目目录下去看一看这些生成文件。
工作空间目录下
e-demo目录下
appcompat_v7目录下
我们可以发现:在工作空间目录下,多出了 gradle 文件夹和 build.gradle 、 build.gradle 、 gradlew 、 gradlew.bat 、 settings.gradle 文件;在 e-demo 目录下多出了 build.gradle 文件; 在 appcompat_v7 目录下多出了 build.gradle 文件。这些文件和文件夹都和 Gradle 有关系,用于构建项目。这些文件以及文件夹的作用,我们以后再说。
讲解8
由于 Eclipse 的 ADT 插件已经很久没有更新了,自动生成的 Gradle 编译设置已经跟不上Android Studio的更新速度,所以我们需要手动修改一些内容。
打开工作空间目录下的 gradle --> wrapper --> gradle-wrapper.properties 。修改一下内容: distributionUrl=http\://services.gradle.org/distributions/gradle-a.b.c-all.zip --> distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
打开工作空间目录下的 build.gradle 文件。修改以下内容:
classpath 'com.android.tools.build:gradle:0.x.+'--> classpath 'com.android.tools.build:gradle:1.0.0' 。
之所以这么设置,是因为: Eclipse 导出的 Gradle 设置已经不是Android Studio 1.0 所支持的 Gradle 已经 Gradle 插件版本,需要手动更为支持的版本。否则轻则必须不能离线导入项目,重则项目导入失败。
讲解9
打开Android Studio,选择 Open an existing Android Studio project 。
讲解10
此时会弹出一个框,让你选择文件夹,这个时候需要注意的就是,你需要选择原来的 Eclipse 的工作空间目录,而不是 e-demo 目录。
点击 OK 。
讲解11
设置导入选项。
此处有一些比较重要的设置需要讲解一下。
Gradle project :此处通常显示的路径并不是你的 Eclipse 的工作空间的目录,而是 Eclipse 的工作空间的目录中的 gradle 路径。你需要手动删除后面的 gradle ,否则项目导入,你是看不到你的代码的,只能看到 gradle 目录下的内容。
Create directories for empty content roots automatically :不是很明白它的作用,一般默认即可。
Use default gradle wrapper(recommended) 和 Use local gradle disribution :这两个是让你设置使用的 Gradle 。默认会勾选 Use default gradle wrapper(recommended) ,我们需要手动勾选 Use local gradle disribution 。
Gradle home :勾选 Use local gradle disribution 后此项编程可编辑状态,默认的此处的地址为Android Studio安装目录中的 Gradle 路径地址。此处可能会有一些错误的警告,提示内容为: Gradle location is incorrect 。而你的这个目录下,确实是有 Gradle 的。产生这个问题的原因,很可能是因为 Gradle home 选项中,路径中的斜杠为 / 而不是 ** 。你需要点击左右的文件选择按钮,重新选择到Android Studio安装目录中的 **Gradle ,问题即可解决。
Offline work :设置 Gradle 使用离线的方式导入项目。你可以勾选也可以不勾选。如果你有进行 讲解8 的操作,你则可以勾选,以离线的方式进行编译。
点击 OK 。之后便会看到编译进度条,根据每个人机器的配置,编译的时间不同。
编译完成之后,自动跳转到Android Studio的主页面。在编译的工程中,会有以下的弹框:
之所以有这个弹框,是因为Android Studio默认使用 JAVA 1.7 进行编译,如果你的项目不是 1.7 ,则会弹框让你选择。建议选择 Yes ,因为当你使用 JAVA 1.7 的时候,只要不使用 JAVA 1.7 的资源自动释放这个新特性,能够完美得兼容 JAVA 1.6 的Android设备。
如果看到下面这个界面,说明你已经导入成功了。
直接导入Eclipse项目
如果不使用 Generate Gradle build files 导出项目,可以使用Android Studio直接打开 Eclipse 工作空间,进行项目导入。
不使用Gradle编译项目
这种方式可以兼容 Eclipse 的文件目录结构,通过版本控制中的文件过滤,可以在一个项目组中,同时使用 Eclipse 和Android Studio。但是在Android Studio中并不是使用 Gradle 构建项目,而是使用的 Ant 。
讲解12
打开Android Studio,选择 Import Non-Android Studio project 。
在弹出的目录选择框中,选择 Eclipse 的工作空间 。
讲解13
接下来回让你选择编译环境。选择 Create project from existing sources 。
讲解14
设置 Android Studio Project 名称以及存放目录。一般默认即可。
点击 Next 。
讲解15
选择资源文件以及资源文件夹。根据你需要导入的项目进行勾选。选择一个项目的时候,你需要选择它依赖的 Library 项目以及他的 src 和 gen 目录。
选择完毕,点击 Next 。
讲解16
选择要导入的 jar 。第一个 .mylyn 是 Eclipse 插件的内容,我们需要手动过滤掉,其他的
选择完毕,点击 Next 。
讲解17
选择Android Studio识别出的 Mole ,也就是 Eclipse 中的 Project 。勾选你想导入的项目即可。
选择完毕,点击 Next 。
讲解18
选择编译的 SDK 。在这里,你需要选择 Android SDK ,最好和之前使用 Eclipse 时使用的 SDK 一样。同样,你也可以再次进行一些简单的环境设置,在此就不说了。
选择完毕,点击 Next 。
讲解19
选择识别出的 AndroidManifest.xml 文件。默认全部勾选即可。
点击 Finish ,Android Studio就开始导入项目了。
讲解18
在导入的过程中,如果Android Studio识别出原项目的依赖关系,便会弹出对话框让你进行选择。如果想保持之前的依赖关系,点击 OK 即可。
当你看到这个界面,就表示导入成功了。项目使用 Ant 构建,并不是Android Studio 默认的 Gradle 。
使用Gradle编译项目
本方法有一个缺点就是,一次只能导入一个 Eclipse 项目。对于那些只使用到了官方系列的支持包的 Eclipse 项目来说,会方面很多,而且同时兼容 Eclipse 文件目录结构。
讲解19
打开Android Studio,选择 Import Non-Android Studio project 。
在弹出的目录选择框中,选择 你想导入的项目所在的目录,而不是 Eclipse 的工作空间 。
讲解20
Android Studio识别出你的项目是一个 Eclipse Android 项目,它将重新使用 Gradle 构建项目。
Android Studio会完整复制项目文件到一个新的目录中,你需要设置这个新目录的地址。
设置完毕,点击 Next 。
讲解21
将之前 Ant 架构改变为 Gradle 架构。
Replace jars with dependencies,when possible :将 Ant 的 jar 依赖关系使用 dependencies 重构。
Replace library sources with dependencies,when possible :将 Ant 的 library 项目的依赖关系使用 dependencies 重构。
Create Gradle-style(cameCase) mole names :使用 Gradle 的样式构建Android Studio的 Mole 名称。
建议全选,点击 Finish 。Android Studio开始编译项目,同时进入Android Studio主页面。
同样的,在编译的过程中,依然会提示你语言等级的问题,选择 Yes 。
导入Android Studio项目
Android Studio项目,指的是使用 Gradle 进行构建的项目。默认的文件结构如下:
project-name
+ app/
+ src/
+ main/
+ assets/
+ java/
+ package
...
+ res/
+ drawable/
...
+ layout
...
+ values
...
| Androidmanifest.xml
| build.gradle
+ gradle/
+ wrapper/
| gradle-wrapper.jar
| gradle-wrapper.properties
| build.gradle
| gradlew
| gradlew.bat
| settings.gradle
有的一些Android Studio项目有对 Eclipse 做兼容处理,项目结构看起来和 Eclipse 是相同的。
讲解22
当你从网络上或者其他地方获取到一份Android Studio项目源码时,你希望能够导入到Android Studio中。首先,你需要先对这份源码进行一些修改。具体的修改内容,请参照 讲解8 。
打开Android Studio,选择 Open an existing Android Studio project 。
在弹出的路径选择框中,选择你要导入的Android Studio项目,点击 OK 。
讲解23
然后会弹出和 讲解11 相同的页面,同样,和 讲解11 进行一样的设置即可。

C. android反编译之后怎么更快的看懂代码

你可以试试反编译后在eclipse中看代码非常方便,因此将反编译后的android代码添加到 eclipse是很有必要的。
步骤:
1、使用dex2jar工具,将apk反编译成.jar后缀的文件(该文件是所有.class文件的压缩包);
2、使用jd-gui.exe工具,打开上一步骤生成的.jar后缀的文件;使用File->Save all sources菜单,将.jar文件包中的所有文件以java源码文件形式导出。
3、eclipse中创建android工程:File->new->Project->android->Android Project from Existing code;在Root Directory:中填写AndroidManifest.xml所在的文件夹路径。
4、将第2步骤中生成的所有文件和文件夹一起到第3步骤生成的工程中的src文件夹中(你也可以在工程目录下随便创建一个目录,然后将java源码文件扔进出,然后在工程目录下面的.classpath文件中添加该文件夹的目录路径)。

D. android 编译的镜像怎么看内容

Android编译系统在初始化的过程中,会通过根目录下的Makefile脚本加载build/core/main.mk脚本,接着build/core/main.mk脚本又会加载build/core/Makefile脚本,而Android系统镜像文件就是由build/core/Makefile脚本负责打包生成的。 在build/core/main.mk文件中,与Android系统镜像文件打包过程相关的内容如下所示: [plain] view plain ...... ifdef FULL_BUILD # The base list of moles to build for this proct is specified # by the appropriate proct definition file, which was included # by proct_config.make. proct_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES) # Filter out the overridden packages before doing expansion proct_MODULES := $(filter-out $(foreach p, $(proct_MODULES), \ $(PACKAGES.$(p).OVERRIDES)), $(proct_MODULES)) $(call expand-required-moles,proct_MODULES,$(proct_MODULES)) proct_FILES := $(call mole-installed-files, $(proct_MODULES)) ...... else # We're not doing a full build, and are probably only including # a subset of the mole makefiles. Don't try to build any moles # requested by the proct, because we probably won't have rules # to build them. proct_FILES := endif ...... moles_to_install := $(sort \ $(ALL_DEFAULT_INSTALLED_MODULES) \ $(proct_FILES) \ $(foreach tag,$(tags_to_install),$($(tag)_MODULES)) \ $(call get-tagged-moles, shell_$(TARGET_SHELL)) \ $(CUSTOM_MODULES) \ ) # Some packages may override others using LOCAL_OVERRIDES_PACKAGES. # Filter out (do not install) any overridden packages. overridden_packages := $(call get-package-overrides,$(moles_to_install)) ifdef overridden_packages # old_moles_to_install := $(moles_to_install) moles_to_install := \ $(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk), \ $(moles_to_install)) endif ...... # Install all of the host moles moles_to_install += $(sort $(moles_to_install) $(ALL_HOST_INSTALLED_FILES)) # build/core/Makefile contains extra stuff that we don't want to pollute this # top-level makefile with. It expects that ALL_DEFAULT_INSTALLED_MODULES # contains everything that's built ring the current make, but it also further # extends ALL_DEFAULT_INSTALLED_MODULES. ALL_DEFAULT_INSTALLED_MODULES := $(moles_to_install) include $(BUILD_SYSTEM)/Makefile moles_to_install := $(sort $(ALL_DEFAULT_INSTALLED_MODULES)) ALL_DEFAULT_INSTALLED_MODULES := ...... .PHONY: ramdisk ramdisk: $(INSTALLED_RAMDISK_TARGET) ...... .PHONY: userdataimage userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET) ...... .PHONY: bootimage bootimage: $(INSTALLED_BOOTIMAGE_TARGET) ...... 如果定义在FULL_BUILD这个变量,就意味着我们是要对整个系统进行编译,并且编译完成之后 ,需要将编译得到的文件进行打包,以便可以得到相应的镜像文件,否则的话,就仅仅是对某些模块进行编译。 在前面Android编译系统环境初始化过程分析一篇文章中,我们提到,变量INTERNAL_PRODUCT描述的是执行lunch命令时所选择的产品所对应的产品Makefile文件,而变量PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES描述的是在该产品Makefile文件中通过变量PRODUCT_PACKAGES所定义的模块名称列表。因此,我们得到的变量proct_MODULES描述的就是要安装的模块名称列表。 我们知道,Android源码中自带了很多默认的APK模块。如果我们想用自己编写的一个APK来代替某一个系统自带的APK,那么就可以通过变量PACKAGES.<new>.OVERRIDES := <old>来说明。其中,<new>表示用来替换的APK,而<old>表示被替换的APK。在这种情况下,被替换的APK是不应该被打包到系统镜像中去的。因此,我们需要从上一步得到的模块名称列表中剔除那些被替换的APK,这是通过Makefile脚本提供的filter-out函数来完成的。 一个模块可以通过LOCAL_REQUIRED_MODULES变量来指定它所依赖的其它模块,因此,当一个模块被安装的时候,它所依赖的其它模块也会一起被安装。调用函数expand-required-moles获得的就是所有要安装的模块所依赖的其它模块,并且将这些被依赖的模块也一起保存在变量proct_MODULES中。 注意,这时候我们得到的proct_MODULES描述的仅仅是要安装的模块的名称,但是我们实际需要的这些模块对应的具体文件,因此,需要进一步调用函数mole-installed-files来获得要安装的模块所对应的文件,也就是要安装的模块经过编译之后生成的文件,这些文件就保存在变量proct_FILES中。 最终需要安装的文件除了变量proct_FILES所描述的文件之后, 还包含以下四类模块文件: 1. 变量ALL_DEFAULT_INSTALLED_MODULES描述的文件。 2. 变量CUSTOM_MODULES描述的文件。 3. 与当前编译类型对应的模块文件。例如,如果当前设定的编译类型为debug,那么所有通过将变量LOCAL_MODULE_TAGS将自己设置为debug的模块也会被打包到系统镜像文件中去。 4. 与当前shell名称对应的模块文件。例如,如果当前使用的shell是mksh,那么所有通过将变量LOCAL_MODULE_TAGS将自己设置为shell_mksh的模块也会被打包到系统镜像文件中去。 最后,moles_to_install就描述当前需要打包到系统镜像中去的模块文件。实际上,我们除了可以通过PACKAGES.$(p).OVERRIDES来描述要替换的APK之后,还可以在一个模块中通过LOCAL_OVERRIDES_PACKAGES来描述它所替换的模块。因此,我们需要通过函数get-package-overrides来获得此类被替换的模块文件,并且将它们从moles_to_install中剔除,这样得到的模块文件才是最终需要安装的。 确定了要安装的所有模块文件之后,就可以将build/core/Makefile文件加载进来了。注意,文件build/core/Makefile是通过变量ALL_DEFAULT_INSTALLED_MODULES来获得当前所有要打包到系统镜像文件中去的模块文件的。 文件build/core/Makefile主要就是用来打包各种Android系统镜像文件的,当然它也是通过make规则来执行各种Android系统镜像文件打包命令的。每一个Android镜像文件都对应有一个make伪目标。例如,在build/core/main.mk文件中,就定义了三个make伪目标ramdisk、userdataimage和bootimage,它们分别依赖于变量INSTALLED_USERDATAIMAGE_TARGET、INSTALLED_USERDATAIMAGE_TARGET和INSTALLED_BOOTIMAGE_TARGET所描述的文件,并且它们分别表示的就是ramdisk.img、userdata.img和boot.img文件。

E. android怎么通过pid判断原生代码fork出的子进程是否正在运行

1.将应用程序源码复制进Android源码目录中(提前编译好源码) 2.使用build/envsteup.sh 配置shell - mm TARGET_PRODUCT=proct_name 或直接./build_android.sh 也能完成编译。 3.在源码目录:out/target/proct/proctname/obj/APPS/test_cert_intermediates 下有三个文件:package.apk package.apk.unsigned package.apk.unaligned 将package.apk.unsigned复制出来,单独进行sign. 4.在Windows下进行sign: jarsigner -verbose -keystore youkey.keystore d:\package.apk.unsigned youkey 5.zipalign -v 4 d:\package.apk.unsigned d:\package.signed.apk

F. 怎么知道android源码编译成功

直接连上手机,如果能安装运行就没问题,如果是单纯的编译,那就看日志

G. 查看apk是android哪个版本编译

如果有一个apk,需要知道他最低安装支持的Android版本是什么,应该如何查看呢?
直接将apk后缀名改为rar或者zip,拉出AndroidManifest.xml?不行,AndroidManifest.xml已经被编译过了,里面很多内容改为二进制了。
其实用Android自带工具即可,进入Android SDK目录。
cd sdk\build-tools\android-4.4.2 这边以4.4.2为例,可以参照自己的platform版本

aapt.exe list -a someapk.apk > apkversion.txt

然后用记事本之类的应用打开apkversion.txt搜索
minSdkVersion,以我这边为例,可以看到这便是0xf,即15
E: uses-sdk (line=8)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0xf

15对应的Android版本可以从这边查阅:
Android版本和API Level对应关系

阅读全文

与怎么看android编译进度相关的资料

热点内容
android缓冲界面 浏览:272
中行企业银行app怎么开通转账 浏览:96
飞乐鸟水彩画入门pdf 浏览:964
如何用手机登录公司服务器 浏览:57
不安全服务器是什么意思 浏览:519
挂载vhd命令 浏览:441
女主角是程序员男主角是医生 浏览:561
怎么解除app获取指纹 浏览:740
安卓仙剑修改器怎么用 浏览:537
松下服务器18代表什么 浏览:284
什么叫服务器高并发 浏览:958
单片机的pow函数 浏览:867
天气预报android界面 浏览:951
空调支持用户使用编程吗 浏览:683
亚马逊云服务器如何设置 浏览:736
java本地类 浏览:369
程序员话剧 浏览:778
通达信vix恐慌指数源码 浏览:25
火力app在哪里下载 浏览:101
linux查看安装的服务 浏览:176