개발은 오래(?)했지만, 앱은 실질적으로 1년도 안된 듯 하다.

그렇다 보니, 앱 출시도 여러가지 시행착오를 겪고 있다.

이번에 지인분 앱을 만들어 주면서, 내 개인(테스트)앱도 만들어 보고 있다.

그런데, 개발자계정 만든지 얼마 안되서 이런 장벽도 있다. (프로덕션 출시를 위해서는 비공개 테스트를 해야 한다.)
지인분 계정은 오래전에 만들어서 그런지, 이번에 신규앱 출시할 때 위와 같은 단계는 없다.

관련 안내를 보니 작년에 관련 정책이 생겼나 보다. (개발자 계정이라도 미리 만들어 둘걸...)

기존 계정은 바로 프로덕션 신청(심사요청)을 할 수 있었는데, 신규계정은 비공개테스트 단계를 거쳐야 하나보다.
(아마도 개발자 검증? 을 위한 조치겠지 - 한번 검증을 거치면 다음에는 안해도 되겠지? 매번 앱 출시 마다 해야하지는 않겠지...)

 

그나저나 테스트 앱 - 버전 올리면서 올리고 있는데.

몇몇 플러터 패키지를 등록하고 올리다 보니 - 보기에는 무시무시한 - 경고 메시지가 보인다.
해당 패키지가 권한 추가 또는 최소OS버전 등으로 인해 설치 가능 기기가 줄어든 듯 싶다.
뭐! 어쩔 수 없는 것이겠지.(그래도 뭔가 씁슬하다-손해보는 듯한?)

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

플러터로 앱을 만들고 있다.

광고연동을 하고 있는데, 애드몹은 무난하게 넘어갔다.

다음에는 앱로빈(Applovin) 을 연동중에 있는데, 안드로이드 쪽도 좀 힘든 부분이 있었지만, 해결은 하였다.

그런데, iOS 쪽을 연동하는 중에 이상한 부분이 있어서 기록을 남긴다.

[현상]

플러터 코드를 동일하게 하고, 앱로빈쪽의 Ad Unit 을 iOS 용으로 만들고 구동해보니
다른 광고는 정상인데, native 만 나오지 않는다.( banner , mrec , Interstitial 등은 잘 나온다)

[조치1]

AppLovinMAX.setVerboseLogging(true);

AppLovinMAX.initialize 초기화 시에 옵션 추가

해당 설정을 추가하면 자세한 로그를 볼 수 있다. 그런데, android 에서는 잘 나오는데, ios 쪽에서는 나오지 않는다.

[조치2]

AppLovinMAX.showMediationDebugger();

다른 디버거 옵션을 넣어본다. 광고 동작등을 체크해볼 수 있다.
여기서는 native 광고도 잘 나온다. 뭔가 설정의 문제일 듯 하다. 범위가 좁혀졌다.

혹시나 해서.

위치 ios/Runner.xcodeproj/project.pbxproj

....
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
    "$(inherited)",
    "@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.userAppName;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
....

해당 bundle id 를 ad unit 과 맞춰준다.

PRODUCT_BUNDLE_IDENTIFIER = com.example.userAppName;

AppLovin 의 광고 유닛 - 동일하게 맞춰준다.

테스트 용이라 임의로 입력했었다.(안드로이드에서 정상동작해서 신경쓰지 않았었다.)

디버거에도 해당 View Ad Units 부분에 나온다(기존에는 나오지 않았다. 0 )

 

저렇게 bundle id 를 동일하게 맞춰주니 정상동작 한다.

[해결]

android 는 모두 상관없고, iOS 는 native 만 체크하는 듯 하다.

정식 앱이면, 자연스럽게 bundle id 가 맞게 입력했을텐데, 테스트용으로 임의로 넣다보니 그런 현상이 발생했다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

플러터 를 안드로이드 로 개발중인데 - 새버전이 나와서 업그레이드 하였다.

에러가 생길 것은 예상은 했다. 빌드해보니.

Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
Running Gradle task 'assembleDebug'...

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> A problem occurred starting process 'command '/..../flutter/bin/flutter''

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
Error: Gradle task assembleDebug failed with exit code 1
Error executing devicectl: ProcessException: Process exited abnormally with exit code 3:

User cancelled
  Command: /usr/bin/arch -arm64e xcrun devicectl list devices --timeout 5 --json-output /var/folders/d7/4qd968hd0kzc21y8jggx2qcr0000gn/T/flutter_tools.w7hJCy/core_devices.D5JYTk/core_device_list.json
Error executing devicectl: ProcessException: Process exited abnormally with exit code 3:

User cancelled
  Command: /usr/bin/arch -arm64e xcrun devicectl list devices --timeout 5 --json-output /var/folders/d7/4qd968hd0kzc21y8jggx2qcr0000gn/T/flutter_tools.w7hJCy/core_devices.AHDMpc/core_device_list.json

다음과 같은 에러가 발생하였다.

flutter doctor 해봐도 특별한 이상은 안 보였다.

 


iOS 쪽을 시도 해봤다.

# xcodebuild -downloadPlatform iOS

Downloading iOS 17.5 Simulator (21F79): 83.1% (6.09 GB of 7.34 GB)2024-05-27 00:10:48.511 xcodebuild[38139:36929395]  DVTDownloadable: Download Failed. Downloadable: https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg. Error Domain=NSPOSIXErrorDomain Code=28 "No space left on device" UserInfo={NSErrorFailingURLStringKey=https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg, NSErrorFailingURLKey=https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDownloadTask <D677E7D4-290F-4ABB-AE5D-98AAF40F70BC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDownloadTask <D677E7D4-290F-4ABB-AE5D-98AAF40F70BC>.<1>}
Downloading iOS 17.5 Simulator (21F79): Error: Error Domain=NSPOSIXErrorDomain Code=28 "No space left on device" UserInfo={NSErrorFailingURLStringKey=https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg, NSErrorFailingURLKey=https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDownloadTask <D677E7D4-290F-4ABB-AE5D-98AAF40F70BC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDownloadTask <D677E7D4-290F-4ABB-AE5D-98AAF40F70BC>.<1>}

여기도 에러.

하드 공간이 없다.  오랜만에 봤더니, 6기가 정도 밖에 안 남았네. ㅜㅜ

용량이 부족하다. 조금 정리하고 다시 시도..

Registering simulator runtime with CoreSimulator failed.
Domain: DVTDownloadableErrorDomain
Code: 29
User Info: {
    DVTErrorCreationDateKey = "2024-05-26 15:36:28 +0000";
}
--
Registering simulator runtime with CoreSimulator failed.
Domain: DVTDownloadableErrorDomain
Code: 29
--
Cannot copy the image because the disk is almost full
Domain: com.apple.CoreSimulator.simdiskimaged.SimDiskImageError
Code: 14
--


System Information

macOS Version 14.4.1 (Build 23E224)
Xcode 15.4 (22622) (Build 15F31d)
Timestamp: 2024-05-27T00:36:28+09:00

더 줄여야 겠다.

하드 좀 정리하고, 다시 해보니 정상 다운로드 되었다.
그리고, 안드로이드 스튜디오에서 다시 빌드 해보니 정상 동작 했다.

이제 안드로이드 쪽 빌드를 해결해보자.(즉, iOS 쪽은 정상)

android / gradle 빌드 쪽 이슈로 좁혀졌다.


[다시 시도]

flutter upgrade --force 로 플러터 SDK 를 업그레이드 해봤다.

* What went wrong:
Execution failed for task ':gradle:compileGroovy'.
> Failed to run Gradle Worker Daemon
   > A problem occurred starting process 'Gradle Worker Daemon 1'

에러가 나지만, 메시지가 달라졌다.

android/ 에서 gradle 을 콘솔에서 명령을 내려봤다.

# ./gradlew app:installDebug

FAILURE: Build failed with an exception.

* Where:
Build file '.../android/app/build.gradle' line: 2


What went wrong:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
      Your current JDK is located in /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre
      You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 24s
4 actionable tasks: 2 executed, 2 up-to-date

다른 프로젝트에서 1.8 오래된 버전이 필요해서 바꿨었는데, 그것이 영향을 준것 같다.
근데, 안드로이드 스튜디오 젤리피시 버전업 하기까지는 이상이 없었는데..??

android/gradle.properties
파일에 JAVA_HOME 패스를 넣었다.(.bash_profile 등에 넣어도 된다.)

org.gradle.java.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-16.jdk/Contents/Home/

 

다시 빌드...

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':connectivity_plus:compileDebugJavaWithJavac'.
> error: invalid source release: 17

 

이거 점점 미궁으로 가는거 아닌가? ㅜㅜ

java 버전 17 으로 맞춰준다.

# brew install openjdk@17

sudo ln -s  /opt/homebrew/Cellar/openjdk\@17/17.0.11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

gradle.properties 나 IDE 세팅등에 버전을 맞춘다.

org.gradle.java.home=/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home/

 

일단 여기까지 해보니, 정상 빌드 된다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

ubuntu 에서 adb 의 android 장치 연결 상태 가 몇가지 있다.

 

1. no permissions 라고 나오는 경우.

예전글 http://blog.1day1.org/405 에서 처럼 장치를 인식시켜 준다.

 

2. unauthorized 라고 나오는 경우.

폰을 연결하고, 실행시켰을때 다음과 같은 에러가 난다.

[ERROR] :  Invalid "--device-id" value "LGF180Sa51d66e"
[ERROR] Application Installer abnormal process termination. Process exit value was 1

# adb devices

를 해보면

List of devices attached
LGF180Sa51d66e    unauthorized

usb 디버깅 체크를 하면, 접근 PC에 대해 디버깅을 허용할 것인지 안내창이 뜬다.

그것을 체크하지 않으면, unauthorized 라고 나온다. 체크하면 정상적으로 device 라고 나온다.

 

# 삼성 폰

$ adb devices

List of devices attached
44db4d4c    unauthorized

=> USB 디버깅 허용

List of devices attached
44db4d4c    device

 

 

 

 

 

 

# LG 폰

$ adb devices

List of devices attached
LGF180Sa51d66e    unauthorized

=> USB 디버깅 허용

List of devices attached
LGF180Sa51d66e    device

 

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
안드로이드 개발환경 구성을 윈도우에서도 하고자 한다.
(우분투에 설정해 놓았지만, 필요에 따라 윈도우도 설정해 놓는게 좋겠다)

간단하게 요약정도만 한다.

1. JDK 와 eclipse JDT 를 설치한다.
소스코드 컴파일을 위해 jre 가 아닌 JDK 를 설치한다.
이클립스 설치 : http://www.eclipse.org/downloads/
eclipse 에서 설정하는 것은 http://blog.1day1.org/394 를 참조한다.

2. android SDK 를 설치/설정한다.
윈도우용 SDK 를 설치한다 : http://developer.android.com/sdk/index.html

3. eclipse ADT 플러그인을 설치한다.
설치전에 install/update 의 http://download.eclipse.org/releases/galileo/ 에서
WST 패키지를 찾아 먼저 설치를 하고 진행 (WST Server Adapter)

eclipse ADT 플러그인
https://dl-ssl.google.com/android/eclipse/
다음과 같은 항목이다.


4. 이클립스에 android SDK 위치를 지정한다.
 SDK 설치한 위치를 지정하면 된다.



5. android SDK 에 추가 패키지를 설치한다.
 안드로이드 API 버전별로 추가 패키지를 설치한다.
 2.0 이상의 API 버전을 선택했다.


6. 타겟 장치를 생성한다.
 avd manager 에서 Virtual Devices 항목에서 "NEW" 로 새로 생성한다.

이 지정한 디바이스는 개발후 에뮬레이터로 이 가상장치를 사용하게 된다.


여기까지 설정을 했으면 준비는 완료되었다.
새 프로젝트로 안드로이드 프로젝트로 생성해서 테스트 해 본다.


실행시키면 에뮬레이터가 뜨면서 테스트 어플이 실행된다.


왜 그런지 모르겠지만, 우분투를 가상머신내에서 돌린 에뮬보다 느린것 같다.(그냥 느낌상인가?)


모토로이를 연결해서 테스트 해봤다.(빠르다.)
[2010-02-14 18:41:57 - HelloAndroid]------------------------------
[2010-02-14 18:41:57 - HelloAndroid]Android Launch!
[2010-02-14 18:41:57 - HelloAndroid]adb is running normally.
[2010-02-14 18:41:57 - HelloAndroid]Performing com.onedayone.helloandroid.HelloAndroid activity launch
[2010-02-14 18:41:57 - HelloAndroid]Automatic Target Mode: using device '04032948904003013'
[2010-02-14 18:41:57 - HelloAndroid]Uploading HelloAndroid.apk onto device '042344694003013'
[2010-02-14 18:41:57 - HelloAndroid]Installing HelloAndroid.apk...
[2010-02-14 18:42:01 - HelloAndroid]Success!
[2010-02-14 18:42:01 - HelloAndroid]Starting activity com.onedayone.helloandroid.HelloAndroid on device
[2010-02-14 18:42:02 - HelloAndroid]ActivityManager: Starting: Intent { cmp=com.onedayone.helloandroid/.HelloAndroid }
역시나 빠르군.  에뮬로만 개발하다가 개발폰연결하면 정말 감동이겠다.


우분투, 윈도우7  둘다 개발환경 세팅하는거 어렵지 않네.(자바개발하던 분들은 눈감고도 할 것 같고)
맥은 없어서 패스.(맥사면 아이폰/안드로이드 같이 개발할 수 있겠군 ^^)

앞으로 안드로이드 어플들이 다양하고, 재미있는 것들이 많이 나왔으면 좋겠다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
모토로이를 usb 디버깅 모드로  바로 실행시켜볼려고 하는데, 잘 안된다.

현재 virtualbox + ubuntu ( http://blog.1day1.org/394 ) 조합으로 사용중이다.
호스트OS인 윈7에 모토로이 드라이버 설치하고,
http://www.mymotorola.co.kr/product/PrdDownUsb.aspx?id=0045

가상머신에 우분투를 실행시켜 udev 로 인식시키는 것 까지는 되었는데.
http://aphyr.com/journals/show/debugging-the-droid-on-ubuntu-karmic

이클립스에서 어플을 실행시키면 연결된 모토로이로 apk 파일을 업로드해서 실행되는데.
업로드를 못하는 것 같다. 가상머신과 연결상의 문제가 있는 것 같다.
따로 우분투용 드라이버를 설치해야 하는 것인지? (모토로라 쪽에서는 윈도우 드라이버만 제공하는데.)

가상머신이 아닌, 우분투 호스트로 부팅을 해서 다시 테스트 해봐야 겠다.
이것도 안되면 윈도우7 에 개발환경을 만들어야 할 듯 하다.


에뮬을 로딩하는 방식보다 엄청빠르다고 한다.(당연하지만...)
그래서 꼭 하긴 해야 하는데...


[추가]
우분투를 가상머신이 아닌, 호스트로 부팅해서 테스트를 해봤다. 잘 된다.
(android 개발환경을 처음부터 다시 세팅했다.)
64bit 환경이라 몇가지 32bit 라이브러리를 설치해줘야 하는 것 빼고는 별 차이가 없다.

정말 빠르다. 바로 실행되네.

새해첫날에 이상한 짓 하고 있는것 같군요. ^^
개발폰에 직접 실행시키는 재미가 색다르네요.
에뮬에서 실행시키는 것과는 느낌이 상당히 다릅니다. 좋습니다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
2010년에는 안드로이드폰이 많이 나올것이다. 그러나 국내에서는 과연 나올까?
나온다고 본다. 다만 그 시기가 언제일지는 모르겠다.
빠르면 2월정도, 상반기에는 꼭 출시되었으면 한다.(구글코리아야! 도와줘!!  전파인증)

안드로이드 개발환경을 구축하기로 했다. 플랫폼은 우분투.
조합은 이렇다.
우분투 9.10 + eclipse 3.5 (galileo) + android eclair (2.01)
가능한 쉽고, 빠른 개발환경 구축을 목표로 한다.
핵심은 어플개발이기 때문에 개발환경에서 삽질은 최소로 줄여야 겠지.

일단 eclipe 까지는 한방에(우분투는 먼저 깔려있어야죠.)
apt-get install eclipse eclipse-jdt
를 하면 관련 패키지를 알아서 설치해준다.


그다음은 developer.android.com 에서 관련 정보를 찾는다.

기본 Quick Start 문서 : http://developer.android.com/sdk/index.html

1. Android SDK 설치.
  링크를 찾아 설치 : linux 를 찾아서 설치해야 겠죠.
  실행할 수 있도록 패스를 설정한다.(PATH=andriod-sdk/tools:$PATH)

2. eclipse 플러그인 설치 (ADT)

 http://developer.android.com/sdk/eclipse-adt.html
 이클립스를 잘 안다면  이 주소만 알려주면 알아서 깔겠죠.
https://dl-ssl.google.com/android/eclipse/
install/update 로 설치하면 됨.

이부분은 eclipse / eclipse-pde 패키지를 설치하면 되는 듯.

3. android SDK 컴포넌트 추가
http://developer.android.com/sdk/adding-components.html
SDK 를 설치하고 AVD Manager 를 실행한다.
왼쪽메뉴의 Avaliable Packages 를 선택하고, 필요한 패키지(컴포넌트)를 설치한다.
혹시 에러가 난다면.

난 2.0 버전 이상의 패키지를 설치했다.(목표는 eclair 이기 때문에...)

4. 안녕! 빵꾸똥꾸야!
자! 여기까지는 준비운동은 끝났다. 본격적인 어플개발을 시작.
제대로 되나. 확인할 겸.
http://developer.android.com/resources/tutorials/hello-world.html
안녕! 세상아를 찍어봐야지.

이클립스에서 android 프로젝트를 생성한다.
이때 이런 메세지가 나올 것이다.
The location of the Android SDK has not been setup. Please go to Preferences > Android and set it up
처음 실행시 기본 SDK 의 위치를 찾지 못하는 것이다. 메뉴의 Window > Preference > Android 탭으로 가서
설치한 SDK 위치를 지정해준다.  (andriod-sdk 까지 지정해주면 된다. 풀패스로.)

그리고, 소스를 알맞게 수정을 하고, Run 해주면 나온다.
이렇게! (에뮬실행이 오래걸리는구나! vbox 에서 실행해서 그런가?)

좀더 개발환경에 적응을 하고, 어플을 만들어 봐야 겠다.
뭘 만들지...

아이폰어플에 비해 참 쉽다. 물론 맥북사면 비슷하려나? ^^


[참조]
# avd 디바이스 설정.(Android Virtual Devices)
android list targets
android 타겟지정 avd 생성

 android create avd -n my_avd -t 1

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
10월 22일.
두개의 다른 OS 행사를 했다.

바로 안드로이드와 윈도우7

너무 힘든 일정이었다. 하루를 꼬박. 탈진하겠다.
지향하는 시장이 다른(?) 두 OS 혹은 플랫폼.

안드로이드
 다양한 모습으로 안드로이드가 우리곁에 찾아올 듯 싶다.  핵심은 에코시스템.
 근데 언제쯤 안드로이드폰을 만져볼 수 있는거야! (SKT,KT 너희들 말이야!)
 PMP/MID 에도 접목이 될까?
 기술적으로는 가능한데, 구글이 마켓을 열어주지는 않을 것 같고, 제약을 좀 완화시켜줄려나?

윈도우7
 특별한 행사. 인상적. 보는 내내 재미있었다.
 윈도우7 은 이미 쓰고 있어서(RC) 큰 감흥은 없었다.
 그러나 미디어센터 쓸만하겠군. 앞으로 터치지원PC 많이 나오려나?
 그런데, 64비트좀 제대로 쓰려면 누구에게 호소를 해야 하나!!
 ps. 윈도우7 얼티밋 준다고 해서 '어! 통크네!' , 받고보니 영문판에 팔지마라. '어! 쪼잔해!'


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,