Android之开发杂记(一)

时间:2022-10-25 13:36:28

1、cygwin环境变量设置

可在Cygwin.bat 中设置

set NDK_ROOT=P:/android/android-ndk-r8e

或者在home\Administrator\.bash_profile中设置

NDK_ROOT=/cygdrive/p/android/android-ndk-r8e
export NDK_ROOT

或者在运行程序前设置(绿色方式)

setlocal enabledelayedexpansion
set NDK_ROOT=%cd%\android-ndk-r8e
start %cd%\adt-bundle-windows-x86-20130522\eclipse\eclipse.exe

NDK与eclipse在同一级目录下。

2、Android 属性相关

<application android:icon="@drawable/icon"//应用安装后桌面显示的图标

android:label="@string/app_name">

<activity android:name=".FormulaStudy" android:theme="@android:style/Theme.NoTitleBar" //无标题
android:screenOrientation="sensorLandscape" //只允许横屏切换
android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> //第一个Activity
</intent-filter>
</activity>
<uses-library android:name="com.noahedu"/>

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10"/>
<uses-permission android:name="com.noahedu.permission.AWARD_SCORE"/>

</application>

3、Shell多行注释

: :||:<<\COMMENTS

注释内容

COMMENTS

4、SourceInsight配置

AStyle格式化工具: 在Command增加AStyle,在Run填写"~\AStyle.exe" --style=linux -s4 -S -N -L -m0 -M40 --suffix=none --convert-tabs %f,再配置快捷键

TabSiPlus外挂式的文件标签,下载后运行后再执行sourceinsight主程序

3、定时操作

Handler mHandler = new Handler();

mHandler.postDelayed(new Runnable()
{
@Override
public void run()
{
}
}, 3000);

4、TagSoup 是一个Java开发符合SAX的HTML解析器

5、android-ndk-r8e/build/gmsl/__gmsl:512: *** non-numeric second argument to `wordlist' function: ''.

将AndroidManifest.xml文件先移动到其他地方,编译成功后再mv回来,这样操作果然成功。

6、

程序主动触发系统回收资源
System.runFinalization();
System.gc();
进程真正退出
System.exit(0);

1.不需要后台运行的app需在退出时调用上面的代码,以便系统回收资源和进程真正退出
2.app运行过程中也可以在合适的时候主动触发系统回收资源

基本上是Activity退到后台时加入以下一段代码处理
if (isTaskRoot()) {
System.runFinalization();
System.gc();
System.exit(0);
}

7、退出所有Activity的方法

在BaseActivity类中

private static LinkedList<Activity> activityList = new LinkedList<Activity>();

在onCreate中activityList.add(this);每次进入新的Activity将this指针压入链表,

重写onDestroy()方法移除相应的Activity,activityList.remove(this);

退出所有的Activity时,只要调用finish();方法,并移除所有的Activity就可以了。

8、android系统jni示例

public class ImageDecoder {
static{
System.loadLibrary("mathappliedprodec");
}
public native boolean decode(String path, Bitmap bitmap, int imageType);
public native boolean encode(String path, Bitmap bitmap, int imageType);
}

#include <jni.h>

#ifndef _Included_com_noahedu_dataparser_ImageDecoder
#define _Included_com_noahedu_dataparser_ImageDecoder
#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT jboolean JNICALL Java_com_noahedu_dataparser_ImageDecoder_decode
(JNIEnv *, jobject, jstring, jobject, jint);
JNIEXPORT jboolean JNICALL Java_com_noahedu_dataparser_ImageDecoder_encode
(JNIEnv *, jobject, jstring, jobject, jint);

#ifdef __cplusplus
}
#endif
#endif

注意函数名称命名方式。

java|包名|类名称|函数名称

Java_com_noahedu_dataparser_ImageDecoder_decode

9、jni调试

//在C工程、android工程 调试切换
#ifdef ANDROID
#include <android/log.h>
#define LOG_TAG "mathapplied"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#else
#define LOGI(...) printf(__VA_ARGS__);
#endif

10、jni杂记

jstring path

const char *file = (*env)->GetStringUTFChars(env, path, NULL);

(*env)->ReleaseStringUTFChars(env, path, file);

11、取消代码混淆编译

LOCAL_PROGUARD_ENABLED := disabled

12、使用jar包名称区分大小写

<uses-library
android:name="PenWriterLib"
android:required="false" />

13、listview背景黑块问题

android:cacheColorHint="#00000000"

12、在android程序中,如何将LogCat上的日志输出到文件?

LogCat存储在circular memory buffers中。

(1)、可以通过命令来导出Log:

引用
adb logcat -d > logcat.txt

详细参考 
http://developer.android.com/tools/help/adb.html#logcat

(2)、在程序中获取Log的方法:

引用
<uses-permission android:name="android.permission.READ_LOGS" />
  1. public class LogTest extends Activity {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. try {
  7. Process process = Runtime.getRuntime().exec("logcat -d");
  8. BufferedReader bufferedReader = new BufferedReader(
  9. new InputStreamReader(process.getInputStream()));
  10. StringBuilder log=new StringBuilder();
  11. String line;
  12. while ((line = bufferedReader.readLine()) != null) {
  13. log.append(line);
  14. }
  15. TextView tv = (TextView)findViewById(R.id.textView1);
  16. tv.setText(log.toString());
  17. } catch (IOException e) {
  18. }
  19. }
  20. }

详细参考 
http://www.helloandroid.com/tutorials/reading-logs-programatically

Android之开发杂记(一)的更多相关文章

  1. Android之开发杂记(二)

    1.android 4.0 以后 高版本没有虚拟菜单键

  2. Android之开发杂记(三)

    一.popup 弹出框 在onCreate中创建时异常 Unable to add window -- token null is not valid; is your activity runnin ...

  3. Android N开发 你需要知道的一切

    title: Android N开发 你需要知道的一切 tags: Android N,Android7.0,Android --- 转载请注明出处:http://www.cnblogs.com/yi ...

  4. Android游戏开发实践&lpar;1&rpar;之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  5. Android游戏开发实践&lpar;1&rpar;之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  6. Android游戏开发实践&lpar;1&rpar;之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  7. 【转】Android 底层开发的几点

    我干了3年Android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径.根据前辈的经验,Android底层完全入门需要两年. 先说下我的入门过程:第零步,下载源码,我下的 ...

  8. 《Android NFC 开发实战详解 》简介&plus;源码&plus;样章&plus;勘误ING

    <Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th  2014 Email:skyseraph00@163.com 更多精彩请直接 ...

  9. Android安全开发之安全使用HTTPS

    Android安全开发之安全使用HTTPS 1.HTTPS简介 阿里聚安全的应用漏洞扫描器中有证书弱校验.主机名弱校验.webview未校验证书的检测项,这些检测项是针对APP采用HTTPS通信时容易 ...

随机推荐

  1. zend studio面板功能

    不小心把zend界面右边的显示类中各个方法的窗口关掉了,如何打开呢: 法一:点击Windows菜单,选择show view项,选择outline即可: 法二:点击Windows菜单,选择Reset P ...

  2. 排序系列 之 直接插入排序算法 —— Java实现

    直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的 ...

  3. urlencode

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%.urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原 ...

  4. JBOSS最大连接数配置和jvm内存配置

    一.调整JBOSS最大连接数. 配置deploy/jboss-web.deployer/server.xml文件 .       <Connector         port="80 ...

  5. SharePoint 2010 隐藏快速启动栏之使用内容编辑器webpart

    SharePoint 2010 自带的webpart里有一个叫内容编辑,在媒体和内容分类里面: 将其添加到页面后效果: 点击用于添加新内容,此时注意Ribbon菜单中的变化: 这里可以看到,你可以插入 ...

  6. mac终端下svn常用命令

    svn基本的操作流程就是: 你刚刚进入一个新的公司,让你接手一个正在进行的项目,你打开终端写下了:svn co svn://192.168.1.1/pro/domain 然后就可以在当前目录里面找到一 ...

  7. pandas&period;DataFrame学习系列1——定义及属性

    定义: DataFrame是二维的.大小可变的.成分混合的.具有标签化坐标轴(行和列)的表数据结构.基于行和列标签进行计算.可以被看作是为序列对象(Series)提供的类似字典的一个容器,是panda ...

  8. Redis 配置内容总结

    命令 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. (1)config get config_setting_ ...

  9. fwrite&lpar;&rpar;中参数含义——size和count经常用搞反

    函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);   注意:这个函数以二进制形式对文件进 ...

  10. 【经验总结】 fisheye 3&period;1&period;5 安装、破解全过程 图文教程(2&period;0以上版本均可成功!)

    声明:此破解仅为个人娱乐,如果你有钱,请支持正版! 重要说明,只要把fisheye先关掉即可,然后执行下面的破解步骤,一样可以破解!本人已测试通过. 一.安装.破解fisheye最新版3.1.5 所需 ...