android 开发遇到的问题总结--不定期更新

原创 2016年08月31日 10:42:29

一、.9图片在eclipse中正常,android studio中异常

Error:Execution failed for task’:app:mergeDebugResources’. 
Crunching Cruncher image.9.png failed, see logs 

原因:

.9图片不标准,在eclipse没有android studio中严格被检测出错

解决:

用android studio 打开.9图片重新画线

.9图片规则:

由于 .9 图的上边界和左边界的划线是负责拉伸扩展的,
而下边界和右边界划线则是内容区域,
所以 .9 图不允许右侧和下边界有两条划线,
而左边界和上边界则没有问题。

二、android 5.0之后toolbar阴影怎么去除

解决:

activity中添加代码 getSupportActionBar().setElevation(0);

三、利用android studio 开发Cocos2d-x

1.创建HelloWorld项目

解压下载的文件xxx
进入到目录xxx/tools/cocos2d-console/bin/cocos.py
打开终端运行cocos.py脚本创建文件

./cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop
或者
python cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop

2.进入创建的项目的 proj.android-studio目录

cd proj.android-studio

执行

xxx/tools/cocos2d-console/bin/cocos compile -p android --android-studio

等待编译成功
将proj.android-studio 导入到android studio 就可以了

3.执行过程中会出现问题,需要添加sdk,jdk,ndk的环境变量

$cd ~
$open .bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
export ANDROID_SDK_ROOT=/Users/mangues/Library/Android/sdk
export ANDROID_JAVA_HOME=${JAVA_HOME}
export NDK_ROOT=//Users/mangues/Library/Android/sdk/ndk-bundle
PATH=~/bin:$PATH

export PATH=${PATH}:${JAVA_HOME}:${ANDROID_SDK_ROOT}:${NDK_ROOT}:${ANDROID_SDK_ROOT}/tools:${ANDROID_SDK_ROOT}/platform-tools

4.如果使用Genymotion 运行helloword程序会出现

 java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.coco2dx.org-2/lib/arm/libMyGame.so" has unexpected e_machine: 40
                      at java.lang.Runtime.loadLibrary(Runtime.java:372)
                      at java.lang.System.loadLibrary(System.java:1076)
                      at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:248)
                      at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:264)

原因:

因为genymotion用的是virtualbox来模拟android设备,所以android系统的架构应该是x86而不是arm,因此,我们的jni的配置应该作相应的改变,这个改变不会太大,但是所有的cocos链接库都要重新编译为支持x86的版本

解决:

按照http://blog.csdn.net/c860_zy/article/details/21410339

安装上面方法 并没有在android studio上解决,只能在手机上运行了,希望解决的朋友告知一下

四、android源码编译问题

5.1 Jack “Out of memory error”

错误日志:

Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.

增加Java虚拟机的-Xmx大小,即设置一个较大的堆内存上限。

可以修改Jack的配置文件prebuilts/sdk/tools/jack-admin。
这时一个管理Jack的shell脚本,找到start-server函数,直接修改其启动参数,由原来的

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"

改为

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
1

此时Jack服务器仍然在后台执行,所以我们需要将其停止,然后重启启动(make会自动启动Jack服务器)才能使得修改后的参数生效。

我们执行下面的命令

$ ./prebuilts/sdk/tools/jack-admin stop-server

然后我们重新执行make -jN命令(N是你前边设置的并行任务数量)开始编译。

5.2 SecureTransport Unsupported curl

Jack server failed to (re)start, see Jack server log Unsupported curl, please use a curl not based on SecureTransport Unsupported curl, please use a curl not based on SecureTransport ninja: build stopped: subcommand failed. make: *** [ninja.intermediate] Error 1

第一种方法:使用 Homebrew:

brew install curl --with-openssl
export PATH=$(brew --prefix curl)/bin:$PATH
caffeinate make -j4

第二种方法:

检测你的curl版本
$ /usr/bin/curl --version

curl 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets 

output include SecureTransport错误 你需要安装openssl编译的curl
从下面地址下载curl:
http://curl.haxx.se/download.html
然后编译:
./configure --prefix=/usr/local/curl --with-ssl=/usr/local/Cellar/openssl/1.0.2d_1

接着增加环境变量到 .bash_profile
export PATH="/usr/local/curl/bin:$PATH"

打开新的终端 检测下curl版本:
$ curl --version
curl 7.46.0 (x86_64-apple-darwin15.2.0) libcurl/7.46.0 OpenSSL/1.0.2d zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

5.3 /bin/bash: xz: command not found

/bin/bash: xz: command not found
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] Error 1

xz这个解压工具没有安装XZ在MAC系统下的安装与使用

五、android 点击变色问题

1.color选择drawable选择

<item> tag requires a 'drawable' attribute or child tag defining a drawable

以上问题是因为background 用了color选择器,错误代码如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="@color/white_pressed"></item>
    <item android:state_pressed="false" android:color="@color/white"></item>
</selector>

解决: color 修改位 drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@color/white_pressed"></item>
    <item android:state_pressed="false" android:drawable="@color/white"></item>
</selector>

drawable用在背景颜色变化上 background

六、开发问题

1.switch控件,解决利用setChecked 控制switch开关时 自动调用onCheckedChanged方法引起反复调用的问题

  @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        switch (buttonView.getId()) {
            case R.id.sc_key:
                isCheckBoolean = isChecked;
                if (isChecked) {
                    repairePresenter.changeCarState(1, orderBean.getBikeNumber());//调用网络,失败调用onChangeCarStateFailure
                } else {
                    repairePresenter.changeCarState(0, orderBean.getBikeNumber());
                }
                break;
        }
    }
 public void onChangeCarStateFailure(String message) {
        scKey.setOnCheckedChangeListener(null);  //反注册,解决代码自动修改状态 引起的onCheckedChanged调用
        isCheckBoolean = !isCheckBoolean;
        scKey.setChecked(isCheckBoolean);
        scKey.setOnCheckedChangeListener(this);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android源码问题集锦

sdfsdf
  • hjq842382134
  • hjq842382134
  • 2016年05月26日 14:46
  • 2351

解决:编译CM14.1 提示Jack “Out of memory error”错误

Android 7.1编译到33%时出现JDK内存溢出的错误: Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfc...
  • zhanqq2012
  • zhanqq2012
  • 2017年03月20日 02:54
  • 613

mac 下载编译Android源码

mac系统 Android studio编译查看源码
  • lishuiyuntian
  • lishuiyuntian
  • 2017年05月10日 14:21
  • 992

编译android源码时,jack server 出现out of memory error 错误的解决方法

编译android源码时,jack server 出现out of memory error 错误的解决方法: 问题现象如下: 问题的解决方案如下,共两步: Step1:修改jack serv...
  • coder_jack
  • coder_jack
  • 2016年11月25日 09:03
  • 2691

高通平台编译常见错误(持续更新)

1,Jack “Out of memory error” 错误日志: Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecf...
  • u010586698
  • u010586698
  • 2017年02月15日 19:57
  • 211

Android7.0 JACK编译器不支持多用户同时编译的问题的解决

Android7.0(也就是Android N)上默认使用JACK编译器而不再使用openjdk了,但发现JACK不是很好用,比如最大的一个问题就是,同一台linux服务器上不允许不同用户同时进行an...
  • lizekun2010
  • lizekun2010
  • 2016年09月14日 10:29
  • 31619

打造自己的Android源码学习环境之五:编译Android源代码

打造自己的Android源码学习环境之五:编译Android源代码下载android源代码之后,可以开始编译了。0. 编译Android源码0.1 设置环境当前目录是执行repo init时所在的目录...
  • u013553529
  • u013553529
  • 2017年02月05日 00:42
  • 7586

Ubuntu14.04 Android7.0 编译 Out of memory error

1.安装openjdk 1.8 14.04的版本无法直接安装openjdk 1.8  sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get u...
  • Aaron121314
  • Aaron121314
  • 2017年05月09日 10:33
  • 474

Android项目开发总结(二)-- 架构篇

非常有价值的项目架构经验总结: 架构因人而异,不同的架构师大多会有不同的看法;架构也因项目而异,不同的项目需求不同,相应的架构也会不同。然而,有些东西还是通用的,是所有架构师都需要考虑的,也...
  • u014011112
  • u014011112
  • 2016年04月15日 00:05
  • 1124

Android开发工作总结与经验

1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍.      2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来.    ...
  • he90227
  • he90227
  • 2014年08月07日 17:35
  • 2003
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 开发遇到的问题总结--不定期更新
举报原因:
原因补充:

(最多只允许输入30个字)