2015年11月22日日曜日

Android Studio の build でエラーが出たときの対処

Android Studio でアプリの開発を行っていますが、APKファイルを作成するために「Generate Signed APK」を実行したところ building APK でエラーがでたというメッセージが出力され APKファイルが作成されませんでした。

build.gradle ファイルに以下のように記述をしたところ、build は終了し、APKファイルが作成されました。


android{

    lintOptions{
          checkReleaseBuilds false
          abortOnError false
    }
}

ただし、この記述をしないでソースを修正したほうがよいのかなとも思います。


2015年11月18日水曜日

Java のサンプル



import java.io.File;
import java.util.Stack;
import java.util.StringTokenizer;
public class Sample {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println(splitbyslash("/hello/world/today/sample.mdb"));
System.out.println(get_folder_name("/home/komo2/Dropbox/doc/mdb2/sample.mdb"));
}
public static int splitbyslash(String line){
Stack<String> mDirectorys = new Stack<String>();
StringTokenizer token = new StringTokenizer(line,"/");
String str_tmp = "/";
mDirectorys.push(str_tmp);
System.out.println(str_tmp);
while(token.hasMoreTokens()){
str_tmp = str_tmp + token.nextToken() + "/";
mDirectorys.push(str_tmp);
System.out.println(str_tmp);
}
System.out.println("-------");
mDirectorys.pop();
System.out.println(mDirectorys.pop());
System.out.println("-------");
while(mDirectorys.size()>0){
System.out.println(mDirectorys.pop());
}
return line.length();
}
public static String get_folder_name(String line){
Stack<String> mDirectorys = new Stack<String>();
StringTokenizer token = new StringTokenizer(line,"/");
String str_tmp = "/";
mDirectorys.push(str_tmp);
while(token.hasMoreTokens()){
str_tmp = str_tmp + token.nextToken() + "/";
mDirectorys.push(str_tmp);
}
String folder_name;
while(true){
folder_name =mDirectorys.pop();
File folder0 = new File(folder_name);
if(folder0.isDirectory()){
return folder_name;
}
folder0=null;
}
}
}
view raw Sample.java hosted with ❤ by GitHub
ファイルの絶対パスからフォルダー名を取り出すファンクションです。

https://gist.github.com/68d2648e6c3f4634938e

2015年11月15日日曜日

Ubuntu 15.10 への Java のインストール(jdkのインストール)

今年の夏に購入した ASUS社のX552WというノートパソコンではUbuntu 15.10 が使用できるようにしてあります。このノートパソコンでAndroid Studioを動作させるために Java のJDK をインストールすることにしました。

以下のコマンドを入力しました。

sudo apt-get install openjdk-7-jdk


Linux用のAndroid Studio をダウンロードして 解凍したのちに、android-studio/bin の配下の studio.sh を実行しました。

しかしながら以下のメッセージが出力されてしまいました。

Unable to run mksdcard SDK tool


どうやら、X552Wというノートパソコンで使用されているCPUはAMDの64bitのものであるためのようです。
そこで以下のようにコマンド入力しました。
sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6


これによって、Android Studio は動作するようになりましたが以下のようなメッセージが表示されました。

System Health
OpenJDK shows intermittent performance and UI issues.We recommend using the Oracle JRE/JDK

jackcess のサンプル(テーブルの削除)

Jackcess を使ったサンプルです。データベース内の指定したテーブルの削除を行います。


import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.healthmarketscience.jackcess.Cursor;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Table;
public class DeleteTable {
public static void main(String[] args) {
String db_name = "/home/xxxx/Dropbox/doc/mdb/jack.mdb";
String table_name = "sample_table0";
File file = new File(db_name);
Database db=null;
try {
db = DatabaseBuilder.open(file);
Table tbl=db.getSystemTable("MSysObjects");
Cursor crsr = tbl.getDefaultCursor();
Map<String,Object> findCriteria = new HashMap<String,Object>();
findCriteria.put("Name",table_name);
findCriteria.put("Type",(short)1);
if(crsr.findFirstRow(findCriteria)){
tbl.deleteRow(crsr.getCurrentRow());
System.out.println("table deleted:" + table_name);
}else{
System.out.println("there is no table:" + table_name);
}
db.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}catch(Exception ee){
System.out.println(ee.getMessage());
}
}
}
https://gist.github.com/640282f9d04c2bc9b8c2

2015年11月14日土曜日

jackcess のサンプル(テーブルの作成)




https://gist.github.com/5e4d8e976aa2ae3cc92d
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import com.healthmarketscience.jackcess.ColumnBuilder;
import com.healthmarketscience.jackcess.DataType;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Table;
import com.healthmarketscience.jackcess.TableBuilder;
public class CreateTable {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String db_name = "/home/xxxx/Dropbox/doc/mdb/jack.mdb";
String table_name = "sample_table0";
File file = new File(db_name);
Database db=null;
try {
db = DatabaseBuilder.open(file);
Collection<ColumnBuilder> columnbuilders = new ArrayList<ColumnBuilder>();
// columnbuilders.setL;
columnbuilders.add(new ColumnBuilder("col1",DataType.TEXT).setLength(100));
columnbuilders.add(new ColumnBuilder("col2",DataType.TEXT).setLength(510));
columnbuilders.add(new ColumnBuilder("col3",DataType.BOOLEAN));
columnbuilders.add(new ColumnBuilder("col4",DataType.BYTE));
columnbuilders.add(new ColumnBuilder("col5",DataType.DOUBLE));
columnbuilders.add(new ColumnBuilder("col6",DataType.LONG));
columnbuilders.add(new ColumnBuilder("col7",DataType.LONG).setAutoNumber(true));
columnbuilders.add(new ColumnBuilder("col8",DataType.MEMO));
columnbuilders.add(new ColumnBuilder("col9",DataType.MONEY));
columnbuilders.add(new ColumnBuilder("col10",DataType.SHORT_DATE_TIME));
columnbuilders.add(new ColumnBuilder("col11",DataType.NUMERIC));
columnbuilders.add(new ColumnBuilder("col12",DataType.BINARY));
Table table0 = new TableBuilder(table_name)
.addColumns(columnbuilders)
.toTable(db);
db.close();
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println(e.getMessage());
}catch(Exception ee){
System.out.println(ee.getMessage());
}
}
}

jackcess のサンプル(データベースの作成)


jackcess を使ってデータベースを作成して、テーブルを作成するサンプルです。

import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.sql.Types;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;
import com.healthmarketscience.jackcess.ColumnBuilder;
import com.healthmarketscience.jackcess.DataType;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.Table;
import com.healthmarketscience.jackcess.TableBuilder;
public class Database0 {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
try {
// mdb ファイルの作成
Database db = new DatabaseBuilder(new File("/home/xxxx/Dropbox/doc/mdb/jack.mdb"))
.setFileFormat(Database.FileFormat.V2000)
.create();
// テーブルを作成
Table table = new TableBuilder("Test")
.addColumn(new ColumnBuilder("ID", DataType.LONG)
.setAutoNumber(true))
.addColumn(new ColumnBuilder("Name", DataType.TEXT))
.addColumn(new ColumnBuilder("Salary", DataType.MONEY))
.addColumn(new ColumnBuilder("StartDate", DataType.SHORT_DATE_TIME))
.toTable(db);
// データをテーブルに入力
BigDecimal money_value=new BigDecimal("123000.0");
table.addRow(1, "john");
table.addRow(2, "taro",12300.0);
table.addRow(3, "mary",money_value,new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-14"));
// 別のテーブルも作成
Table newTable = new TableBuilder("NewTable")
.addColumn(
new ColumnBuilder("col1").setSQLType(Types.INTEGER)
.toColumn())
.addColumn(
new ColumnBuilder("col2").setSQLType(Types.VARCHAR)
.toColumn())
.addColumn(
new ColumnBuilder("col3").setSQLType(Types.CHAR)
.toColumn()).toTable(db);
// データをテーブルに入力
newTable.addRow(1, "bar","thaa");
newTable.addRow(2, "foo","wer");
// データの取得
for (Map<String, Object> map : newTable) {
System.out.println(
"col1 : " + map.get("col1") +
" col2 : " + map.get("col2") +
" col3 : " + map.get("col3")
);
}
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
view raw Database0 hosted with ❤ by GitHub


https://gist.github.com/8d6d37a69f883f04e430

2015年11月13日金曜日

jackcess のサンプル(テーブルのリスト)

jackcess を使ってAccessデータベースのテーブルのリストを出力するサンプルです。UNIX上で動作するものです。






import java.io.File;
import java.util.List;
import java.util.Set;

import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;


public class TableList {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

       
        String db_name="/home/xxxx/Dropbox/doc/mdb/sample.mdb";
       
        try{
            Database db = DatabaseBuilder.open(new File(db_name));
           
            Set<String> tablenames= db.getTableNames();
           
           
           
            for(String tablename : tablenames){
               
                System.out.println(tablename);
            }
           
           
        }catch(Exception e){
            System.out.println(e.toString());
        //    System.out.println(e.getMessage());
           
        }
       

       
       
    }

}

jackcess のサンプル(クエリーのリスト)

jackcess を使ったjava のサンプルのソースコードです。
データベースの中にあるクエリーの名前を出力しています。








import java.io.File;
import java.util.List;

import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.query.Query;


public class QueryTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

       
        String db_name="/home/xxxx/Dropbox/doc/mdb/sample.mdb";
       
        try{
            Database db = DatabaseBuilder.open(new File(db_name));
           
            List<Query> queris = db.getQueries();
           
           
           
            for(Query query : queris){
               
                System.out.println(query.getName());
            }
           
           
        }catch(Exception e){
            System.out.println(e.toString());
        //    System.out.println(e.getMessage());
           
        }
       
    }

}

2015年11月11日水曜日

jackcess のサンプル

jackcess を使ったサンプルのコードです。
データベース名とテーブル名を指定してフィールド名(columnの名前)を出力するものです。
jackcess を使ったサンプルは以前にも紹介させていただいたことがあります。




import java.io.File;
import java.util.List;

import com.healthmarketscience.jackcess.Column;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Table;


public class Jack {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
       
        String db_name="/home/xxxx/Dropbox/doc/mdb/sample.mdb";
        String table_name="sample_table";
       
        try{
            Database db = DatabaseBuilder.open(new File(db_name));
            db.setColumnOrder(Table.ColumnOrder.DISPLAY);
            Table table = db.getTable(table_name);
           
            List<? extends Column> Columns = table.getColumns();
           
            for(Column column : Columns){
               
                System.out.println(column.getName());
            }
           
           
        }catch(Exception e){
            System.out.println(e.toString());
           
           
        }

    }

}