XcodeをGM版にしたらビルド通らないケース

 

Xcode10GM がリリースされたので公式からインストールした。

GMでビルドしたアプリはAppStoreに提出できるため、今後はこれがメインとなる。

 ( Xcode9.4.1も消してない状態 )

 

ビルド失敗

さて、Xcode10GM でプロジェクトをビルドするとエラーが発生した。

Module compiled with Swift 4.1.2 cannot be imported by the Swift 4.2

Carthage が生成したFrameworkがダメらしい。

 

 

解決方法

Xcode10GM のメニュー

Xcode -> Preferences -> Locationsタブ -> Command Line Tools

f:id:hatesatekite:20180915091418p:plain

この値を適切に変更してあげる。

そして再度 carthage update する。

こうすることで正しいFramework が生成される。

 

Carthage によるビルドはターミナルでupdateした時に行われるからってことか。

複数のXcodeが共存する状態では過去のものを指してることが多いことが原因。

Xcodeを並行利用する場合は要確認ですね。

 

 

 

Gradle ではgoogleを先にロードせよって話

 

 

Android Studio でGradleビルドが通らなくなった。

Could not find bundletool.jar (com.android.tools.build:bundletool:0.1.0-alpha01). 

 

 

 

解決法

gradleレポジトリの読み込み順の問題だった。

jcenter より googleレポジトリを先に読めばOK

repositories {
    google()
    jcenter()  //Googleの後に!
}

 

 

 

CocoaPods の GoogleToolboxForMac が消されちゃう

 

 

XcodeでFirebase使ったプロジェクト。

Pod update したらビルド通らなくなった。

 

ld: framework not found GoogleToolboxForMac

clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

 

ターミナルを見ると pod update した際に GoogleToolboxForMac がremoveされてることを確認。

なんか依存関係に変更があったみたい。

 

 

対策

PodFileで明示的に追加してあげる

Pod 'GoogleToolboxForMac/Logger'

 

 

毎度のことですがstackoverflowに助けてもらいました。

stackoverflow.com

 

 

 

 

 

 

 

Play Billing Libraryが超絶かんたんだった件

 

 

Androidアプリのアプリ内課金はどう作ってますか?

え?IABv3APIを使っている? それもう古いみたいです。

 

2017年10月の時点でPlayBillingLibraryってのがアナウンスされてました。

developers-jp.googleblog.com

 

 

 

使ってみたらすごく便利でした。

 

 IABv3との違いを挙げてみる

1. 導入が楽チン

build.gradle(moduleレベルの方)に1行書くだけ。

dependencies {

    implementation 'com.android.billingclient:billing:1.1'

}

 

2. パーミッションの追加作業は不要

以前はAndroidManifest.xmlで宣言していたパーミッション

PlayBillingLibraryではAPKにパーミッションが自動で付加されるため、以下の記述をする必要はなくなりました。

<uses-permission android:name="com.android.vending.BILLING"/>

 

3. aidlは不要

以前バインドしてたAIDLは必要なくなった。

 

4. コード量の大幅な削減

以前はGoogleのサンプルコード(なんたらドライブ)のパッケージを丸ごとコピってきたりしてたけど、全く必要なくなった。

 

5. リストアが楽

非同期にしなくて良いので各ActivityのonResumeでサクッと購入の復元が行える。

 

 

6. base64EncodedPublicKeyの埋め込みが不要

Play Consoleからコピってた例の長いアイツ。

あんまり大事なもんをAPKの中に置きたくないよね。

 

 

 

 

実装はどんな感じ?

自分の場合シングルトンパターンのマネージャークラスにまとめてる。

利用方法はこんなイメージ。

 

1. MyApplicationクラス(extends Application)でセットアップ

IabManager.shared().setup(context)

ちなみにGC回収されないようにApplicationクラスのメンバ変数にしちゃってます。

 

 

2. 各画面のonResumeでリストア

List<String> skuIdList = IabManager.shared().restore()

for (String sku : skuIdList) { /*永続化*/ }

プリファレンスに永続化してます。

 

3. アイテムのメタデータ取得

IabManager.shared().fetchItem(skuId, fetchItemCallback)

コールバックでアイテム名や価格文字列(¥480とか)を受けるようにしてる。

 

4. 購入ボタン押下時

IabManager.shared().purchase(activity, skuId, purchaseCallback)

これを呼ぶとOSが購入フローに入ってくれる。

コールバックでsuccess, failureなどを受ける。

 

 

IabManagerの中身を作るのもそんなに難しくない。

ほとんどGoogleブログのコピペでOK。

一度作ると他アプリで使い回しできる。

Kotlin版も作っちゃった。

 

 

とってもかんたんなので今後はこれ一本で良さそう。

 

 

 

 

 

MacにあるPDFをiPhoneに転送するには

毎回わからなくなる。

そしてググってもなかなか解決しない。

将来の自分のために書いとく。

 

 

 

グーグル先生に聞いてみた

だいたいこう書いてある。

1. Mac側で「iBooksアプリ」を開いてPDFファイルを放り込む

2. MaciPhoneをケーブルで接続

3. iTunes「ブック」を選択して同期する

 

 

 

 

 

「ブック」の項目がない

Google先生の言う通りにやってみたけど・・・

最近のバージョン(12.8.0.150)ではiTunesにブックが出てこない

詰んだ。

 

f:id:hatesatekite:20180723173754p:plain

 

 

 

 

 

 

iCloudじゃね?

と、ふと気付く。

 

1. iPhoneの設定 -> 自分の名前 -> iCloud と開く

2. iBooksを有効にする

 

以上。 iPhoneiBooksアプリを開くと同期されてた。

 

f:id:hatesatekite:20180723173834p:plain

 

 

 

 

 

 

まとめ

いつのまにかiCloudiBooks同期機能が無効になってたみたい。

iBooksにPDFを入れるとiCloudにアップロードされて、んでiPhoneとかに同期される仕組み。

注意点としてはiCloudの容量がいっぱいになったら転送できないっすね。

(自分の場合無料で利用してるので5GBしか使えないのだ)

 

 

 

 

 

就職活動中だけど、すでに就活疲れ。

 

この1ヶ月間、求人サイトに登録して就活してみた。

業種はIT関連の技術者で。

 

 

面接行ったのは3社。

そのうち2社が内定で1社が落選だった。

その他書類審査で面接に進めなかったのが1社。

内定もらった2社は色々検討した結果、辞退させていただいた。

人生で初めて内定蹴った!

ごめんなさい・・・

 

 

 

IT業界ではエンジニア不足みたいです。

そして雇用のミスマッチだらけだ。

 

 

 

今回の就活で自身の市場価値がおぼろげながら掴めてきた。

オレの価値は高く見積もっても500万円ほど。

安いでしょ。

笑っちゃう。

就職なんてしなくても個人で簡単に稼げる時代だから尚更。

500万ぽっちでストレスだらけの雇われ従業員とか不幸な気がしている。

幸福でなければ働く意味がないと思う。

ちょっと就活疲れしている。

どうしようかゆっくり考えることにする。

 

 

今のまま個人で事業を続けるか。

あえて会社員になって茨の道を選ぶか。

(法人化するという手段もある)

 

 

 

・・・あと1ヶ月くらいはゆっくり就職活動を続けるつもりだ。

 

 

 

 

国民年金をクレジットカードで前納してみた

 

 

個人アプリ開発者は組織に属していないため厚生年金に加入できない。

厚生年金を納付しない場合は国民年金を納付する義務があるらしい。

  

 

 

 

 

 

国民年金を少しでもお得に支払う

事実上は義務ではない(国民年金をマジメに払っている人は40%くらいしかいない)のだが、オレは立派なできた人間なのでちゃんと払う。

だが少しでもお得にしたい。

 

グーグル先生に聞いてみたら次の2つのおトクな方法が見つかった。

1. まとめて払う(前納)

2. クレジットカードを使う

これらは併用可能だ。

 

 

 

 

いくら安くなるのか

支払い方法には現金、口座振替、クレジットカードの3種類がある。

どの方法でも支払額は同じようだ。

ただし毎月払いではなくてまとめて支払えば少し負けてもらえる。

まとめ払いは6ヶ月 / 1年 / 2年の3種類があるが、ここでは最も安くなる2年と比較してみる。

 

毎月払いの場合

- 平成30年度分 16,340円 x 12ヶ月 = 196,080円

- 平成31年度分 16,410円 x 12ヶ月 = 196,920円

2年分の合計393,000円

 

2年分を前納する場合 378,580円

 

その差は 14,420円

一年間に換算すると7,210円

 

 

 

楽天カードで支払った場合

支払額が安くなることはわかった。

だがそれだけじゃない。クレジットにはポイント付与がある。

楽天のポイント還元は1%なので3,785ポイントがもらえる。

一年間に換算すると1,892ポイント。

割引された7,210円と楽天ポイント1,892を合計すると、

9,102円

毎年9102円お得になる。

これがオトクだと思う方はぜひやってみよう。

俺はやってみたぞ。

 

 

 

申請書をダウンロード

日本年金機構 のホームページで入手できる。

申請書を印刷して必要事項を記入。

 

 

 

年金事務所に提出

最寄りの年金事務所に持って行く。

必要書類は申請書、クレジットカード、身分証明書。(念のため印鑑と年金手帳)

(申し込み期限は2月末と公式に書いてあるが、3月初旬に申し込んだら間に合った)

 

 

郵送でも良いらしい

窓口の方に聞いたところでは郵送でも申請できるらしい。

申請書だけ送れば良いとのこと。

身分証明書なくても申請できるって本当なんかな?

誰か試してみてくれ。

 

 

 

クレジットカードの有効期限について

新しくなったクレジットカードを使ってもう一度申請書を提出する必要がある。

めんどくせぇ。