ivy 기반 빌드 프로젝트는 ~/.ivy 디렉토리를 사용한다.
예를 들어, play1 framework는 ~/.ivy/cache 디렉토리에 저장된 의존 lib가 저장된다.
예를 들어, org.apache.httpcomponents.httpcore는 아래와 같이 저장된다.
~/.ivy2/cache/org.apache.httpcomponents/httpcore
$ ls
ivy-4.2.4.xml ivy-4.3.3.xml.original ivy-4.4.4.xml ivydata-4.3.3.properties jars
ivy-4.2.4.xml.original ivy-4.4.1.xml ivy-4.4.4.xml.original ivydata-4.4.1.properties sources
ivy-4.3.3.xml ivy-4.4.1.xml.original ivydata-4.2.4.properties ivydata-4.4.4.properties
디렉토리에는 버전 별 xml 파일, xml.original 파일, jars, sources가 있다.
xml.original 파일은 pom 다음과 같다.
$ cat ivy-4.4.4.xml.original
<?xml version="1.0" encoding="UTF-8"?>
<!--
====================================================================
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
====================================================================
This software consists of voluntary contributions made by many
individuals on behalf of the Apache Software Foundation. For more
information on the Apache Software Foundation, please see
<http://www.apache.org />.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcomponents-core</artifactId>
<version>4.4.4</version>
</parent>
<artifactId>httpcore</artifactId>
<name>Apache HttpCore</name>
<inceptionYear>2005</inceptionYear>
<description>
Apache HttpComponents Core (blocking I/O)
</description>
<url>http://hc.apache.org/httpcomponents-core-ga</url>
<packaging>jar</packaging>
...
ivy는 ivy 기반의 xml로 변경한다.
$ cat ivy-4.4.4.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
<info organisation="org.apache.httpcomponents"
module="httpcore"
revision="4.4.4"
status="release"
publication="20151027021814"
>
<description homepage="http://hc.apache.org/httpcomponents-core-ga">
Apache HttpComponents Core (blocking I/O)
</description>
<m:properties__api.comparison.version>4.4</m:properties__a
...
메타정보는 properties에 정의된다.
$ cat ivydata-4.4.4.properties
#ivy cached data file for org.apache.httpcomponents#httpcore;4.4.4
#Mon Jun 13 22:10:57 KST 2016
artifact\:httpcore\#pom.original\#pom\#-401045955.exists=true
artifact\:httpcore\#jar\#jar\#-2053608617.original=artifact\:httpcore\#jar\#jar\#-2053608617
artifact\:httpcore\#pom.original\#pom\#-401045955.original=artifact\:httpcore\#pom.original\#pom\#-401045955
artifact\:ivy\#ivy\#xml\#-726796163.location=https\://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.pom
artifact\:httpcore\#pom.original\#pom\#-401045955.is-local=false
resolver=mavenCentral
artifact\:ivy\#ivy\#xml\#-726796163.exists=true
artifact\:httpcore\#pom.original\#pom\#-401045955.location=https\://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.pom
artifact\:httpcore\#jar\#jar\#-2053608617.location=https\://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar
artifact\:ivy\#ivy\#xml\#-726796163.is-local=false
artifact\:httpcore\#source\#jar\#-410049307.original=artifact\:httpcore\#source\#jar\#-410049307
artifact\:httpcore\#jar\#jar\#-2053608617.exists=true
artifact\:httpcore\#jar\#jar\#-2053608617.is-local=false
artifact\:ivy\#ivy\#xml\#-726796163.original=artifact\:httpcore\#pom.original\#pom\#-401045955
artifact\:httpcore\#source\#jar\#-410049307.exists=true
artifact\:httpcore\#source\#jar\#-410049307.is-local=false
artifact.resolver=mavenCentral
artifact\:httpcore\#source\#jar\#-410049307.location=https\://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-sources.ja
만약 ivy 컴파일일 실패하면, jars에 jar가 있는지. properties,xml, xml.original 파일이 존재하는지 확인해본다.
참고
ivy 파일 이슈를 해결해도
컴파일 안되면, maven repository 이슈이다.
참고
https://theholyjava.wordpress.com/2011/01/26/using-ivy-with-pom-xml/
Posted by 김용환 '김용환'
gradle 빌드 성능을 높일 수 있다.
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.workers.max=3
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xms128m -Xmx248m
* org.gradle.daemon : 빌드 데몬 떠있도록 설정
* org.gradle.parllel : 병렬 쓰레드 동작
* org.gradle.workers.max : 병렬 쓰레드 개수 제한
* org.gradle.configureondemand : 멀티 프로젝트 모드에서 필요한 부분(on demand)만 컴파일
* org.gradle.jvmargs : 컴파일시 jvm 매개변수 전달 (메모리..)
제일 중요한 것은 gradle 버전업만 해도 성능이 좋아진다. 최근에 출시된 2.13 버전부터 많이 좋아졌다.
참고
https://docs.gradle.org/current/userguide/build_environment.html
http://gradle.org/blog/performance-is-a-feature/
Posted by 김용환 '김용환'
gradle(2.6)에서 maven publish를 사용할 수 있다. (2.6부터 좋아졌다고 해서 2.6 쓰는 중)
출처 :
https://docs.gradle.org/current/userguide/publishing_maven.html
다음 코드를 build.gradle 파일 추가
apply plugin: 'maven-publish'
group = 'com.google.place'
version = '0.1.0-SNAPSHOT'
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
publishing {
repositories {
maven {
credentials {
username "google"
password "samuel"
}
url "http://artifactory.iwilab.com:8088/artifactory/libs-snapshot-local/"
}
}
}
maven url 로 퍼블리싱하려면 다음 명령어를 이용한다.
local repository에 퍼블리싱하려면 다음 명령어를 이용한다.
$ gradle publishToMavenLocal
* 문제가 생기면 debug나 stacktrace 옵션을 추가해서 확인할 수 있다.
gradle publish --debug
gradle publish --stacktrace
Posted by 김용환 '김용환'
http://gradle.org/gradle-download/ 에서 최신 버전 2.6 선택하고 다운로드한다.
압푹 풀면 gradle-2.6 디렉토리를 path에 등록한다.
$ vi ~/.bash_profile
export GRADLE_HOME=/mydev/util/gradle-2.6
export PATH=$PATH:$GRADLE_HOME/bin
다시 설정을 읽는다.
gradle이 정상적으로 실행되는지 확인한다.
$ gradle -v
------------------------------------------------------------
Gradle 2.5
------------------------------------------------------------
Build time: 2015-07-08 07:38:37 UTC
Build number: none
Revision: 093765bccd3ee722ed5310583e5ed140688a8c2b
Groovy: 2.3.10
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_40 (Oracle Corporation 25.40-b25)
OS: Mac OS X 10.9.4 x86_64
Spring 자바 프로젝트 하나 설정한다.

자바 프로젝트 홈 디렉토리에 접근하고, gradlew를 생성한다.
$ gradle wrapper --gradle-version 2.6
:wrapper
BUILD SUCCESSFUL
Total time: 3.996 secs
This build could be faster, please consider using the Gradle Daemon: http://gradle.org/docs/2.5/userguide/gradle_daemon.html
빌드를 진행한다.
idea 설정 파일을 생성한다.
Posted by 김용환 '김용환'
adb로 android 기기 접속 및 기기 확인
$ adb connect ip-주소
connected
$ adb devices
List of devices attached
192.168.219.152:5555 device
adb로 device 연결 해지
adb로 android shell로 이동
기기에 설치된 패키지 목록 읽기 및 삭제
삭제할 때 사용되는 키는 apk 명 뒤에 붙은 이름이 따로 있다. 해당 이름으로 사용한다.
$ adb shell 'pm list packages -f'
package:/data/app/eu.chainfire.stickmount-1.apk=eu.chainfire.stickmount
....
$ adb uninstall eu.chainfire.stickmount
기기에 안드로이드 앱 다운로드 하기
$ adb install eu.chainfire.stickmount
로컬 파일을 안드로이드 기기로 복사 및 확인
$ adb push rotatelogs.c sdcard/
242 KB/s (12435 bytes in 0.050s)
$ adb shell 'ls -al /sdcard/rotatelogs.c'
-rw-rw-r-- root sdcard_rw 12435 2014-08-29 11:11 rotatelogs.c
안드로이기 기기에서 로컬 디렉토리로 복사 및 확인
$ adb pull /sdcard/amazon.sdktester.json .
61 KB/s (1722 bytes in 0.027s)
$ cat amazon.sdktester.json
...
adb reboot를 바로 시작한다.
adb를 이용한 파일/디렉토리 관리 명령 (조회, 삭제, 권한 생성)
$ adb shell 'ls -al /sdcard/'
$ adb shell 'rm /sdcard/rotatelogs.c'
$ adb shell 'mkdir /sdcard/tmp'
$ adb shell 'rm -rf /sdcard/tmp'
$ adb shell 'mkdir /sdcard/x1'
amazon fire tv의 /proc 파일 살펴보기
root@android:/ # cat /proc/version
Linux version 3.4.0-perf-g4c8a266 (e-scm@ip-10-225-169-130) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Wed Jul 8 19:03:32 PDT 2015
root@android:/ # cat /proc/cpuinfo
Processor : ARMv7 Processor rev 0 (v7l)
processor : 0
BogoMIPS : 13.53
processor : 1
BogoMIPS : 13.53
processor : 2
BogoMIPS : 13.53
processor : 3
BogoMIPS : 13.53
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x51
CPU architecture: 7
CPU variant : 0x1
CPU part : 0x06f
CPU revision : 0
Hardware : LAB126 BUELLER
Revision : 0003
Serial : 0000000000000000
root@android:/ # cat /proc/meminfo
MemTotal: 1993512 kB
MemFree: 555700 kB
Buffers: 34484 kB
Cached: 726712 kB
SwapCached: 0 kB
Active: 466156 kB
Inactive: 691884 kB
Active(anon): 396864 kB
Inactive(anon): 416 kB
Active(file): 69292 kB
Inactive(file): 691468 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 1295356 kB
HighFree: 42708 kB
LowTotal: 698156 kB
LowFree: 512992 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 8 kB
Writeback: 0 kB
AnonPages: 396848 kB
Mapped: 153596 kB
Shmem: 456 kB
Slab: 43624 kB
SReclaimable: 17784 kB
SUnreclaim: 25840 kB
KernelStack: 10400 kB
PageTables: 24480 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 996756 kB
Committed_AS: 8870748 kB
VmallocTotal: 245760 kB
VmallocUsed: 86240 kB
VmallocChunk: 37892 kB
root@android:/ # cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
21 sg
29 fb
81 video4linux
86 ch
89 i2c
116 alsa
128 ptm
136 pts
166 ttyACM
180 usb
188 ttyUSB
189 usb_device
216 rfcomm
235 adsprpc-smd
236 ttyGS
237 avtimer
238 user-rc-input
239 BaseRemoteCtl
240 qseecom
241 kgsl
242 dia
243 msm_rotator
244 ttyHSL
245 ttyHS
246 msm_vidc_enc
247 msm_vidc_dec
248 msm_vidc_reg
249 bsg
250 smdpkt
251 smd
252 media
253 rtc
254 msm_sps
Block devices:
1 ramdisk
259 blkext
7 loop
8 sd
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
254 device-mapper
root@android:/ # cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cgroup
nodev tmpfs
nodev debugfs
nodev sockfs
nodev pipefs
nodev anon_inodefs
nodev rpc_pipefs
nodev devpts
ext3
ext2
ext4
squashfs
nodev ramfs
vfat
nodev nfs
nodev nfs4
nodev cifs
fuseblk
nodev fuse
nodev fusectl
nodev oprofilefs
root@android:/ # cat /proc/partitions
major minor #blocks name
7 0 80680 loop0
179 0 7634944 mmcblk0
179 1 8192 mmcblk0p1
179 2 8192 mmcblk0p2
179 3 16384 mmcblk0p3
179 4 128 mmcblk0p4
179 5 256 mmcblk0p5
179 6 512 mmcblk0p6
179 7 512 mmcblk0p7
179 8 512 mmcblk0p8
179 9 1024 mmcblk0p9
179 10 10240 mmcblk0p10
179 11 10240 mmcblk0p11
179 12 32768 mmcblk0p12
179 13 1280 mmcblk0p13
179 14 2752 mmcblk0p14
179 15 6144 mmcblk0p15
179 16 8 mmcblk0p16
179 17 1024 mmcblk0p17
179 18 786432 mmcblk0p18
179 19 786432 mmcblk0p19
179 20 5961878 mmcblk0p20
179 64 4096 mmcblk0boot1
179 32 4096 mmcblk0boot0
root@android:/ # cat /proc/uptime
455.07 851.96
root@android:/ # cat /proc/stat
cpu 15123 2109 8391 84748 21297 1 49 0 0 0
cpu0 5613 933 3758 14937 20100 1 40 0 0 0
cpu1 7520 654 3667 32636 1130 0 5 0 0 0
cpu2 973 297 562 18485 44 0 1 0 0 0
cpu3 1017 225 404 18690 23 0 3 0 0 0
intr 528300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 143908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 0 0 2685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51711 0 0 0 13 14099 0 0 0 0 0 0 0 0 0 82 0 0 0 0 0 0 0 15318 0 0 0 0 0 47946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1364 0 1364 1115 0 0 7 0 0 0 0 0 0 0 0 0 0 0 812 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 1489485
btime 1439852675
processes 4498
프로세스 정보 및 쓰레드 정보 보기
통신 상태 확인하기
시스템 로그 및 안드로이드 로그 확인하기
기타 정보 확인
http://developer.android.com/tools/help/adb.html
Posted by 김용환 '김용환'
댓글을 달아 주세요