Android Studio2.2で、急にビルドができなくなった。
Runで実行する「app」がUnknownになって下記エラーになっている。
Error running app: Unknown run configuration type AndroidRunConfigurationType
開発備忘録
Runで実行する「app」がUnknownになって下記エラーになっている。
Error running app: Unknown run configuration type AndroidRunConfigurationType
zxingでQRコードを読み取るアプリを作っていたのですが、
特定の端末だけカメラ起動時に、
logcatで確認してみると、、
Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference
こういうエラーが。。zxingライブラリの中身でエラー履いてて、
どうしようも。。
でズバリ解決方法は、
ライブラリアップデート!!!
build.gradle(app)
dependencies {
〜
compile 'com.journeyapps:zxing-android-embedded:3.3.0'
〜
}
あと、androidOS6からか、、カメラの扱う許可ダイアログが表示された。。
参考サイト:
http://stackoverflow.com/questions/37685141/nullpointerexception-with-zxing-library-for-qr-scanning-android-app
https://github.com/journeyapps/zxing-android-embedded
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<!--背景画像-->
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:id="@+id/hukidasi_image"
app:srcCompat="@drawable/ic_haikeigazou"
/>
<!--中央に載せるテキスト画像-->
<TextView
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:gravity="center"
android:text="中央画像"
/>
</RelativeLayout>
androidのfragmentでタブ画像をカスタマイズした時のメモ。
MainActivity.java
TabLayout mTabLayout = (TabLayout) findViewById(R.id.tab_layout);
mTabLayout.setupWithViewPager(viewPager);
mTabLayout.getTabAt(0).setText("").setCustomView(android.R.layout.tab_image_view_1);
mTabLayout.getTabAt(1).setText("").setCustomView(android.R.layout.tab_image_view_2);
setCustomViewでレイアウトのxmlファイルを指定するのがポイント。
レイアウトは下記
res/layout/tab_image_view.xml
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="centerInside"
android:src="@drawable/hoge_image"
/>
hoge_imageが表示した画像ファイル
タイトルの通り、
storyboradのsegueに紐付けないViewController(画面)に、
遷移する方法。。+引数も渡せます!
自作のポップアップ画面等を実装する際に便利なので、
忘れないようにφ(..)メモメモ
// ストーリーボードのMain.storyboardファイルを指定
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// ストーリーボードで指定した「CustomPopupViewController」を指定
let vc = storyboard.instantiateViewControllerWithIdentifier("CustomPopupViewController") as! CustomPopupViewController
// 予め、CustomPopupViewControllerで宣言してあるpopupNameメンバ変数に値を渡す!
vc.popupName = hogeName
味噌は、
as! CustomPopupViewController
ちゃんとクラス名でaliasしてあげないと、
vc.popupName = hogeName
で、引数がわたせないので注意!
extension UIImage{
// 画質を担保したままResizeするクラスメソッド.
func ResizeUIImage(width : CGFloat, height : CGFloat)-> UIImage!{
let size = CGSize(width: width, height: height)
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
var context = UIGraphicsGetCurrentContext()
self.drawInRect(CGRectMake(0, 0, size.width, size.height))
var image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
// 80x80にリサイズだけど画像も高画質のまま!
let resizeSelectedImage = UIImage(named: "hoge.png")!.ResizeUIImage(80, height: 80)
綺麗な画像のままリサイズできました!
出来合いのスコアボードを自分のアプリデザインに合わせた形で表示したかったので、
GameCenterのスコアを取得し好きな方法で使ってみた。
var leaderboardRequest: GKLeaderboard = GKLeaderboard()
leaderboardRequest.playerScope = .Global
leaderboardRequest.timeScope = .Today
leaderboardRequest.identifier = "itunes connectで指定したleaderboardID"
leaderboardRequest.range = NSMakeRange(1, 10)
// Request
leaderboardRequest.loadScoresWithCompletionHandler{ (scores, error) -> Void in
if error != nil
{
println("Error \(error))")
}
else if scores != nil
{
println("leaderboards \(scores)") // scoresという情報に配列で格納されている
}
}
scoresは、GKScoreという型で配列で入っているので、
TableViewのデータとして使う事も柔軟に対応できました!
デバッグログを確認すればわかりますが、
println("\(scores.player.alias)") // プレイヤー名
println("\(scores.value)") // スコア
上記のように、プレイヤーの名前や、スコアを取得できます。
参考にさせて頂いたサイト
http://iorisomo.hatenablog.com/entry/2014/04/09/193007
http://stackoverflow.com/questions/28519503/gkleaderboard-localplayerscore-returns-nil-on-ios-8-1-3
AppDelegate.swift
〜省略〜
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
// 一括でLabelのフォントを変更
UILabel.appearance().font = UIFont(name: "Helvetica Bold Oblique", size: 18.0)
〜省略〜
もちろん UILabel以外も可能!
また、”Helvetica Bold Oblique” みたいに、
コードから呼び出す際に指定するフォント名の確認は下記で可能です!
iphoneアプリをappstoreに申請する際に、launchImage周りでエラーがでる場合に、
エラーがでる事がある。
xcodeのバージョンは、xcode7.2.1
xcodeのLaunchImageは、レイアウトファイルをちゃんと指定しているのなになぜか、、
色々調べたところ。
通常は画像ファイルか、storyboardファイルの指定の必要があるが、
昔に作ったアプリなので、storyboardの拡張子ではなく、xibファイルの指定だったからのようでした。
LaunchScreen.xib → LaunchScreen.storyboard
これをxibからstoryboardで作り直しして指定したら、
無事解決!!!
同じようなシチュエーションの人で、参考なれば嬉しいです!