在本文中,我们将带你了解Android源代码编译错误:“尝试使用java选项增加堆大小’-Xmx’”在这篇文章中,我们将为您详细介绍Android源代码编译错误:“尝试使用java选项增加堆大小’-X
在本文中,我们将带你了解Android源代码编译错误:“尝试使用java选项增加堆大小’-Xmx’”在这篇文章中,我们将为您详细介绍Android源代码编译错误:“尝试使用java选项增加堆大小’-Xmx’”的方方面面,并解答无法使用javac常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Android Studio中解决jar包重复依赖导致的代码编译错误、android 源代码编译出错、android反编译之获得java源代码、Android源代码 之 下载源代码。
本文目录一览:- Android源代码编译错误:“尝试使用java选项增加堆大小’-Xmx’”(无法使用javac)
- Android Studio中解决jar包重复依赖导致的代码编译错误
- android 源代码编译出错
- android反编译之获得java源代码
- Android源代码 之 下载源代码
Android源代码编译错误:“尝试使用java选项增加堆大小’-Xmx’”(无法使用javac)
当我尝试编译Android源代码时出错(Sourcecode-version:6.0.1; RAM:6G;主机系统:ubuntu 14.04),日志如下:
including ./system/netd/Android.mk ...
including ./system/security/keystore-engine/Android.mk ...
including ./system/security/keystore/Android.mk ...
including ./system/security/softkeymaster/Android.mk ...
including ./system/tools/aidl/Android.mk ...
including ./system/update_engine/Android.mk ...
including ./system/vold/Android.mk ...
including ./system/weaved/Android.mk ...
including ./system/webservd/Android.mk ...
including ./tools/external/fat32lib/Android.mk ...
Starting build with ninja
ninja: Entering directory `.'
[ 0% 1/21275] Ensure Jack server is installed and started
Jack server already installed in "/home/eddy/.jack-server"
Launching Jack server java -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/eddy/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
[ 0% 17/21275] host Java: conscrypt-host (out/host/common/obj/JAVA_LIBRARIES/conscrypt-host_intermediates/classes)
warning: [options] bootstrap class path not set in conjunction with -source 1.7
external/conscrypt/src/openjdk/java/org/conscrypt/Platform.java:39: warning: AlgorithmId is internal proprietary API and may be removed in a future release
import sun.security.x509.AlgorithmId;
^
external/conscrypt/src/openjdk/java/org/conscrypt/Platform.java:243: warning: AlgorithmId is internal proprietary API and may be removed in a future release
return AlgorithmId.get(oid).getName();
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
[ 0% 18/21275] host Java: signapk (out/host/common/obj/JAVA_LIBRARIES/signapk_intermediates/classes)
warning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
[ 0% 73/21275] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex
Failed: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
GC overhead limit exceeded
Try increasing heap size with java option '-Xmx<size>'
Warning: This may have produced partial or corrupted output.
ninja: build stopped: subcommand Failed.
make: *** [ninja_wrapper] Error 1
#### make Failed to build some targets (14:09 (mm:ss)) ####
eddy@eddy-OptiPlex-390:~/WORKING_DIRECTORY$
任何人都可以告诉我为什么编译失败了?
解决方法:
我有同样的问题.所以我试图将JACK_SERVER_VM_ARGUMENTS设置为包含-Xmx = 4g,但是当再次构建时,日志输出显示启动时不包含此内容. Dunno为什么,似乎env vars没有正确传递给构建脚本.
解
在开始干净的android构建之前,将JACK_SERVER_VM_ARGUMENTS设置为包括-Xmx = 4g,然后手动停止并启动jack服务器.鉴于您位于AOSP的主要源代码树中,请执行以下操作:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
对于cm你可以使用
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
jack-admin kill-server && jack-admin start-server
这解决了我的问题.
Android Studio中解决jar包重复依赖导致的代码编译错误
在原本的代码中已经使用了OKHTTP和rxjava,然后今天依赖retrofit的时候一直报错
Program type already present: okhttp3.internal.ws.RealWebSocket$1.class
说是我重复添加了OKHTTP的包,但其实我直接把OKHTTP的依赖注释掉都没用,只要依赖retrofit相关的就一定报这个错
网上推荐添加以下配置,但我尝试后无效,你们可以试试
configurations.all {
// OkHttp 3.5.0+ includes the websockets API, so we need this to prevent a conflict
exclude module: ''okhttp-ws''
}
最后我在这里https://github.com/facebook/react-native/issues/12646找到一个答案,catch成功
解决方法如下:
因为是okhttp3.5.0之后的版本才加入的okhttp-ws,所以把版本强制控制在3.5.0以下:
configurations.all {
resolutionStrategy.force ''com.squareup.okhttp3:okhttp:3.4.1''
}
重新build,代码不再报错
-------------------------------------emm,以下是我第二天的打脸续集----------------------------------------
昨天直接使用强制控制版本之后以为就没问题了,今天把retrofit的相关代码写了,运行起来才发现3.5.0以下的有个okhttp.ws里的方法找不到,又是各种方法一通试,还是不行,直到在一篇博客上看到一点曙光,照方法执行后,解决了问题(这次是真的解决了)
首先在log信息中找到你重复的地方,是哪个类或包重复了,比如我昨天讲的自己是okhttp里的RealWebSocket类重复,那么在studio中anywhere搜索(快捷键->双击shift)RealWebSocket
看到两个重复的RealWebSocket类,可以直接看到它的目录地址
然后想到自己昨天刚添加的一堆retrofit相关依赖
implementation ''com.squareup.retrofit2:retrofit:2.5.0''
implementation ''com.squareup.retrofit2:converter-gson:2.5.0''
implementation ''com.squareup.retrofit2:adapter-rxjava2:2.5.0''
OK,现在就算是找到问题根源(其实一直都很明白问题就在这儿 哈哈哈)
接下来很简单:
在AS中,选择以project显示项目,找到最下面的External Libraries
然后找到相对应的类库,如图依次点开之后发现了一个pom.xml:
这里面就是关于这个jar的一些配置文件,点开之后找到你重复包的groupID复制下来:
然后到build.gradle里,找到那个依赖,添加{exclude group: ''
com.squareup.okhttp3''}
到此问题就解决了,如果你有多个重复依赖的话,就按上面的方法一个个去重。
亲亲,这边建议您有其他jar包重复的问题也可以尝试用这个方法解决呢
android 源代码编译出错
target Executable: webcore_test (out/target/product/generic/obj/EXECUTABLES/webcore_test_intermediates/LINKED/webcore_test) prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/generic/obj/EXECUTABLES/webcore_test_intermediates/main.o: in function main:external/webkit/Source/WebKit/android/benchmark/main.cpp:64: error: undefined reference to ''android::benchmark(char const*, int, int, int)'' collect2: ld returned 1 exit status make: *** [out/target/product/generic/obj/EXECUTABLES/webcore_test_intermediates/LINKED/webcore_test] Error 1
一直被卡在这里
android反编译之获得java源代码
上篇讲了如何反编译获得res下的资源配置文件,这篇说说如何反编译java源代码。
环境:win7
步骤:
1,下载工具包
dex2jar-0.0.9.13--反编译工具--http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.13.zip&can=2&q=
jd-gui-0.3.5.windows.zip--反编译后的文件查看器--http://java.decompiler.free.fr/?q=jdgui
分别解压。
2,将源apk的后缀名修改.jar并解压,得到其中的classes.dex文件,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.13文件夹
在命令行下定位到dex2jar.bat所在目录 (开始>运行>cmd>cd c:\dex2jar-0.0.9.13)
运行 :dex2jar.bat classes.dex
将生成 classes_dex2jar.jar
接下来就可以通过jdgui下的jd-gui.exe程序打开生成的jar包看到java代码了。
Android源代码 之 下载源代码
Android源代码存储在Google的Git 仓库里。所以下载Android源代码其实是执行一些Git的操作。
1.下载Repo(假设Android源代码的文件夹是~/AndroidSource,其子文件夹为tool,将repo下载到tool中)
Repo是一个python脚本,一个基于Git的仓库管理工具,使用Repo可以简化下载源代码的工作。
下行命令将repo下载当前目录,名字为 repo。(可以直接在此处下载repo文件:http://download.csdn.net/detail/u013647453/7869509)
$curl https://storage.googleapis.com/git-repo-downloads/repo > ~/AndroidSource/tool/repo
下行命令将repo设置为可执行。
$chmod a+x ~/AndroidSource/tool/repo
将repo复制到/usr/local/bin中,可以方便的使用repo命令。
$sudo cp ~/AndroidSource/tool/repo /usr/local/bin
2.初始化repo
进入AndroidSource
$ cd ~/AndroidSource
初始化master分支:
$ repo init -u https://android.googlesource.com/platform/manifest
或者选择其他分支:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
(源代码分支列表见:http://blog.csdn.net/u013647453/article/details/45516225)
初始化成功后会提示Repo is initialized in your working directory.
3.下载源码
$ repo sync
版权声明:本文为博主原创文章,未经博主允许不得转载。
今天关于Android源代码编译错误:“尝试使用java选项增加堆大小’-Xmx’”和无法使用javac的分享就到这里,希望大家有所收获,若想了解更多关于Android Studio中解决jar包重复依赖导致的代码编译错误、android 源代码编译出错、android反编译之获得java源代码、Android源代码 之 下载源代码等相关知识,可以在本站进行查询。
本文标签: