我自己遇到的android系列问题汇总
问题:创建虚拟设备界面中,Target下拉框里面无选择项
原因:没有安装AVD
解决:下载android sdk,运行SDK Manage , 选择SDK platform Android 4.0.3 API,install
问题:无法启动AVD(虚拟设备)
原因:我修改注册表更改mydocument路径了,导致eclipse犯傻
解决:将E:\Document\.android目录拷贝到C:\Documents and Settings\Administrator
问题:SDK里面没有sample源码
原因:下载SDK的时候没有选择sample
解决:运行SDK Manage ,选择Sample for SDK API 15点install
问题:读写SD卡失败
原因:没有权限
解决:修改androidManifest.xml
在行<uses-sdk android:minSdkVersion="15" />后增加
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
问题:ndk和java都不能使用socket
原因:没有网络权限
解决:修改修改androidManifest.xml ,增加<uses-permission android:name="android.permission.INTERNET" />
问题:无法打开jni目录里面的cpp文件
原因:没有安装adt插件
解决:下载adt安装
问题:如何使用虚拟机里面的sd卡
解决:cd D:\Java\android-sdk-windows-r10\platform-tools 运行adb
从sd卡拉数据到本地硬盘: adb pull /mnt/sdcard/file.txt C:\
将硬盘文件上传到sd卡: adb push c:\file.txt /mnt/sdcard/
运行shell 可ls 查看文件: adb shell
问题:操作失败提示: more than one device and emulator
原因:你连接了多个设备或虚拟设备
解决:
1,列出所有设备和连接IP运行:adb devices
2,关闭设备连接:adb disconnect 192.168.1.123
3,或指定设备来操作:adb -s emulator-5554 shell
问题:如何安装和重装你的android程序
解决:
1,安装:adb install Demo.apk
2,重新安装:adb install -r Demo.apk
问题:在JNI里面用Logcat
1, cpp文件中:
#include <android/log.h>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,__FILE__,__VA_ARGS__)
代码调用LOGD("hellow");
2,android.mk文件中:
LOCAL_SRC_FILES= 行下面加
LOCAL_LDLIBS := -llog
问题:如何在线程里面用 JNIEnv *env
JNIEnv *env指针不可为多个线程共用,但是java虚拟机的JavaVM指针是整个jvm公用的,我们可以通过JavaVM来得到当前线程的JNIEnv指针.
于是,在第一个线程A中调用:
JavaVM* gs_jvm;
env->GetJavaVM(&gs_jvm);
来获取JavaVM指针.获取了这个指针后,将该JavaVM指针gs_jvm作为全局变量保存起来。在另一个线程B里,调用JNIEnv *env;
JNIEnv *env;
gs_jvm->AttachCurrentThread((void **)&env, NULL);
这里就获得了B这个线程在jvm中的JNIEnv指针env.
jobject可以这样保存
jobject g_obj = (env)->NewGlobalRef(j);