当前位置:  编程技术>移动开发
本页文章导读:
    ▪ANT封装干净普通大众版本        ANT打包干净普通大众版本 前一篇文章,目录比较乱,且是think的文章摘要过来的,下面是我在自己的项目,没有其他模块。 build.xml <project default="main" basedir="."> <property file="../keystor.........
    ▪ 字符装置异步通知        字符设备异步通知driver: #include <linux/kernel.h> #include <linux/module.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/device.h> #include <linux/syscalls.h> #include <linux/.........
    ▪ 解决 GridView 中 Button按钮事件冲突有关问题       解决 GridView 中 Button按钮事件冲突问题在Button XML中增加 android:focusable="false" ......

[1]ANT封装干净普通大众版本
    来源: 互联网  发布时间: 2014-02-18
ANT打包干净普通大众版本


前一篇文章,目录比较乱,且是think的文章摘要过来的,下面是我在自己的项目,没有其他模块。

build.xml

<project default="main" basedir=".">

    <property file="../keystore.properties" />

    <property name="apk-name" value="product" />
    <property name="apk-version" value="latest" />
    <property name="apk-market" value="dev" />
    <property name="keystore" value="Reader.keystore" />
    <property name="storepass"  value="***"/>
    <property name="keypass" value="***"/>
    <property name="alias" value="chineseallreader"/>
    
    <property name="android-jar" value="/Users/mac/Desktop/androidsdk/android-sdk-macosx/platforms/android-8/android.jar" />

    <target name="init">
        <echo>start initing ... </echo>

        <mkdir dir="gen" />
        <delete>
            <fileset dir="gen"></fileset>
        </delete>
        
        <mkdir dir="bin/classes" />
        <delete>
            <fileset dir="bin/classes"></fileset>
        </delete>
        
        <mkdir dir="build/${apk-version}" />

        <echo>finish initing. </echo>
    </target>

    <target name="main" depends="init">
        <echo>generating R.java for project to dir gen (using aapt) ... </echo>
        <exec executable="aapt">
            <arg value="package" />
            <arg value="-m" />
            <arg value="-J" />
            <arg value="gen" />
            <arg value="-M" />
            <arg value="AndroidManifest.xml" />
            <arg value="-S" />
            <arg value="res" />
            <arg value="-I" />
            <arg value="${android-jar}" />
            <arg value="--auto-add-overlay" />
        </exec>

        <path id="project.libs">
            <fileset dir="libs">
                <include name="*.jar" />
            </fileset>
        </path>
        <echo>compiling java files to class files (include R.java, library and the third-party jars) ... </echo>
        <javac destdir="bin/classes" bootclasspath="${android-jar}" includeantruntime="on" encoding="utf-8">
            <src path="src" />
            <src path="gen" />
            <classpath refid="project.libs" />
        </javac>

        <echo>packaging class files (include the third-party jars) to calsses.dex ... </echo>
        <exec executable="dx">
            <arg value="--dex" />
            <arg value="--output=bin/classes.dex" />
            <arg value="bin/classes" />
            <arg value="libs" />
        </exec>

        <echo>packaging resource (include res, assets, AndroidManifest.xml, etc.) to res.zip ... </echo>
        <exec executable="aapt">
            <arg value="package" />
            <arg value="-f" />
            <arg value="-M" />
            <arg value="AndroidManifest.xml" />
            <arg value="-S" />
            <arg value="res" />
            <arg value="-A" />
            <arg value="assets" />
            <arg value="-I" />
            <arg value="${android-jar}" />
            <arg value="-F" />
            <arg value="bin/res.zip" />
            <arg value="--auto-add-overlay" />
        </exec>

        <echo>building unsigned.apk ... </echo>
        <exec executable="apkbuilder">
            <arg value="bin/unsigned.apk" />
            <arg value="-u" />
            <arg value="-z" />
            <arg value="bin/res.zip" />
            <arg value="-f" />
            <arg value="bin/classes.dex" />
            <arg value="-nf"/>
            <arg value="libs"/>
        </exec>
         

        <echo>signing the unsigned apk to final product apk ... </echo>
        <exec executable="jarsigner">
            <arg value="-keystore" />
            <arg value="${keystore}" />
            <arg value="-storepass" />
	    <arg value="${storepass}" />
            <arg value="-keypass" />
	    <arg value="${keypass}" />
            <arg value="-signedjar" />
            <arg value="build/${apk-version}/${apk-name}_${apk-version}_${apk-market}.apk" />
            <arg value="bin/unsigned.apk" />
	    <arg value="${alias}" />
        </exec>

        <echo>done.</echo>
    </target>
</project>

build.sh

#!/bin/bash
basedir=$(cd "$(dirname "$0")";pwd)
cd $basedir

#============market follow=====by nil===
#androidmarket jiuyao tengxun anzhuowang
#yingyonghui jifengwang youyishichang
#Nduowang mumayi other 
#chineseall  chineseall_wap
#=======================================
markets="androidmarket jiuyao tengxun anzhuowang yingyonghui jifengwang youyishichang Nduowang mumayi other chineseall chineseall_wap"
for market in $markets
do
    echo packaging 17kreader_3.5.3_$market.apk ...
    sed -i  '' "s/\(android:value=\)\"\(.*\)\"\( android:name=\"UMENG_CHANNEL\"\)/\1\"$market\"\3/g" AndroidManifest.xml
    ant -Dapk-name=17kreader -Dapk-version=3.5.3 -Dapk-market=$market
done



    
[2] 字符装置异步通知
    来源: 互联网  发布时间: 2014-02-18
字符设备异步通知

driver:

#include <linux/kernel.h>  
#include <linux/module.h>  
#include <linux/cdev.h>  
#include <linux/fs.h>  
#include <linux/device.h>  
#include <linux/syscalls.h>
 
#include <linux/uaccess.h>  
#include <linux/string.h>  
  
struct fpga_key_dev  
{  
    struct cdev cdev;  
    dev_t devno;  
    char test[20];
    struct class *fpga_key_class; 
	struct fasync_struct *async_queue;

	int message_cdev_open;
};  
  
static int fpga_key_open(struct inode *node, struct file *fd)  
{  
	struct fpga_key_dev *dev;
	
	printk("fpga_key_open()++\n");  

	printk("node->i_cdev = %x\n", (unsigned int)node->i_cdev);
	dev = container_of(node->i_cdev, struct fpga_key_dev, cdev);
	printk("dev->cdev = %x\n", (unsigned int)&dev->cdev);
	printk("dev = %x\n", (unsigned int)dev);
	
	if (!dev->message_cdev_open) {
		dev->message_cdev_open = 1;
		fd->private_data = dev;
	}
	else{
		return -EFAULT;
	}
	
	printk("test[20] = %s\n",dev->test);
	
    printk("fpga_key_open()--\n");  
  
    return 0;  
}   
  
static ssize_t fpga_key_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)  
{  
    char temp_buffer [20];  
    int print_size = 0;  
	struct fpga_key_dev *dev = fd->private_data;
      
    printk("fpga_key_wirte()++\n");  
    if(len > 20)  
        print_size = 20;  
    else  
        print_size = len;  
    printk("print_size = %d; len = %d\n", print_size, len);  
    if(copy_from_user(temp_buffer, buf, print_size))  
        return -EFAULT;  

	if (dev->async_queue)
		kill_fasync(&dev->async_queue, SIGIO, POLL_IN); 
	  
    printk("writing data:%s", temp_buffer);  
      
    printk("fpga_key_wirte()--\n");  
  
    return print_size;  
}  
static ssize_t fpga_key_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr)  
{  
      char *temp_buffer = "Hello fpga_key_read !\n";  
      int print_size = 0;  
        
    printk("fpga_key_read()++\n");  
      
    if(len > strnlen(temp_buffer,20))  
        print_size = strnlen(temp_buffer,20);  
    else  
        print_size = len;  
    printk("print_size = %d; len = %d\n", print_size, len);  
    if(copy_to_user(buf, temp_buffer, print_size))  
        return -EFAULT;  
    printk("%s", temp_buffer);  
    printk("fpga_key_read()--\n");  
  
    return print_size;  
}  

static int fpga_key_fasync(int fd, struct file *filp, int mode)
{
	struct fpga_key_dev		*dev = filp->private_data;

	printk("fpga_key_fasync()++\n");
	
	fasync_helper(fd, filp, mode, &dev->async_queue); 

	printk("fpga_key_fasync()--\n");
	
	return 0;
}

static int fpga_key_release(struct inode *node, struct file *fd)  
{  
	struct fpga_key_dev *dev = fd->private_data;
	
	printk("fpga_key_release()++\n"); 

	dev->message_cdev_open = 0;
	fpga_key_fasync(-1, fd, 0);
	
    printk("fpga_key_release()--\n");  
    return 0;  
} 


struct file_operations meassage_operatons =  
{  
    .owner = THIS_MODULE,  
    .open = fpga_key_open,  
    .write = fpga_key_write,
    .read = fpga_key_read, 
    .fasync = fpga_key_fasync,
    .release = fpga_key_release,  
};  
  
struct fpga_key_dev fpga_key_dev;  
static int __init fpga_key_init(void)  
{  
    struct fpga_key_dev * dev;  
	char * temp_char = "hello world\n";
  
    printk("fpga_key_to_app_init(void)++\n");  
  
    dev = &fpga_key_dev;  
	strcpy(dev->test, temp_char);
	printk("%s",dev->test);
  
    alloc_chrdev_region(&dev->devno, 0, 1, "fpga_key_to_app");  
    //dev->cdev = cdev_alloc();  
    cdev_init(&dev->cdev, &meassage_operatons);  
    cdev_add(&dev->cdev, dev->devno, 1);  
    printk("dev->cdev = %x\n", (unsigned int)&dev->cdev);
	printk("dev = %x\n", (unsigned int)dev);
	
    dev->fpga_key_class = class_create(THIS_MODULE, "fpga_key_class");  
    if(IS_ERR(dev->fpga_key_class)) {  
         printk("Err: failed in creating class./n");  
         return -1;   
     }  
    device_create(dev->fpga_key_class, NULL, dev->devno, NULL, "fpga_key");  
    printk("fpga_key_to_app_init(void)--\n");      
    return 0;  
}  
static void __exit fpga_key_exit(void)  
{  
    struct fpga_key_dev *dev = &fpga_key_dev;  
  
    printk("fpga_key_to_app_exit(void)++\n");  
    device_destroy(dev->fpga_key_class, dev->devno);  
    class_destroy(dev->fpga_key_class);   
    cdev_del(&dev->cdev);  
    unregister_chrdev_region(dev->devno, 1);  
       
    printk("fpga_key_to_app_exit(void)--\n");  
}  
module_init(fpga_key_init);  
module_exit(fpga_key_exit);  
  
MODULE_LICENSE("GPL");  
MODULE_AUTHOR("Driver Monkey");  
MODULE_DESCRIPTION("Test fpga_key to App");  

App code:

#include<stdio.h>  
#include<sys/types.h>  
#include<sys/stat.h>  
#include<fcntl.h>  
#include<sys/select.h>  
#include<unistd.h>  
#include<signal.h>  
#include<string.h>  
  
unsigned int flag = 0;  
  
void sig_handler(int sig)  
{  
  printf("%s\n",__FUNCTION__);  
  flag++;  
}  
int main(void)  
{  
    char r_buf[20];  
    char *w_buf = "hello write!\n";  
    int r_count = 0;  
    int fd;  
    int f_flags;  
    flag++;  
    fd=open("/dev/fpga_key",O_RDWR);  
    if(fd<0)  
    {  
        perror("open");  
        return-1;  
    }  

    signal(SIGIO, sig_handler); 
    fcntl(fd, F_SETOWN, getpid());
    f_flags = fcntl(fd, F_GETFL);
    fcntl(fd, F_SETFL, FASYNC | f_flags); 
	
    while(1)
    {
	    printf("waiting \n"); 
	    sleep(2);
	    if(flag > 3)
		    break;
		printf("flag = %d\n", flag);
		
    	write(fd, w_buf, strlen(w_buf));  
    }       

    close(fd);  
  
    return 0;  
}  




    
[3] 解决 GridView 中 Button按钮事件冲突有关问题
    来源: 互联网  发布时间: 2014-02-18
解决 GridView 中 Button按钮事件冲突问题
在Button XML中增加 android:focusable="false"

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
c/c++ iis7站长之家
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3