一、.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);
}