[Flutter]ハイフン(-)の入ったドメイン名を使う場合の注意点(「AAPT: error: attribute ‘package’ in tag is not a valid Android package name: ・・・’」の対処法)

Androidの場合もiOSの場合もアプリをリリースするためには、そのアプリを一意に識別するためのID(Androidの場合はアプリケーションID、iOSの場合はバンドルID)をつける必要があります。

その際に、IDの先頭は独自ドメイン名を逆転させたもの(例:「minpro.net」の場合は「net.minpro」)をつけることが監修となっていますが、そのドメイン名にハイフン(-)が入っている場合(例:muumuu-domain.com)、Androidにおいてちょっとしたトラップがありますので、その対処法のご紹介です。

 

ハイフン付きのドメイン名を使うと、AndroidのアプリケーションIDは自動的にハイフンが削除されてしまう

どんなトラップなのかというと、Android StudioでFlutterのプロジェクトを作る際のパッケージ名(プロジェクト作成時のデフォルトではパッケージ名=アプリケーションID=バンドルID)にハイフン入りのドメイン名を使ってもエラーにならずにプロジェクトが作成できるのですが、、

AndroidアプリのIDである「アプリケーションID」を見ると、なんとハイフンが勝手に削除されてしまっているのです!!

ちなみにiOSの場合はハイフンをちゃんと残してくれているので大丈夫です。

 

AndroidのアプリケーションIDに手動でハイフンを入れるとエラーになる!

じゃあ、AndroidのアプリケーションIDにこんな感じで手動でハイフンを入れるとどうなるかというと、、、

applicationId "net.min-pro.sample_pt"

なんと、アプリを回すとエラーにになってしまうのです。

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
     /Users/telulullc/FlutterProjects/03MySamples/sample_pt/build/app/intermediates/merged_manifests/debug/AndroidManifest.xml:2: AAPT: error: attribute 'package' in <manifest> tag is not a valid Android package name: 'パッケージ名'.

これは、Androidアプリを動かす際に後ろでJavaが走りますが、Javaのパッケージ名にハイフンを入れてはいけないという規則に違反してしまうからのようなのです。

じゃあ、一体どうしたらいいのでしょうか??

 

AndroidのアプリケーションID内のハイフン(-)をアンダースコア(_)に変えればいい

実はこのトラップは、AndroidのアプリケーションID内のハイフン(-)をアンダースコア(_)に手動で変更してやれば解決します。

では、アンダースコア付きのドメイン名も他の人のドメイン名と被るのではないかという疑問が湧いてきますが、実はドメイン名にはアンダースコアが入れられない決まりになっているようです。

ドメイン名にアンダースコアが含まれていると、ブラウザからサーバリクエストをした際に、ドメイン宛てのCookieの送信がブロックされてしまう。

ですので、ハイフン(-)をアンダースコア(_)に変えれば大丈夫です。

逆にハイフンが抜かれたままの状態は、他の人のドメイン名をかぶる可能性がありますので、必ずハイフンをアンダースコアに変更する必要があります。

これはAndroid Studio上ではプロジェクトを作る際には教えてくれず、アプリを回した段階で初めて教えてくれるという点でまさにトラップな感じになっていますので注意が必要です。

(詳しくは、以下の動画で解説していますので、よろしければご覧下さい)

アバター

北川 博之(きーぼー)

みんなのプログラミング by Telulu LLC代表 大阪府生まれ。京都大学経済学部経済学科卒業。 2000年より、日本生命保険、ニッセイアセットマネジメント、パトナム・インベストメンツ(米国)で、日本株トレーダー・アナリスト、経営企画、システム開発等の業務に従事。主に日本株の売買執行・投資分析、経営計画の策定、海外投資家向け日本株営業、社内トレーディングシステム及び経理システムの開発等を行う。 2016年、合同会社てるる設立。スマホアプリプログラマーとして「新感覚脳トレアプリ・記憶戦隊オボエルンジャー」「Meisoー1番シンプルなマインドフルネス瞑想アプリ」をはじめとした、メンタルヘルス・知育系アプリを中心に4タイトル・計8本(Android・iOS)をリリース。 2017年、自身のこれまでの社会人経験・プログラミング経験・子育て経験を基に、プログラミングを通じて人々の人生を豊かにして、未来に希望の持てる明るい社会の実現に貢献したいとの想いから、プログラミング完全初心者と挫折経験のある人を支援する「プログラミング挫折撲滅プロジェクト・みんなのプログラミング by Telulu LLC」を設立し、プログラミングサポーター活動と心理カウンセリング活動を開始。これまでに3,000名を超える方のプログラミング挫折撲滅をサポート。

こんな記事も読まれています

みんプロにかける想い

  1. プログラミングは手段の1つに過ぎない(目的は自分のアイデアを形にすること)

  2. プログラミングはみんなのもの!(プログラミングの醍醐味である「楽しさ」を伝えたい)

  3. こんな無駄な苦労をするのはぼくで最後にしたい(ぼくがプログラミング講座をはじめたわけ)

  4. プログラミングを通じて「やわらかい世の中」を作りたい(ぼくがプログラミング講座をやっている本当の理由②)

  5. ぼくが別に言う必要のない挫折の黒歴史をあえてさらけ出している理由(自分の中にある「ブロック」を外すきっかけにしてほしい)

みんプロ作成アプリ




みんプロ代表の黒歴史


TOP