BLOG main image
for our next (37)
Dev (32)
iOS (12)
Unity3D (16)
Android (4)
Mac (1)
Windows (2)
FreeTalk (1)
Shell (1)
Private (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'Dev/Android'에 해당되는 글 4건
2011. 7. 27. 14:19
Eclipse 에서 Android Library 로 다른 프로젝트 추가해서 사용할 경우
Eclipse 에서 생성한 R.java 와 unity 에서 생성한 R.java 의 id 들이 틀려서 리소스들이 꼬인다..

이럴땐 http://limchaeng.tistory.com/24 에서 merge 한 resource 들을 가지고
Ant 에서 수동으로 R.java(패키지별로) 만들고 그걸 이용해서 Ant 에서 compile 한후 jar 로 묶고
unity 에서 사용하면 된다.

*R.java 만든는 Ant code
<property name="aapt" location="${sdk.dir}/platforms/${target}/tools/aapt.exe" />
<target name="build-aapt" depends="copy-resource">
        <exec executable="${aapt}" failonerror="true">
            <arg value="package" />
            <arg value="-m" />
            <arg value="-J" />
            <arg value="${output.gen.absolute.dir}" />
            <arg value="-M" />
            <arg value="AndroidManifest.xml" />
            <arg value="-S" />
            <arg value="${unity3dresource.absolute.dir}" />
            <arg value="-I" />
            <arg value="${android-jar}" />
        </exec>
</target>

*compile code
    <target name="build-class" depends="build-aapt" >
        <echo>Build Classes</echo>
        <javac target="1.6" extdirs=""
                destdir="${output.classes.absolute.dir}"
                bootclasspathref="android.target.classpath"
                includeantruntime="false">
            <src path="${output.gen.absolute.dir}" />
            <src path="${source.absolute.dir}" />
            <!-- 링크된 라이브러리들의 소스도 컴파일해준다. -->
            <src path="${android.library.reference.1}/src" />
            <src path="${android.library.reference.2}/src" />
            <src path="${android.library.reference.3}/src" />
            <classpath>
                <fileset dir="${external.libs.absolute.dir}" includes="*.jar" />
                <fileset dir="${twitter.libs.absolute.dir}" includes="*.jar" />
                <!-- ************************************************** -->
                <!-- 여기에 외부 라이브러리들을 넣어준다. -->
                <fileset dir="${unity3dlibrary.absolute.dir}" includes="*.jar" />
                <!-- ************************************************** -->
            </classpath>
        </javac>
    </target>
2011. 7. 19. 16:19

메인 activity 를 변경해서 사용( http://limchaeng.tistory.com/23 ) 시 UnityPlayer 상속 받아서 사용 할 수 있다.

onPause() 시 OpenGL surface 변경 관련해서 notify 를 받기 위해 사용했다...
public class OverriderUnityPlayer extends UnityPlayer
{
	public void onSurfaceCreated(GL10 arg0, EGLConfig arg1)
	{
		// TODO Auto-generated method stub
		super.onSurfaceCreated(arg0, arg1);
	}
}
2011. 7. 19. 15:29

* jar 안의 resource 접근 안됨.
* jar 안에 res 폴더랑 /Assets/Plugins/Android/res/ 에 같은 resource 있으면 build 할때 에러남.
* /Assets/Plugins/Android/res/ 폴더의 하위폴더들이 android 표준에 맞지 않으면 build 할때 에러남.

1. 모든 resource 는 /Assets/Plugins/Android/res/ 아래에 있어야 함.

2. 외부 리소스 사용시 unity3d 설치폴더/Unity/Editor/Data/PlaybackEngines/androidplayer/res 에 있는 리소드들을 eclipse android project 상의 res 폴더에 포함시킨후 사용해야 함.(이건, eclipse 에서 build 된 resource id 들과 unity3d 에서 build 할때의 resource id 들을 맞춰주기 위함이다.. 이걸 하지 않으면 리소스 접근할때 리스소들이 꼬인다...--; )

3. 공통으로 쓰는 리소스들 (strings.xml, styles.xml, 등등) 은 수동으로 합쳐준다. (unity 설치폴더/Unity/Editor/Data/PlaybackEngines/androidplayer/res/values/ 에 있는 내용도 포함시켜야 한다.)

4. gen 에서 만들어진 파일들도 모두 /Assets/Plugins/Android/gen 폴더에 복사해야 함.(이건 꼭 필요한지 기억이 나지않는데...unity3d packaging 시 사용하는것 같았던 기억이.....필요하니까 추가 했을것이다.ㅋㅋ). <- 이건 없어도 된다는것을 확인했음..

5. res/ 폴더 규칙에 맞지 않는 리소스들은 /Assets/Plugins/Android/assets 폴더에 넣어 두면 사용 가능함.

6. build 시 package 에러 나면 중복된 resource 가 있는지..res 폴더 규칙이 맞는지..등등 검사해야함.

7. 만약 resouece들이 이상하게 나온다면 eclipse 상에서 만들어지 R.java 와 unit3d 에서 만들어지 R.java 를 비교해서 맞는지 검사후 틀리면 리소스들 잘 정리해야 함. --;  (unity3d 에서 만들어진 R.java 는 /유니티프로젝트폴더/Temp/StagingArea/gen 폴더에서 확인 할 수 있음.
2011. 7. 19. 14:44
자신이 만든 activity 를 main 으로 사용하기 위한 작업.

1. Unity\Editor\Data\PlaybackEngines\androidplayer\src\com\unity3d\player\UnityPlayerActivity.java 파일 의 내용을 자신이 사용할 메인 activity 에 복사한다. (unity 엔진 구동을 위한 내용이 들어있다.)
ex) CustomUnityPlayerActivity.java <- UnityPlayerActivity.java 내용 복사
: full name : com.simple.unity.CustomUnityPlayerActivity

2. 새로 만든 activity 를 jar 로 묶은 다음 /Assets/Plugins/Android/ 폴더에 복사하고
2. 새로 만든 activity 의 컴파일이 완료되면 컴파일된 *.class 파일을 jar 로 묶은 다음 /Assets/Plugins/Android/ 폴더에 복사하고.
ex) bin 폴더에 컴파일이 된다면 : bin/com/simple/unity/CustomUnityPlayerActivity.class
: /com/simple/unity/CustomUnityPlayerActivity.class 를 CustomUnityPlayerActivier.jar 로 묶는다.

3. AndroidManifest.xml 의 내용 변경.(이것은 PlayerSetting 에서 셋팅하고 나서 build 를 한번 하면 /프로젝트폴더/Temp/ 폴더 아래에 StagingArea 폴더가 생기는데 그 밑에 보면 PlayerSetting 에서  셋팅한 내용이 적용된 AndroidManifest.xml 을 가져올수 있다.
내용을 복사해서 /Assets/Plugins/Android/AndroidManifest.xml 을 새로 만든후 이 파일에서
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
        <activity android:name="com.simple.unity.CustomUnityPlayerActivity"
                  android:label="@string/app_name"
                  android:configChanges="keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

위와 같이 수정하고 /Assets/Plugins/Android/ 폴더에 3번에서 새로 만든 AndroidManifest.xml 을 넣어 놓으면 자신이 만든 activity 를 메인으로 사용할 수 있다..

prev"" #1 next